php重定向到另一个页面的麻烦

时间:2016-03-31 01:24:03

标签: php

我很难将标题从登录页面重定向到index.html。我不确定标题是否可行但是我可以在页面重定向上找到它。

此代码只是一个简单的登录页面,用于检查MySQL数据库的用户名和密码。

我遇到的问题是在if语句中:

 if(mysqli_num_rows($res) == 1){
        header("Location: index.php");
        exit();
 }

login.php的完整代码:

<?php 
        //Connects to MySQL database using sql_connect.php
        require "sql_connect.php";
     ?>

    <?php 
        if(isset($_POST['username'])) {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $sql = "SELECT * FROM login_test WHERE username='".$username."' AND password='".$password."' LIMIT 1";
            $res = mysqli_query($connection, $sql);
            if(mysqli_num_rows($res) == 1){
                header("Location: index.php");
                exit();
            } else {
                echo "Invalid login information!";
                exit();
            }
        }
     ?>

    <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>login</title>
            <link rel="stylesheet" href="../style.css">
        </head>
        <body>
            <form name="login" method="post" action="login.php">
                <h3>Login</h3>
                <p>Username: </p><input type="text"name="username">
                <p>Password: </p><input type="password" name="password">
                <br/>
                <input type="submit"name="submit"value="log in">
            </form>
            <script src="../script.js" type="text/javascript"></script>
        </body>
    </html>

虽然我确定我的其余代码远非完美,但我真正关注的是如果用户在数据库中进行身份验证后如何重定向到新页面?在我的情况下,有没有比标题更好的选择,或者我只是错误地实现了它?

2 个答案:

答案 0 :(得分:1)

之前我使用过php标题,但经验不佳 通常我使用javascript

 echo '<script type="text/javascript">' . "\n";
if(isset($from))
 {
    echo 'window.location="..";';
 }
 else
 {
    echo 'window.location="..";';
 }
 echo '</script>';

答案 1 :(得分:0)

header()函数运行不正常可能导致您的“mysqli_num_rows($ res)== 1”结果为false。

“位置”与您的“index.php”之间没有空格,如: 标题( “位置:的index.php”);

或者你可以创建一个php函数并使用JavaScript,这是避免这种情况的好方法。

function redirect($url, $prompt) {
    $js_string = "<script>";
    $js_string .= $prompt ? "alert('". $prompt ."');" : "";
    $js_string .= "window.location = '{$url}';";
    $js_string .= "</script>";
    exit($js_string);
}