2012-03-14 15 views
0

ログインしていないときは、このページのURLをブラウザに入力するとフォームが表示されます。ログインしていない場合は、HTMLを表示したくないというメッセージが表示されます。ログインする必要があるだけのメッセージです。他のページで同じセッションコードを使用していますが、動作しますが、 '未定義インデックス'ビット刺激。何か案は?PHPセッションが開始しない

<?php 

session_start(); 

if ($_SESSION['first_name']&& $_SESSION['username']) 

echo "Welcome ".$_SESSION['first_name']."<br><a href='login/logged_out.php'>log  
out</a>"; 

else 
die("You must be logged in. Click <a href='login/login_page.php'>here</a> to log  
in."); 

?> 
<html> 
<head> 
</head> 
<body> 
<form id="1" class="rounded" action="test4.php" method="post"/> 
<input type="submit" name="submit" class="button" value="5" /> 

<form id="2" class="rounded" action="test4.php" method="post"/> 
<input type="submit" name="submit" class="button" value="6" /> 

<form id="3" class="rounded" action="test4.php" method="post"/> 
<input type="submit" name="submit" class="button" value="7" /> 

<form id="4" class="rounded" action="test4.php" method="post"/> 
<input type="submit" name="submit" class="button" value="8" /> 

<form id="5" class="rounded" action="test4.php" method="post"/> 
<input type="submit" name="submit" class="button" value="9" /> 

<form id="6" class="rounded" action="test4.php" method="post"/> 
<input type="submit" name="submit" class="button" value="10" /> 

</form> 
</body> 
</html> 
+0

「ログインしていますか? セッションを処理する際に最もよくある間違いの1つは、session_write_close()を呼び出す前にリダイレクトされることです。 –

+0

[PHP: "Notice:未定義変数"と "Notice:未定義インデックス"](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – animuson

答えて

2

この試してください:あなたのコードが不完全に書かれている

<?php 

session_start(); 

if(isset($_SESSION['first_name']) && isset($_SESSION['username']) && $_SESSION['firstname']!= ''){ 
    echo "Welcome ".$_SESSION['first_name']."<br><a href='login/logged_out.php'>logout</a>"; 
}else{ 
    die("You must be logged in. Click <a href='login/login_page.php'>here</a> to log in."); 
} 
?> 
+0

ご協力ありがとうございます。 isset()を使わないだけです。再度、感謝します – user1022772

1

それはFIRST_NAMEおよび/またはユーザ名があなたのセッションでインデックスがあると思いません

FIRST_NAMEおよび/またはユーザ名が設定されているかどうかを確認

また

isset($_SESSION['first_name']) 

isset($_SESSION['username']) 

あなたが検証したくない場合がありますboolean自体でない限り(first_nameはブール値のように読み込まれませんが)、これらの値に基づくブール条件です。

0

を。あなたは、彼らが存在することを知っていない限り、あなたは、配列のインデックスを参照するべきではありません

<?php 
session_start(); 
if (empty($_SESSION['first_name']) || empty($_SESSION['username'])) { 
    die("You must be logged in. Click <a href='login/login_page.php'>here</a> to log in."); 
} 
echo "Welcome " . $_SESSION['first_name']; 
?> 
<br><a href='login/logged_out.php'>logout</a> 

:私はに修正します。

0

「開始していない」問題が何であるかは明確ではありません。定義されていないインデックスは、issetでチェックすることで防ぐことができます。あなたのコードはまた、もし/他の部分は中括弧で話す変数名と括弧を使用することによって改善することができます。

session_start(); 
$isLoggedIn = isset($_SESSION['first_name']) && isset($_SESSION['username']); 
if ($isLoggedIn) 
{ 
    echo "Welcome ", htmlspecialchars($_SESSION['first_name']), 
     "<br><a href='login/logged_out.php'>log out</a>"; 

} 
else 
{ 
    echo "You must be logged in. Click <a href='login/login_page.php'>here</a> to log in."; 
    return; 
} 

この亜種はまた、より高いインスタンスにプログラムの流れをお返しするために、return代わりのdieを使用しています。セッションでの作業時

0

、あなたはすでに/解除にそのセッションを設定しているかどうかを確認するためにどこかに

print_r($_SESSION); 

追加することができます。

関連する問題