php登录/注销为一页

时间:2016-05-17 10:34:15

标签: php

我尝试使用案例,转换和会话来执行一个页面管理面板。

我的代码是:

<?php
    if (isset($_SERVER['QUERY_STRING'])) {
        switch ($_SERVER['QUERY_STRING']) {
            case "logout":
                break;
            case "restpassword":
                break;
            // Default Page
            default:
                session_start();
                if (isset($_POST['username']) && isset($_POST['password']) && $_POST['username']) {
                    $username = $_POST['username'];
                    $password = $_POST['password'];
                    $userid = login($username, $password);

                    if ($userid != "0") {
                        //Correct username and password set session & redirect
                        if (isset($_SESSION['user_id'])) {
                            $userid = $_SESSION['user_id'];
                            $username = $_SESSION['username'];
                            echo "Welcome " . $username;
                        }
                        break;
                    } else {
                        $msg = "Incorrect username or password";
                    }
                }
                ?>
                <html>
                    <head>

                    </head>
                    <body>
                        <form method="post">
                            <?php
                                //Print error message
                                if (isset($msg)) {
                                    echo $msg;
                                }
                            ?>
                            <label>Username:</label>
                            <input name="username" type="text" required="true"/>
                            <label>Password :</label>
                            <input name="password" type="password" required="true"/>
                            <input type="submit" name="submit" value="Login" required="true"/>
                        </form>
                    </body>
                </html>
                <?php
                break;
        }
    }
?>

问题是,如果我进入页面,它不会保存任何会话,我不得不再次登录。

我该如何解决呢?这样安全吗?

非常感谢

2 个答案:

答案 0 :(得分:0)

将session_start()移动到页面的最顶部。 php开始标记后的第一行......

答案 1 :(得分:-1)

session_start()需要添加到页面顶部。我认为这会奏效。