Php 得到一个;未定义索引“;错误

Php 得到一个;未定义索引“;错误,php,Php,我正在制作一个激活页面,该页面在用户注册到网站后会被邮寄给用户,但我的代码中有一个错误: Undefined index: ActivationKey 用户将获得的链接如下 website-url/activate.php?Username=user&ActivationKey=foobar 它给出了这一行代码的错误: $ActivationKey = $_SESSION['ActivationKey']; 我的代码如下: <?PHP //Include databas

我正在制作一个激活页面,该页面在用户注册到网站后会被邮寄给用户,但我的代码中有一个错误:

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)

?>
你有台词

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

$ActivationKey = $_SESSION['ActivationKey'];

但是如果if语句从来都不是真的,那么就没有$\u会话['ActivationKey'],这就是PHP抱怨的错误。

我认为那一行应该在if语句的前面移动。在这一行之前打印什么var\u dump($\u GET,$\u SESSION)呢?var\u dump($GET,$\u SESSION)给我数组'Username'=>字符串'xvampx'(长度=6)'Activationkey'=>string'df5097bfcf58e61af7c48603a47c5288'(长度=32)数组'Username'=>string'xvampx'(长度=6)Activationkey-----k是小写字母?是的,它是小写字母:),但它应该是真的,因为在链接中设置了Activationkey。它应该抓取字符串并将其放入$activationkey变量中。检查您的用户名值——我猜它可能包含一些空格等奇怪的HTML字符——您提供的用户名是什么?请参阅我对上面答案的评论,当我使用var dump$GET$SESSION时,它会在GET中显示activationkey,但不会在SESSION中显示。所以它的用户名是正确的。