2011-06-25 13 views
1

私は、レシピセンターというローカルホストのウェブサイトを作った。このウェブサイトでは、レシピを投稿し、レシピにコメントを投稿することができます。PHPウェブページでセッションクッキーが設定されていません

<?php 

$con = mysql_connect("localhost", "test", "test") or die('Could not connect to server'); 
mysql_select_db("recipe", $con) or die('Could not connect to database'); 

$userid = $_POST['userid']; 
$password = $_POST['password']; 

$query = "SELECT userid from users where userid = '$userid' and password = PASSWORD('$password')"; 
$result = mysql_query($query); 

if (mysql_num_rows($result) == 0) 
{ 
echo "<h2>Sorry, your user account was not validated.</h2><br>\n"; 
echo "<a href=\"index.php?content=login\">Try again</a><br>\n"; 
echo "<a href=\"index.php\">Return to Home</a>\n"; 
} else 
{ 
$_SESSION['valid_recipe_user'] = $userid; 
echo "<h2>Your user account has been validated, you can now post recipes and comments</h2><br>\n"; 
echo "<a href=\"index.php\">Return to Home</a>\n"; 
} 
?> 

私は対数たび:。レシピやコメントを投稿するには、これは、ログイン名を検証するPHPファイルのコードである、というか、セッションCookieを設定してログインする必要があります"あなたのユーザーアカウントは検証されており、レシピやコメントを投稿できるようになりました。"私は別のページに移動し、レシピやコメントを投稿しようとするたびしかし、それは私がログインしていないですと言っている。これはポストレシピのPHPファイルのコードです:。

<?php 
if(!isset($_SESSION['valid_recipe_user'])){ 
echo "<h2> Sorry, you do not have permission to post recipes.</h2>\n"; 
echo "<a href=\"index.php?content=login\">Please login to post recipes</a>\n"; 
} 
else { 
... 
} 
?> 

誰も説明できますなぜセッションクッキーがログインページに設定されているのですが、別のページに移動すると消えますか?

答えて

6

各ページの先頭でセッションを開始する必要があります。そうしないと、新しいページに移動するとセッション変数がリセットされます。あなたが$_SESSIONを使用する任意のページの上部に次の行を入れて:あなたが最初の場所でクッキーを取得していることを確認

session_start(); 
+1

ah/facepalmどうすればそれを逃すことができましたか? – meteorainer

0

ていますか?あなたが火かき棒やクロムなどでクッキーをチェックする場合は、phpsessionidがdbに表示されているものと同じであることを示す必要があります。あなたがそれを見たら、$ _COOKIEと$ _SESSIONがログインしていることを確認するだけでOKです。

それ以外の場合は、iniで使用するCookieが設定されていることを確認する必要があります。

関連する問題