2012-12-05 141 views
-1

可能重複:
PHP: 「Notice: Undefined variable」 and 「Notice: Undefined index」爲什麼我的索引未定義

我嘗試創建一個簡單的login and register page,我讓我的index .php網頁上的錯誤,爲什麼我的索引未定義這些是我得到的錯誤

Notice: Undefined index: username in C:\xampp\htdocs\mysite\forum part two\index.php on line 7 

Notice: Undefined index: password in C:\xampp\htdocs\mysite\forum part two\index.php on line 8 

第7和第8行上的代碼這些分別

$username = $_SESSION['username']; 
$password = $_SESSION['password']; 

這是我的索引頁

<?php 
//This will start a session 
session_start(); 

$username = $_SESSION['username']; 
$password = $_SESSION['password']; 

//Check do we have username and password 
if(!$username && !$password){ 
echo "Welcome Guest! <br> <a href=login.php>Login</a> | <a href=register.php>Register</a>"; 
}else{ 
echo "Welcome ".$username." (<a href=logout.php>Logout</a>)"; 
} 
?> 

回答

2

你得到的錯誤,因爲你的會話已早些時候宣佈,所以你需要檢查,如果你的會話早些時候宣佈。您可以使用PHP emptyisset功能

<?php 
//This will start a session 
session_start(); 
$username ='';$password =''; 
if(!empty($_SESSION['username']))//check if it is defined 
    $username = $_SESSION['username']; 

if(!empty($_SESSION['password']))//check if it is defined 
    $password = $_SESSION['password']; 

//Check do we have username and password 
if($username=='' && $password==''){ 
    echo "Welcome Guest! <br> <a href=login.php>Login</a> | <a href=register.php>Register</a>"; 
}else{ 
echo "Welcome ".$username." (<a href=logout.php>Logout</a>)"; 
} 
?> 
+0

這只是給一個「通知:未定義的變量」,而不是如果會話的指數沒有設置,因爲'$ username'和'$ password'如果在會議中不存在,他們永遠不會設置。 – animuson

+0

現在這會在用戶名和密碼在if條件沒有設置時拋出未定義的變量錯誤。首先聲明它們是假的。 – dakdad

+0

@dakdad感謝您指出這一點。 – Sibu

2

檢查,看是否$_SESSION's存儲中的任何值..

我給你舉個例子:

<?php 
//This will start a session 
session_start(); 

if(isset($_SESSION['username'])) 
{ 
    $username = $_SESSION['username']; 
}else{ 
    $username = null; 
} 
var_dump($username); 

// Would return NULL. SESSION IS NOT SET. 
// if I add $_SESSION['username'] = "Phorce" session set, will return phorce. 
?> 

或者:var_dump($_SESSION['username']);

希望這有助於:)可能是$_SESSION['username']未註冊。

+0

這隻會給一個「通知:未定義的變量」,而不是設置會話的索引,因爲'$ username'和'$ password如果他們不存在於會話中,永遠不要設置。 – animuson

1

使用前請檢查是否有分配給會話變量的值。

<?php 
//This will start a session 
session_start(); 

$username =""; 
$password =""; 
if(isset($_SESSION['username'])) 
$username = $_SESSION['username']; 

if(isset($_SESSION['password '])) 
$password = $_SESSION['password']; 

//Check do we have username and password 
if(!$username && !$password){ 
echo "Welcome Guest! <br> <a href=login.php>Login</a> | <a href=register.php>Register</a>"; 
}else{ 
echo "Welcome ".$username." (<a href=logout.php>Logout</a>)"; 
} 
?> 
相關問題