我有一个名为login
的表单,提交时将字段username
和password
发送到MySQL数据库以检查它们是否匹配。我想echo
在他们不匹配时出错。
以下是表单上方的PHP代码:
if (!isset($_POST['login'])) {
mysql_connect (...);
mysql_select_db (...);
$username = $_POST['username'];
$password = $_POST['password'];
$location = $_POST['location'];
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$sql = "SELECT * FROM members WHERE username='$username' and password='$password'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1) {
session_register("username");
session_register("password");
header("Location: $location");
}
else {
echo "Wrong username or password.";
}
mysql_close();
}
形式:
<form name="login" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input name="location" type="hidden" value="<?php echo $_GET['location']; ?>"/>
<input name="username" type="text" value="Username" onclick="this.value=''"/>
<input name="password" type="text" value="Password" onfocus="this.value='';this.type='password'"/>
<input name="submit" type="submit" value="Login"/>
</form>
如果我使用正确的用户名和密码提交表单,则代码可以正常运行。
问题是即使在提交表单之前始终存在错误消息。有什么想法吗?
答案 0 :(得分:3)
将第一行更改为:
if (isset($_POST['username'])) {
答案 1 :(得分:3)
if (!isset($_POST['login']))
删除感叹号。所以if (isset($_POST['login']))
答案 2 :(得分:0)
$ _ POST ['login']很可能未在您的脚本中设置。上述解决方案将修复您的第一个错误。但是,如果未设置$ _POST ['login'],您将无法登录。
我建议你检查一下你将在脚本中使用的帖子变量:
if(isset($_POST['username']) && isset($_POST['password']) && isset($_POST['location'])) {
// your code
}