PHP表单不重定向到正确的页面

时间:2013-07-10 19:08:58

标签: php html sql forms syntax

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

答案 0 :(得分: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()结果的详细信息,请参阅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">

你需要回应价值。