• ベストアンサー

Yahoo!のようなログイン・ログアウト

PHP初心者のプログラマに仕事をさせています。 Yahoo!のようなログイン・ログアウトの機能 (一定時間立つと自動的にログアウトになる) を作ってもらろうと思っていますが、少し プログラマが悩んでいるようですので、参考に なるWEBページや書籍がありましたら、教えて いただけませんでしょうか? また、Yahoo!はクッキーとセッション両方を使って ログイン状態を管理していると思いますが、 私のこの見解は正しいでしょうか?(私はプログラマ ではありません) よろしければ教えてください。

  • PHP
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • awazak
  • ベストアンサー率36% (61/165)
回答No.2

補足です。 クッキーを使うのが一番簡単ですが、これですとクッキーを不許可にしているとアクセス不可能になってしまいますので>> sess_idと言う関数を用いて行えば、クッキー不許可でも、URLに自動で、引数乗っけてくれますよ! この関数はユニークも自動だし、上のようなこともしてくれるので開発もわりかしらくだとおもいます。 よくやるパターンは、ログイン時に 一時的なSESS_IDとユーザー固定のIDを結びつけるやり方です。 これはログアウト後、数時間で消してしまいます。 またログインしたときに 一時的なSESS_IDとユーザー固定のIDを結びつけます。

その他の回答 (2)

回答No.3

>No2さん 恐らくsession_id()関数の事かと思いますが、それはセッションIDを取得する関数です。おっしゃる通り、セッションを使うとクッキー不許可の場合IDを引数にくっつけてくれます(クッキーが許可されていればクッキーにセッションIDを記録する)。 それに対してクッキーそのものにログイン情報を記録する方式ですとクッキー不許可の場合ログイン情報自体消失する事になりますので、「クッキー不許可の場合アクセス不可能」と答えました。 No2さんすみません。質問者の方が混乱するといけないと思ったものですから。

参考URL:
http://jp2.php.net/manual/ja/ref.session.php
回答No.1

僕自身オフィシャルのマニュアルサイトしか見ないので、参考書籍やお奨めサイトは他の方にお願いしたいと思います。 さて、ご質問の内容ですが、ログイン情報の維持、引継ぎに関してはクッキーまたはセッションで実現できます。クッキーを使うのが一番簡単ですが、これですとクッキーを不許可にしているとアクセス不可能になってしまいますので(制作側でそれも可であれば気にしなくていいのですが)、うちではログイン管理にセッション、ID/PASSの保存のような、アクセスに必須でなくかつセッションよりも長く保存するものはクッキーという使い分けをしています。

