• 締切済み
  • 困ってます

ログアウト処理

<?php if(isset($_SESSION["sdata"])) { print "ようこそ".$_SESSION["sdata"]."さん"; print "<INPUT type=\"button\" value=\"ログアウト\" onClick=\"location.href='自分自身'\">"; unset ($_SESSION["sdata"]); } else { print "ようこそゲストさん"; print "<INPUT type=\"button\" value=\"ログイン\" onClick=\"location.href='ログイン画面'\">"; exit; } ログイン画面で認証できたら、$_SESSION["sdata"]=ユーザー名 として、他の画面では上のような処理をしようかと思ったのですがこれではブラウザの更新ボタンを押してもログアウト扱いになってしまうことに気づきました。 onClick=\"unset ($_SESSION["sdata"]);\" にしたらいけるかと思ったのですが、エラーになってしまいました。ログアウトボタンを押したらセッション変数を削除したいのですが、どうしたらいいでしょうか? それと、ログイン処理はクッキーとかも使ったほうがいいのでしょうか?

共感・応援の気持ちを伝えよう!

  • PHP
  • 回答数2
  • 閲覧数1513
  • ありがとう数5

みんなの回答

  • 回答No.2
  • yambejp
  • ベストアンサー率51% (3827/7415)

たとえばhoge.php?logout=1 などとして $_REQUEST["logout"]==1をチェックしてログアウトさせるとか logout.phpをべつに用意しておいて、そこに飛ばしてログアウトさせる onclickでやるなら、ajaxで処理するか、cookieを削除するか・・・ スクリプトでログイン・ログアウト処理は確実性がないので あまりおすすめできないですね

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ログアウトページを作ることにしました。 ありがとうございました。

  • 回答No.1
  • inu2
  • ベストアンサー率33% (1229/3720)

