0

我正在为管理员制作一个登录页面,以便轻松地对网站进行一些更改。但是,登录页面无法正常工作。它不会转到错误页面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>
4

4 回答 4

1

两个问题正在联合起来导致这个错误。首先,您的PrepSQL函数不会回显响应,调用它的代码也不会。您需要echoprint响应,以便它出现在您生成的 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()请参阅文档

于 2013-07-10T19:15:25.527 回答
0

替换: PrepSQL($AdminChanges);

与:打印 PrepSQL($AdminChanges);

于 2013-07-10T19:14:46.223 回答
0

尝试这个:

<form action = "<?php echo PrepSQL($AdminChanges); ?>"  method="post">

您需要回显该值。

于 2013-07-10T19:14:59.077 回答
0

我注意到有 2 个错误:

您的 $_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">
于 2013-07-10T19:12:26.780 回答