ホームページ >バックエンド開発 >PHPチュートリアル >初心者の Xiaobai がセッションの問題についてアドバイスを求める

初心者の Xiaobai がセッションの問題についてアドバイスを求める

WBOY
WBOYオリジナル
2016-06-20 12:28:091136ブラウズ

実装したい機能は、ユーザーが繰り返しログインするのを防ぐことです。私には、専門家が理解できる方法のみを使用します。ログインページ


このような書き方の問題は、session_start() を使用せずに $_SESSION["username"] を使用することが原因のようです?

if(!$username){ 	  $aa= '账号不存在';	  }else if($password != $bb){		  $aa= '密码错误';		}else if(!empty($_SESSION["username"])){		  $aa= '该账号已登录';		  }else{			  session_start();			  $_SESSION["md5"] = md5($time);			  $_SESSION["username"] = $account;                           DB::query("UPDATE ".DB::table('abc')." set a='$time' , b=' {$_SESSION["username"]}' , md5='{$_SESSION['md5']}'   where name='$account'");			  $aa= '成功登陆';			  }
}else if(!empty($_SESSION) ["username"])); これで改善されますが、他に問題がある場合は、

ログイン後のページです



 session_start();  $md5 = $_SESSION["md5"];   $username = $_SESSION["username"];   $aa= DB::get_one("SELECT * FROM ".DB::table('abc')." WHERE b='$username' and md5='$md5'");  if(!$aa){	  session_destroy();	  echo "<script>alert('你掉线了');</script>"; 	  echo "<script language='javascript' type='text/javascript'>" ;        echo "window.location.href = 'index.php';" ;        echo "</script>" ;        exit () ;   }}
問題どのようにログインしても、「切断されました」というプロンプトが表示されます。キャッシュをすぐにクリアする場合も同様です!

}else if(!empty($_SESSION["username") を削除した場合])); ログイン ページの一部は正常です
ただし、同じブラウザを開きます。問題はまだ存在します。別のブラウザでも動作するようです。
私は独学の初心者です。専門家は批判しないでください。 🎜>
解決してください!


ディスカッションに返信 (解決策)
エラーメッセージを投稿して、$_SESSION がネイティブであると判断された場合は、最初に session_start() を実行する必要があります。もちろん、判断するときに確認するのが最善です。 isset($_SESSION['xx']) が存在するかどうか。あなたの質問は非常にわかりにくいです。エラーがある場合は、最初にクエリをデバッグして、最終的なクエリ ステートメントが何であるかを確認してください。 、重複ログインを防ぐために、SESSION を使用する場合は、SESSION が存在するかどうか、および SESSION が一致するかどうかを判断するだけで済みます。

あなたの書き方は非常に汚いです

ログイン ページは、入力されたユーザー名とパスワードを取得します。データが正しいかどうかを確認し、正しい場合はセッションを書き込み、ログイン後のページにジャンプします

ログイン後のページでは、ユーザーのセッション データがあるかどうかを判断するだけで済みます。ない場合は、ログインページにジャンプしてログインを求めます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。