gpt4 book ai didi

php - 调试 PHP 验证脚本

转载 作者:行者123 更新时间:2023-12-02 07:42:39 25 4
gpt4 key购买 nike

我正在构建一个微型站点,但在密码重置行为方面遇到了问题。

有一个表单要求用户输入密码两次。我不是密码纳粹,唯一的要求是密码大于 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'] 。 “和密码:”。包含在页面正文中的 $first; 打印出用户名,但返回一个 unidentified variable: first 警告。当我尝试访问变量 $password 时也会发生这种情况。

早期的测试表明第一个条件为真,因为页面没有被重定向。

那么是什么导致了else block 执行失败呢?

最佳答案

由于您在 setPass 函数中设置了 $first$password,因此它们在函数体之外不可用。

您应该使用 global 关键字,或者,如果您希望在外部使用它们,则返回函数中的值可能更好。

这个概念称为变量的作用域。这些变量在函数内具有局部 作用域。参见 here有关 PHP 范围的全面描述。

关于php - 调试 PHP 验证脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9436603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com