我正在为管理员创建一个登录页面,以便轻松地对网站进行一些更改。但是,登录页面无法正常工作。它不会转到错误页面 InvalidLogin.html ,也不会转到管理网站 AdminChanges.php 的下一页。
相反,我收到以下消息:
未找到 在此服务器上找不到请求的URL / website / method =“post”。
<?php
if ($_POST['submit'] == "submit")
{
$userName = $_POST['username'];
$passWord = $_POST['password'];
$db= mysql_connect("localhost", "root", "root");
if(!$db) die("Error connecting to MySQL database.");
mysql_select_db("onlineform", $db);
$checkUserNameQuery = "SELECT username FROM onlineformdata ORDER BY id DESC LIMIT 1";
$checkUserName = mysql_query($checkUserNameQuery);
$checkPassWordQuery = "SELECT password FROM onlineformdata ORDER BY id DESC LIMIT 1";
$checkPassWord = mysql_query($checkPassWordQuery);
if (($userName == $checkUserName) && ($passWord == $checkPassWord))
{
$AdminChanges = "AdminChanges.php";
}
else
{
$AdminChanges = "InvalidLogin.html";
}
}
function PrepSQL($value)
{
// Stripslashes
if(get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// Quote
$value = "'" . mysql_real_escape_string($value) . "'";
return($value);
}
?>
<html>
<head>
<title>Admin Login</title>
</head>
<body>
<form action = <?php PrepSQL($AdminChanges); ?> method="post">
username: <input type="text" name="username" />
password: <input type="text" name="password" /> <br/>
<input type="submit" name="submit" value="submit" />
</form>
</body>
</html>
答案 0 :(得分:1)
两个问题是联合导致此错误。首先,您的PrepSQL
函数不响应响应,调用它的代码也不响应。您需要echo
或print
响应,以便它显示在您生成的HTML中。
<?php echo PrepSQL($AdminChanges); ?>
其次,您需要将action
属性的值封装在双引号中,如下所示:
<form action = "<?php echo PrepSQL($AdminChanges); ?>" method="post">
另请注意,您的代码假定您的mysql_query()
语句成功。出于疑难解答的目的,您至少应在or die(mysql_error())
行的末尾添加mysql_query()
语句。这将允许您的代码在查询失败时提供一些反馈。
此外,请注意您的查询处理方法永远不会产生有效的登录响应。
$checkUserName = mysql_query($checkUserNameQuery);
$checkPassWord = mysql_query($checkPassWordQuery);
if (($userName == $checkUserName) && ($passWord == $checkPassWord))
mysql_query()
返回MySQL资源,而不是数据库中的单个字段。您的代码尝试将该资源与提供的用户名和密码进行比较,并且比较将始终失败。有关处理mysql_query()
结果的详细信息,请参阅the documentation。
答案 1 :(得分:0)
我注意到有两个错误:
你的$ _POST ['submit'] if语句不允许为表单设置$ AdminChanges,除非它已经提交。
要解决此问题,您可以将if submit语句更改为仅重定向到无效的登录页面,如下所示:
if (($userName == $checkUserName) && ($passWord == $checkPassWord))
{
//Correct info do what you need to here
}
else
{
header("Location: InvalidLogin.html");
exit();
}
还有:
您需要更改操作以发布到此页面。
<form action="<? $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
答案 2 :(得分:0)
替换: PrepSQL($ AdminChanges);
使用: print PrepSQL($ AdminChanges);
答案 3 :(得分:0)
试试这个:
<form action = "<?php echo PrepSQL($AdminChanges); ?>" method="post">
你需要回应价值。