我正在构建一个微站点,并且在密码重置行为时遇到了问题。调试PHP验证脚本
有一种形式要求用户输入两次密码。我不是密码纳粹,唯一的要求是密码超过5个字符。提交时,表单数据被添加到$ _POST数组中,并发送到我的站点范围的php函数脚本中的setPass函数。
功能是
function setPass(){
$link= connectDB();
$query= "select * from People where Username='" . $_SESSION['name'] . "' Limit 1";
$result= $link->query($query);
if ($result->num_rows==0){
$_SESSION['status']= 'invaliduser';
header("location: ../index.php");
} else {
$first = $_POST['firstPass'];
$second = $_POST['secondPass'];
if (($first == $second) && (strlen($first) > 5)){
$password = sha1($first);
}
}
}
我要离开了本例中的数据库插入代码。
我的问题是,包含在页面主体中的此脚本echo $_SESSION['name'] . " and password: " . $first;
会输出用户名,但会返回unidentified variable: first
警告。当我尝试访问变量$password
时,也会发生这种情况。
早期的测试表明,第一个条件是真实的,因为页面没有重定向。
那么,在else块中导致执行失败的原因是什么?
我没有在你的代码中看到'echo'...你想在哪里“回声”?你是在你的'setPass'函数里面还是在外面? – 2012-02-24 19:17:52
我在setPass函数所在的php页面中添加了一些HTML标头和主体标签。这就是echo标签所在的位置。 – Jason 2012-02-24 19:21:49
是的,如果你想在'setPass'函数之外访问这些变量,那么你就超出了范围。使用全局变量或$ _SESSION,就像下面的答案一样。 – 2012-02-24 19:25:12