2017-04-15 23 views
0

私はここで同様の質問を見ましたが、解決策のどれも私のために働いていません。 私はWAMPとlocalhostでphp 5.6を実行しています。 ユーザーが正しくログインすると、私はsession_start()でセッションを開始し、$_SESSION['user']$_POST['username']と設定してから、header('Location: home.php')を使用します。 home.phpはsession_start()で始まり、$_SESSION['user']が設定されているかどうかを確認します。そうでない場合は、ログインページにリダイレクトします。しかし、有効なパスワードと電子メールでログインしても、ログインページには常に不明な理由でリダイレクトされます。私は $_SESSION['user']にしようとしましたが、それは定義されていないと言います。この問題を解決するにはどうすればよいですか?PHPセッションは保存されません

+0

ユーザログインの前にセッションを開始する必要があります –

+0

あなたのコードをここに書き留めておいてください。 –

答えて

0

我々は通常header.phpsession_start();を入れ、問題は今、あなたは間違っているsession$_POST['username']を割り当てたことで、私たちはdatabaseからデータを取得するために$_POST['']を使用し、だから、あなたはあなたのSELECTクエリを入力する必要がありますし、 databaseusername rowからユーザー名を取得し、この$_SESSION['username'] = $row['username'];

のようなセッションにrowデータを割り当てるので、簡単に、あなたの間違いは$_POST['username']代わりのSELECT、その後$_POSTを使用してdatabaseからデータをINGのを使用していますこのようにsessionを割り当ててください$_SESSION['username'] = $row['username'];

0

これは私がそれを行う方法です。

include('dbconnect.php'); //php with server connection detail 
session_start(); 

$user_check = $_SESSION['login_user']; 

$ses_sql = mysqli_query($db,"SELECT username FROM users WHERE username = '$user_check' "); 

$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC); 

$login_session = $row['username']; 

if(!isset($_SESSION['login_user'])){ 
    header("location:login.php"); 
} 
0
  1. は、多分あなたは設定できません「session_auto_startを=に」php.iniで
  2. はまず存在でのphp.ini session_save_pathをチェックして、ノーありWidnowsの一般的なデフォルトがc:\ windows \ tmpの場合はコメントアウトしてください。ディレクトリはデフォルトで他のユーザーを読み取ることができません。誰でも書き込み可能なフォルダを設定してください。
0

php.ini f ILEはあなたがsession.autostart = On

Apacheを使用して、右のオプションを持っているしている場合は、この行を含む.htaccessファイルでsession.auto_startを有効にすることができますのphp_flag session.auto_start 1

は、すべての上にsession_start()を行います。

関連する問題