2011-07-15 21 views
0

我在做後,他們註冊的網站,這是獲得郵寄給用戶的激活頁面,但我有我的代碼中的錯誤:獲得一個「未定義指數」錯誤

Undefined index: ActivationKey 

的鏈接的用戶將得到的將是像

website-url/activate.php?Username=user&ActivationKey=foobar 

它提供了有關這行代碼的錯誤:

$ActivationKey = $_SESSION['ActivationKey']; 

我的代碼如下:

<?PHP 



//Include database connection details 
require_once('config.php'); 

//Array to store validation errors 
$errmsg_arr = array(); 

//Validation error flag 
$errflag = false; 

//Connect to mysql server 
$link = mysql_connect("127.0.0.1","root","XXX"); 
if(!$link) { 
    die('Failed to connect to server: ' . mysql_error()); 
} 

//Select database 
$db = mysql_select_db("monitron"); 
if(!$db) { 
    die("Unable to select database"); 
} 


//Start session 
session_start();  


//check if Username is already in session and 
//use it if it is 
//else, grab it from GET 
//use it from GET 
if(!empty($_SESSION['Username'])){ 
$Username = $_SESSION['Username']; 
}else if(isset($_GET['Username'])){ 
$_SESSION['Username'] = $_GET['Username']; 
$Username = $_SESSION['Username']; 
}; 


//Grab activationkey from session. 

if(isset($_GET['ActivationKey'])){ 
$_SESSION['ActivationKey'] = $_GET['ActivationKey']; 
}; 

$ActivationKey = $_SESSION['ActivationKey']; 

echo $ActivationKey; 
echo $Username; 

//Create update query to update activation status 
$qry = "UPDATE login SET ActivationStatus = 'Active' WHERE Username = '$Username'"; 
$result = @mysql_query($qry) 

?> 

我會很感激,如果有人可以幫助我在這:)

+0

我認爲該行應該在它之前的if語句中移動。 –

+0

什麼var_dump($ _ GET,$ _ SESSION)在此行之前打印? – RiaD

+0

刪除你的root密碼! –

回答

1

你有行

if(isset($_GET['ActivationKey'])){ 
    $_SESSION['ActivationKey'] = $_GET['ActivationKey']; 
}; 

$ActivationKey = $_SESSION['ActivationKey']; 

但是,如果if語句永遠是真實的,那麼有沒有$ _SESSION ['ActivationKey'],這就是PHP抱怨的錯誤。

+0

但它應該是真實的,因爲在鏈接中設置了激活密鑰。它應該抓住字符串並將其放入$ activationkey變量中。 – Christoph

+0

檢查您的用戶名值----我想它可能包含一些空格等奇怪的HTML字符----您提供的用戶名是什麼? –

+0

看到我對上面的答案的評論,當我使用var轉儲$ GET $ SESSION它顯示GET中的激活碼,但不是在SESSION中。所以它獲得了正確的用戶名。 – Christoph