打开新的php页面

时间:2014-09-23 00:40:08

标签: php html input

我正在创建一个有登录页面的网站。用户必须输入他们的用户和密码,如果信息正确,网站应该打开/显示包含一些信息的新网站。现在我被困在网站将显示另一个页面的部分,这里是我使用的表格(login.php)

    <form method="POST" action="home.php" autocomplete="off">
        <input name="user" id="fields" type="text" placeholder="user" required><br/>
        <input name="password" id="fields" type="password" placeholder="password" required></br>
        <input id="button" type="submit" value="OK"></center>
    </form>
</div>
<?php
    $user=$_POST["user"];
    $password=$_POST["password"];
    if($user=="user"&&$password=="password"){  //dummy user & psswd
        echo "<script type='text/javascript'><!--window.location = 'reports_home.php'//--></script>";
    }
    else{
        echo "<center> <p style='color:red';>".ERROR."</center>";
    }

?>

当我运行login.php时,一切都很好,但是如果在字段中输入任何名称或文本并点击提交,则home.php文件将打开。但是,如果删除action="reports_home.php(并移除"<script type=部分),该页面将验证输入,但不会打开新网站。

任何可以向我解释为什么会发生这种情况或者应该如何编码的人? 如果你有更多信息,请告诉我。

3 个答案:

答案 0 :(得分:1)

删除保留在同一页面上的操作:

<?php
if ( isset($_POST) && !empty($_POST) ) {
    $user = $_POST["user"];
    $password = $_POST["password"];
    if ( $user == "user" && $password == "password" ){  //dummy user & psswd
        header("Location: http://example.com/reports_home.php"); 
    }
    else{
        $message = ERROR;
    }
}
?>
<form method="POST" action="" autocomplete="off">
        <input name="user" id="fields" type="text" placeholder="user" required><br/>
        <input name="password" id="fields" type="password" placeholder="password" required></br>
        <input type="submit" id="button" value="OK"></center>
    </form>
</div>

<?php if ( isset($message) ): ?>
    <center> <p style='color:red';><?php echo $message; ?></center>
<?php endif; ?>
编辑:我在本地尝试过,它有效。打开前检查空间

<?php 

。如果它不起作用,则显示所有错误以进行调试。

答案 1 :(得分:1)

在这里,试一试,看看关于密码存储的脚注。

旁注:action="home.php"已更改为action="",因为它在同一文件中执行。

您可以使用header()ob_start()重定向成功。

否则你会收到类似的警告:

  

警告:无法修改标头信息 - 已经发送的标头(在/ file.php处开始输出)...

<强>代码:

<?php

ob_start();

?>

<div>
<form method="POST" action="" autocomplete="off">
        <input name="user" id="fields" type="text" placeholder="user" required><br/>
        <input name="password" id="fields" type="password" placeholder="password" required></br>
        <input id="button" name="submit" type="submit" value="OK"></center>
    </form>
</div>
<?php

if(isset($_POST['submit'])){
    $user=$_POST["user"];
    $password=$_POST["password"];
    if($user=="user" && $password=="password"){  //dummy user & psswd

         // change this to your URL
         header("Location: http://www.example.com/success.php");

    }
    else{
        echo "<center> <p style='color:red';>".ERROR."</center>";
    }

}

?>

或者,您可以将PHP放在HTML表单的顶部,而无需ob_start()

<?php

if(isset($_POST['submit'])){
    $user=$_POST["user"];
    $password=$_POST["password"];
    if($user=="user" && $password=="password"){  //dummy user & psswd

      header("Location: http://www.example.com/success.php");

    }
    else{
        echo "<center> <p style='color:red';>".ERROR."</center>";
    }

}

?>

<div>
<form method="POST" action="" autocomplete="off">
        <input name="user" id="fields" type="text" placeholder="user" required><br/>
        <input name="password" id="fields" type="password" placeholder="password" required></br>
        <input id="button" name="submit" type="submit" value="OK"></center>
    </form>
</div>

脚注

密码存储

我注意到您可能以纯文本格式存储密码。不建议这样做。

使用以下其中一项:

其他链接:

答案 2 :(得分:0)

从操作中删除home.php位,并使用位置替换脚本部分和php标头调用,这将是

header('Location: http://example.com/reports_home.php');

http://php.net/manual/en/function.header.php