これは私のウェブサイトでの認証を制御するコードです。私の論理が正しいかどうかは分かりません。ユーザー名とパスワードは、以下の正しい場合に起こる:PHPでのログインセッションの安全な作成と破棄
if(session_start())
{
session_regenerate_id(true);//without this the session ID will always be the same
$_SESSION['loggedInUser'] = $uName;
echo 'You are now logged in';
}
else echo 'Right password/username but session failed to start';
以降のページは、ユーザーがログアウトしたとき、私は
session_start();//if I don't have this the next line produces an error
session_unset();//destroys session variables
session_destroy();//ends session
を持って
session_start();
if(isset($_SESSION['loggedInUser'])
{
//rest of page
}
else echo 'you must log in';
でログインしている場合、私はどうかを確認ログアウト時にsession_start()を呼び出さないように赤色にしてください。しかし、私がそれを持っていなければ、Trying to destroy uninitialized session
というメッセージが出ます。これをどうすれば解決できますか?
IPアドレスとユーザエージェントに基づいて指紋を作成することをお勧めしますか?私はそれが悪いのは複数のコンピュータが同じIPアドレスを共有することができるためです。たとえば、コンピュータラボであれば、すべてのトラフィックはプロキシを経由し、同じコンピュータであれば動的であればIPアドレスを変更できます。一方、これはどのくらい頻繁に起こりますか?すべてのセッションハイジャックを防止するために、ブロックされた有効な利用方法はほんのわずかな価値があります。
あなたが評判の良い記事を推薦できる場合でも、このトピックについて学ぶために読んでください。
5/6の回答が0未満の票を持っている:(でしダウン有権者はので、私はしっかりと私は、次のコードを使用するセッションを破棄するに
[php.net](http://php.net/manual/en/functionsession- destroy_php) '$ _SESSION'を使わない古い推奨されていないコードに対してのみsession_unset()を使用してください – bitWorking
可能な限り、既存の認証フレームワークを再利用するべきです。例えば、https://github.com/delight-im/PHP-Authを見てください – caw