関連するQ&A

  • ログイン認証ができません!!

    下記のようなメッセージが画面に書かれているのですが、クッキーを受け入れるにしてもログイン認証できないのですが、どのようにすればいいのでしょうか? ~メッセージ~ セッション管理にクッキーを使用しています。ブラウザがクッキーが受け入れるように設定してください。 ログイン後、サーバーとの無通信状態が一定時間続くか、ブラウザを終了すると自動的にログアウト処理されます。 パスワードを一定回数連続で間違えた場合、同一IPからの認証は一定時間はできなくなります。

  • 次回から自動でログインとセッション

    次回から自動でログインとセッション 次回から自動でログイン機能が付いたサイトがありますが、ログアウトした場合、 セッションクッキーが削除されるので意味が無いと思うんですが 何のために在るのか教えてください。

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

    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つのボタンが表示されてしまいます。 お力添えいただけないでしょうか?

  • ログアウト処理

    <?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
  • ログアウトを実行してもログアウトされていない。

    こんにちは、ログアウトについてお聞きしたのですが、 どなたかお力を貸してください。 ユーザーネームとパスワードでログインする会員サイトを作っています。 会員メンバーのみ閲覧できるページがあるというシステムです。 ログインをして会員ページを閲覧できるのですが、 「ログアウトボタン」を押してもログアウト処理がされず、 まだ会員しか閲覧できないページを見ることができる状態です。 見ることができます。 いままでは、 // セッションを壊す。 //setcookie ("USERNAME", ""); //setcookie ("PASSWORD", ""); と記述していましたが、うまくいきませんでした。 調べたところ // セッション変数を全て解除する $_SESSION = array(); // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } // 最終的に、セッションを破壊する session_destroy(); という書き方があるとわかったのですが、 ユーザーネームとパスワードを初期化するという文法と 書き方が分からず、未だに、ログアウトできない状態です。 文法と書き方をどなたか教えて頂けないでしょうか。 また、セッションを保つ時間の記述の仕方も教えて頂けないでしょうか よろしくお願い致します。

    • 締切済み
    • PHP
  • 自動ログアウト方法を教えてください。

    現在動いているシステムに、新たに複数ログイン禁止の設定を追加したいと考えています。 それで、以下の流れでシステムを作成しようと考えています。 (1)フラグ設定用のファイルを用意して、ログインした時にファイルへフラグを立てる。 *データベースを使用できないので、ファイルを使用。 (2)フラグが立っていれば、それ以降のログインを禁止にする。 (3)フラグが立っていなければ、ログインを許可する。 *この時、ログイン情報をセッション変数に保存する。 (4)ログアウトする時に、ファイルに持たせているフラグを消去する。 *この時、ログイン情報をセッション変数から削除する。 (5)ログアウトせずに放置していた場合、一定時間を過ぎると自動でログアウトする。 ただ、この時分からない事がありまして、 「自動でログアウトする時に、フラグの削除処理とセッション変数の破棄の指示をどのようにして出すのか?」 また、 「ログアウトせずにブラウザを閉じても自動でログアウトできるのか?」 という2点に調べています。 上記2点のことでアドバイスを頂けないでしょうか? また、複数ログイン禁止の設定を行う際に、注意しておいた方がいい点などがあれば教えて頂けないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • 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
  • セッションの有効期限の設定方法とログアウト方法

    会員システムをPHPのセッション管理を使って作っているのですが、 1.セッションの有効期限の時間を変更するためにはsession_cache_expireを使うんだと思うんですが、これは全ページのsession_start()の前に書かないといけないのでしょうか? それとも、ログインするときに必ず通るPHPファイルに書いておけば大丈夫なのでしょうか? 2.会員ログアウトをする場合は、 unset($_SESSION['****']); でログインするときに入れた変数をunsetするだけで大丈夫なのでしょうか? もっと他に一般的な方法があったりするのでしょうか? どちらかだけでもお分かりの方がいれば教えていただければうれしいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ログアウトしている

    ブラウザを立ち上げる度に ログアウトするまでログイン状態にしていたサイトが 自動的にログアウトしてしまいます mixiやyahooやこのOKWAVEもログアウトしていました ブラウザを消して再度立ち上げても同じです ハイパーリンクをクリックすると 文字の色が紫に変わるのも 全て青に戻っています クッキーか何かがおかしいのでしょうか? ご回答お願いします

  • ログイン管理について

    こんばんは。  phpを始めたばかりで分からないことがあり、細かく教えて くださる方がいましたらお願いします。  いまphpで会員制のサイトを作成しようと思っています。 分かりやすく言いますと「Yahoo!」さんのようなサイトを です。  そこで登録や修正・削除のページを作成しました。 次にユーザーIDとパスワードを入力してもらい、それによる 認証を実行し結果を出すページも作成しました。 ログイン情報の保持はセッションを利用しています。 そこまで作成し行き詰まりました。 参考にしたページは:http://php.dori-mu.net/session.htmlで このページに記されている「definition.php」ファイルに ログイン情報を格納しようと思いました。 問題となっているのは下記のとおりです。 ●まずユーザの想定するフローは  1.ログインページ(001.php)  2.認証および結果ページ(002.php)  3.会員制ページ(003.php~009.php)  4.ログアウトページ(010.php) でしたが ●想定外のフローは  1.ログインページ(001.php)  2.認証および結果ページ(002.php)  3.会員制ページ(003.php~009.php)   ※この会員制のサイトのログイン中に他のページ    (google等)に遷移する。  4.googleにて色々な操作し「戻る」の操作を行わないで   再度3.の会員制のサイトに遷移  5.会員制ページ(003.php~009.php) ●上記の想定外のフローを行うと、セッション情報が  空となってしまいます。  「戻る」による操作で会員制に戻ると、セッション情報は  保たれています。  「Yahoo!」さんのサイトでは「Yahoo!」にログイン中に 他のサイトに遷移し「戻る」の操作を行わないで「Yahoo!」に 戻ってもログイン情報を保たれています。  ネットで検索を行ったところ、「Yahoo!」さんでは セッションの他にCookieを利用していると拝見しました。 この二つを両立させるには、どのようにしたら 良いのでしょうか? また、もし「Yahoo!」さんが、この方法で無い場合は どうような方法なのでしょうか?  サンプルや参考になるページがありましたら よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう