php - 当我提交表单时,“并非所有字段都已输入”。我正在使用 PHP 7
问题描述
我是 PHP 新手:我已经搜索了 20 多个答案,并尝试了建议的各种编码,但没有解决问题。我的问题显然在过去曾引起其他用户的问题,因为这个问题被问了很多次。问题是我在提交表单时收到“并非所有字段都已输入”的返回。我正在使用 PHP 7。
我知道我已连接到我的 MySQL 数据库,因为我在提交查询时收到“已连接到 MySQL”的返回 - msqlconnect.php
这是我的代码:
<?php
include_once 'functions.php';
$error = $user = $pass = "";
if ($_POST &&isset($_POST['user'], $_POST['pass'])) {
$user = sanitizeString($_POST['user']);
$pass = sanitizeString($_POST['pass']);
if ($user == "" || $pass == "") {
$error = "Not all fields were entered<br />";
} else {
$token = md5("$pass");
$query = 'SELECT user,pass FROM password
WHERE user='$user' AND pass=\'$token\'';
if (mysql_num_rows(queryMysql($query)) == 0) {
$error = "Username/Password invalid<br />";
} else {
$_SESSION['user'] = $user;
$_SESSION['pass'] = $token;
die("You are now logged in. Please
<a href='xxxx_member.php?view=$user'>click here</a>.");
}
}
}
echo <<<_END
<form method='post' action='xxxx.php'>$error<br />
E-Mail Address: <input type='text' maxlength='255' name='user'
value='$user' /><br /><br />
Password: <input type='password' maxlength='255' name='pass'
value='$pass' /><br />
<br /><br />
<input type='submit' value='Login' />
</form>
_END;
?>
在我看来,代码并没有超出第一个“else”,但我不知道为什么。
任何建议将不胜感激。
根据要求,以下是“消毒”功能:
function sanitizeString($var)
{
$con = @mysqli_connect('localhost', 'root', '', 'test');
$user = mysqli_real_escape_string($con, $_POST['user']);
$psass = mysqli_real_escape_string($con, $_POST['pass']);
}
function sanitizemysqli($var)
{
$var = mysqli_real_escape_string($var);
$var = sanitizeString($var);
return $var;
}
解决方案
我认为问题出现是因为函数 sanitizeString 没有返回正确的字符串,而是返回了一个空字符串。这就是为什么您总是看到相同的消息。我会调试这些变量以查看它们是否已填充。像这样的东西:
<?php
include_once 'functions.php';
$error = $user = $pass = "";
if ($_POST &&isset($_POST['user'], $_POST['pass']))
{
$user = sanitizeString($_POST['user']);
$pass = sanitizeString($_POST['pass']);
var_dump($_POST);
var_dump($user);
var_dump($pass);
die();
if ($user == "" || $pass == "")
{
$error = "Not all fields were entered<br />";
}
else
{
$token = md5("$pass");
$query = "SELECT user,pass FROM password
WHERE user='$user' AND pass='$token'";
if (mysql_num_rows(queryMysql($query)) == 0)
{
$error = "Username/Password invalid<br />";
}
else
{
$_SESSION['user'] = $user;
$_SESSION['pass'] = $token;
die("You are now logged in. Please
<a href='xxxx_member.php?view=$user'>click here</a>.");
}
}
}
echo <<<_END
<form method='post' action='xxxx.php'>$error<br />
E-Mail Address: <input type='text' maxlength='255' name='user'
value='$user' /><br /><br />
Password: <input type='password' maxlength='255' name='pass'
value='$pass' /><br />
<br /><br />
<input type='submit' value='Login' />
</form>
_END;
?>
有了这个,您可以逐步检查正在发生的事情。
推荐阅读
- node.js - 如何更改 MongoDB/Mongoose 文档的位置?
- javascript - 快递中的 res.write 显示其中的 HTML 元素
- php - 通过一个字段选择唯一记录
- amazon-web-services - 使用 terraform 导入我的云 AWS 帐户的当前状态
- database - EAV 建模数据库模式来存储设置,这是正确的方法吗?
- php - 如何在php中将数组的索引值设置为0?
- python - 如何清理字符串以使其仅包含可打印的 ASCII 字符?
- html - 如何添加不透明度的背景图像+背景颜色?
- azure - 使用 Kudu API 将带有 serviceBusTrigger 的 azure 函数部署到现有函数应用程序,即使在手动同步触发器后也不会触发
- javascript - 滚动时的 jQuery 导航栏过渡。如何调整特定的过渡点