2012-12-05 144 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>)"; 
} 
?> 
相关问题