まだまだプログラムを始めたばっかりの方かと推測させていただきます。 HTMLとJavaScriptとPHPを混同して考えてしまっているようですね onClick="" はJavaScriptの動かし方でPHPは全く関係ありません PHPなどのプログラムはサーバーサイドスクリプトと呼ばれるジャンルのものですから、サーバー内でしか動作しません。 HTML(又はJavaScript)として画面に表示されている状態ではPHPは既に処理を終わらせてしまっている状態ですからJavaScriptからPHPを起動させたりすることはできません。 なぜ、ログインしている状態なのに、SESSIONを破棄しているのでしょうか? if (ログインしているか){ ログインしている場合はそのまま処理続行 ログアウトボタンを表示 }else{ ログインしていない場合はログイン画面を表示 ログイン画面を表示 } ログアウト押された時に別画面(別プログラム)に遷移させて「ログアウトしました」と表示させる。 と言った感じ。 あと、言っておきますが勉強のためのプログラムであれば良いですが、本当に会員登録を必要とするサイトを構築中であればもっともっともっともっと勉強して知識をつけないと簡単にハッキングされるようなプログラムとなりますよ。 もしそれで商売を行うつもりであれば、多大な被害をこうむる可能性もあります。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • PHPの囲みかた

    以下のPHPが動かない、画面が真っ白になってしまうのですがなぜでしょうか? また<?php ?>でPHPは囲みますが、一画面で何回も囲んでも構わないでしょうか? <input name="button" type="button" onclick="location.href='/abc.php'" value="abc"> <?php  print ('<input type="button" value="aaa" onClick="location.href='/aaa.php'">'); ?> <input type="button" value="bbb" onClick="location.href='/bbb.php'">

    • 締切済み
    • PHP
  • phpでのログアウトについて

    phpで会員制サイトの制作を勉強しています。 データベースへはPDOで接続しています。 MySQLデータベースを使用しています。 セッション変数($_SESSION["email"])の有無を使用したログイン方法を使用しています。 セッション変数の破棄(ログアウト処理)について質問があります。 前提として、現在会員制サイト制作の勉強で「ログアウト後は必ずTOPページに遷移する」という形にこだわっています。 ちなみに現在使っているログアウトの方法は 1、 全ページ共通の、ページ上部に表示されるメインメニューに <form method="post" name="logout" action="toppage.php"> <input type="hidden" name="logout" value="true"> <input type="submit" value="ログアウト"> </form> でログアウトボタンを作成し、 ログアウトボタンが押されたらtrueという値を持った$_POST["logout"]を トップページ(toppage.php)に送る。 2、トップページ(toppage.php)に画面遷移させ、 $logout = filter_input(INPUT_POST, 'logout'); if($logout=="true"){ unset( $_SESSION["email"] ); } でもしも$_POST["logout"]がtrueなら セッション変数$_SESSION["email"]を破棄する というプログラムによりログイン・ログアウトを管理しています。 きちんと動いてはいるのですが、不満が1つあります。 願わくばログアウトボタンをformタグのsubmitで作るのではなく、 <a href="toppage.php">ログアウト</a> とリンクを使用して作成したいです。 このようにリンクを使用する場合、遷移後のTOPページ(toppage.php)でセッション変数$_SESSION["email"]を破棄するには、どのようなプログラムを記述すれば良いのでしょうか? ネットで調べたりもしましたが、ほとんどのサイトで紹介していたものは、 ログアウトリンクをクリックすると、ログアウト処理確認専用の画面(「ログアウトしました!」とだけ書かれたような画面)に遷移し、セッション変数を破棄するものばかりでした・・・ 私個人としてはログアウト処理が完了した旨を報告する画面をワンクッション置くのは、あまり実用的ではない気がして好みません・・・ 巷にあふれているようなサイトではログアウトボタンをクリックすると TOPページに遷移するようなサイトばかりなので、 phpを使用した場合、どうやったらそのような仕組みになるのか考えた上で、 今のへんてこなログアウト処理プログラムに至りました。 ごちゃごちゃしていないもっと良いログアウト処理プログラムはないでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • HPボタンの長さが異なる。

    下のボタンが マックの「IE4.5」「IE5.0」「ネスケ4.7」だとちゃんと奇麗に中央に表示されますが、 Windows「IE4.5」「IE5.0」はボタンの長さが異なり ガタガタになります。 windowsでも奇麗に並べるにはどうしたらいいのでしょうか? よろしくご指導お願いいたします。 テストでアップしてあるURLですのでご確認してください。 http://watn.jp/test/ <HTML> <HEAD> <TITLE>++++</TITLE> </HEAD> <!------------------- 中身-------------------> <center> 下のボタンがマックの「IE4.5」「IE5.0」「ネスケ4.7」だと<br> ちゃんと中央に表示されますが、Windows「IE4.5」「IE5.0」は<br> ボタンの長さが異なりガタガタになります。 <FORM> <INPUT TYPE="button" VALUE=" ●●・・◇◇◇   " onClick="window.location.href='kituke.html'"><br> <INPUT TYPE="button" VALUE="   ・・◇◇◇◇  " onClick="window.location.href='sadou.html'"><br> <INPUT TYPE="button" VALUE="   ・・◇◇◇◇◇ " onClick="window.location.href='buyou.html'"><br> <INPUT TYPE="button" VALUE=" ●●・・◇◇◇   " onClick="window.location.href='ivent.html'"><br> <INPUT TYPE="button" VALUE="   ・・◇◇◇◇  " onClick="window.location.href='tenjikai.html'"><br> <INPUT TYPE="button" VALUE=" ◇◇◇       " onClick="window.location.href='butai.html'"><br> <INPUT TYPE="button" VALUE=" ◇◇◇◇      " onClick="window.location.href='honten.html'"><br> <INPUT TYPE="button" VALUE=" ◇◇◇◇◇     " onClick="window.location.href='yono.html'"><br> </FORM> </center> </BODY> </HTML>

  • ボタンの長さを変えたい(至急)

    <INPUT TYPE=BUTTON VALUE="最新100回グラフ" onClick="location.href='../grf/100.htm'"> <INPUT TYPE=BUTTON VALUE="最新50回グラフ" onClick="location.href='../grf/50.htm'"> このようなボタンの長さを揃えたいです。 スペースで調節するしかないのでしょうか?

    • ベストアンサー
    • HTML
  • ログインとログアウト

    Webページ作成の際に、ログイン、ログアウトの機能をつけたいです。 また、その際にボタンをつけたいのですが、 「ログイン後にはログアウト」のボタン、「ログアウトの状態ではログイン」のボタンをつけたいと考えています。 現在、 <form name="login {unauth}" action="{REQUEST_URI}" name="logout {auth}" action="{PHP_SELF}" method="post"> <!-- login button for {unauth} --> <input type="submit" name="login" value="Login"> <!-- logout button for {auth} --> <input type="submit" name="logout" value="Logout"> というところまではできたのですが、これだと、ログインしていてもログアウトの状態でも「ログイン」「ログアウト」2つのボタンが表示されてしまいます。 お力添えいただけないでしょうか?

  • 新規ウインドウから他のページにいけますか?

    JavaScriptのwindow.openでページを表示した時に小さな別Windowも表示させるようにしています。 その画面を閉じるのに <input type="button" value="CLOSE" onclick="window.close()"> をクリックすると閉じるのですが、もう一つボタンを付けてそのボタンをクリックするとTOPページに戻るようにしたいんです。 location.href = "URL";で他のページにいけるんですよね? ボタンを表示させるには <input type="button" value="TOP" onclick="window.location.href="URL";"> でいいのでしょうか? やってみたのですが何も動きません。 どなたかわかる方、教えて頂けないでしょうか?よろしくお願いします。

  • javascriptでのログアウトボタン

    お世話になっております。 現在サーブレットの学習をしており、DBへアクセスしログインした情報をセッションで 残しているのですが、ログアウトのボタンを設置した際、 jacascriptのみでセッションを切断しログイン画面へもどることは可能でしょうか。 function logOut() { ret = confirm("アドレス帳を終了しますか?"); if (ret == true) { session.invalidate(); location.href="/jsp/Login.jsp"; return true; } } とスクリプトを記述してもjspへ遷移しないのはなぜでしょうか。 どうか知恵をおかしください。

  • Input Type Buttonのサイズ変更

    *Input type buttonのフォントサイズを大きくする場合 どこ↓につなげたらいいのでしょうか? <INPUT TYPE="BUTTON" NAME="BUTTON02" VALUE= "お問い合わせ"onClick="location.href='http@@@@@@@'"> *Input type button の型を四角に変更する場合や サイズを大きくする場合はこのタグ↓のどこに入れたら いいのでしょうか? <INPUT TYPE="BUTTON" NAME="BUTTON02" VALUE= "お問い合わせ"onClick="location.href='http@@@@@@@'"> お手数をお掛け致しますが宜しくお願い致します。

  • 「ボタン」の幅の長さ

    「ボタン」の幅の長さを揃えたいのですが、 「★幅の設定」 の仕方を教えてください。よろしくお願いいたします。 <INPUT type="button" value="簡単" onclick="javascript:window.location.href='http://'">

  • リンクボタン

    ボタンを押してリンク先に飛ぶようにするには <form><input type="button" value="homeへ" onClick="location.href='home.html'"></form> とすれば可能ですがこれをJavaScriptを使わずに出来る方法はないものでしょうか? どうしても画像など使わずにボタンで実現させたいのですが。

    • ベストアンサー
    • HTML