我在检查uname和passwd这两个输入时遇到了问题。我可以让一个单独工作,但当我试图把它们都传回来时,我总是会出错。
<?php
// define variables and set to empty values
$usernameErr="";
$passwordErr="";
$username= "";
$password="";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["uname"]))
{
$usernameErr = " username is required <br>";
print $usernameErr;
}
else
{
$username = checkUserData($username);
}
if (empty($_POST["passwd"]))
{
$passwordErr = " password is required <br>";
print $passwordErr;
}
else
{
$password = checkUserData($password);
}
}
问题是这样的。我正在传下去检查数据以阻止攻击。我尝试了多种方法将它们结合在一起,但都失败了。
function checkUserData($username)
{
$username = htmlspecialchars($username);
$username = trim($username);
$username = stripslashes($username);
return $username;
}
function checkUserData($password)
{
$password = htmlspecialchars($password);
$password = trim($password);
$password = stripslashes($password);
return $password;
}
我打印只是为了检查它是否工作。
print ("welcome " .checkUserData($_POST["uname"]));
print ("welcome " .checkUserData($_POST["passwd"]));
?>
任何帮助都会很棒。
两个函数都在做同样的事情,所以将它们概括为
function SanitizeData($var)
{
$var= htmlspecialchars($var);
$var= trim($var);
$var= stripslashes($var);
return $var;
}
现在,在您的检查过程中,请致电
$username = SanitizeData($_POST["uname"]);
或
$password = SanitizeData($_POST["passwd"]);
尽管如果要在查询中使用这些字段,这种净化在最好的情况下是不必要的,在最坏的情况下也是破坏性的,但最好使用参数化查询和PDO数据库扩展。