我是新来的,所以我希望我做得对。 我有一些问题,从我的PHP发送正确的消息到我的 HTML
在这里,您可以看到如果用户名无效(如果使用#$%^&等等),可以回复消息的PHP部分。
$validUsername = $CurrentUser->ValidateUsername($username);
//if the input isn't filled send a message back
if(!$validUsername)
{
$messageError = "Please fill in a valid username";
header("location: ../public/index.php?messageError=$messageError");
}
另一个应检查用户名是否唯一的
$uniqueUsername = $CurrentUser->CheckAvailableUsername($validUsername);
if (!$uniqueUsername)
{
$messageError = "Please fill in a unique username";
header("location: ../public/index.php?messageError=$messageError");
}
现在奇怪的是如果使用#$%^&等。作为用户名,它会给我回复,请填写一个唯一的用户名,而不是请填写有效的用户名,我找不到原因。
哦顺便说一下我用这些方法创建了一个名为User的类,我将在下面显示它们。
public function ValidateUsername($username)
{
if (!empty($username))
{
if (isset($username))
{
if (!preg_match("/^[a-zA-Z ]*$/", $username))
{
return false;
}
return $this->username = $username;
}
return false;
}
return false;
}
另一个。
public function CheckAvailableUsername($username)
{
$sql = "SELECT * FROM `tbl_todolist`
WHERE `username` = '$username';";
$result = $this->dataBase->query($sql)->rowCount();
if ($result == 1)
{
return false;
}
return $this->username = $username;
}
我真的希望你们可以帮助我。
答案 0 :(得分:0)
在header(...);
之后,你需要在return;
或exit;
之后退出,否则它会继续超出该标题。
附加说明
您对CheckAvailableUsername
中的SQL注入持开放态度,您需要在访问该函数之前清理该值,并且还要将值bind转义为您的查询。看起来你已经在使用PDO了。