2012-02-01 10 views
1

可能性の重複:
PHP session seemingly not working

私は現在、楽しみのために私自身のCMSをコーディングしていますが、私は$ _SESSIONを使用する場合、それは動作しません。私はその後、私は、ユーザーが禁止されていないかどうかを確認私のデータベースのユーザ情報を取得し、コードで

<?php 
include('header.php'); 
if (isset($_SESSION['logged_in'])) 
{ 
    $link = 'profile.php'; 
    $link_name = 'Profile'; 
} 
else 
{ 
    $link = 'login.php'; 
    $link_name = 'Login'; 
} 

if (isset($_POST['action'])) 
{ 
    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']); 
    $password = md5($password); 
    $user = mysql_query("SELECT * FROM users WHERE `username`='".$username."'"); 
    if (mysql_num_rows($user) == 1) 
    { 
      while ($userinfo = mysql_fetch_array($user)) 
      { 
        if ($userinfo['banned'] != true) 
        { 
          $_SESSION['user_id'] = $userinfo['id']; 
          $_SESSION['username'] = $userinfo['username']; 
          $_SESSION['logged_in'] = "true"; 
          header('Location: index.php'); 
        } 
        else 
        { 
          header('Location: login.php?error=banned'); 
        } 
      } 
    } 
    else if (mysql_num_rows($user) == 0) 
    { 
      header('Location: login.php?error=not-found'); 
    } 
} 
?> 

:セッションが

私のコードがあります...保存されません。そうでない場合、私は$ _SESSION []を設定し、家にリダイレクトします。

+3

'header.php'に含まれていない限り、' session_start() 'は省略しました。 '$ _SESSION'にアクセスする各スクリプトで、' $ _SESSION'にアクセスしたり設定したりする前に、それを呼び出さなければなりません。 –

+0

あなたはsession_start()を持っていますか?各ページの上部に? – dSquared

+0

@Michaelそれは 'header.php'にあります... –

答えて

10

最初にsession_start()が必要です。

+0

'session_save()'が必要ですか? –

+2

PHPにはこのような機能はありません。 – spidEY

+0

@Frederick:セッションが_start() 'dの場合、スクリプトが終了すると自動的に保存されます。 'session_write_close()'で強制的に保存することはできますが、変更を加えると後で自動保存することはできません。再度開くにはsession_start()をもう一度実行する必要があります。 –

4

スクリプトの冒頭でsession_start()に電話する必要があります。セッション変数にアクセスする必要があるすべてのページで呼び出してください。

1

session_start()が呼び出されていることを確認してください。改ざんデータを使用して、送信要求と受信要求のヘッダーを確認します。サーバーからのSet-CookieヘッダーとクライアントからのCookieヘッダーを探しています。これにはPHPSESSIDが含まれている必要があります。これが表示されない場合、セッションは開始されません。がんばろう!

関連する問題