在体内有PHP问题

时间:2014-06-19 19:13:48

标签: php html login

目前我有一个PHP脚本作为登录系统工作,完全正常,我已成功连接到数据库,并能够在站点和数据库之间进行交互。

所以,问题。我在我的主login.PHP页面(包含实际表单)中使用了include函数来调用处理登录功能的脚本。我在body标签之间“包含”了这个内容,因为当您成功登录或失败时会弹出内容。现在问题实际上就出现了。

我需要在用户成功登录后添加会话,以便它可以在所有页面上运行。唯一可行的方法是,如果我将session_start()放在页面的最顶层。但我需要在body标签中的表单下显示内容。我很困惑我应该怎么做才能解决这个问题。有人会碰巧有任何想法吗?

以下代码位于login.php的正文标记中:

<?php

// DATABASE VARIABLES
$user_name = "";
$pass_word = "";
$database = "";
$server = "";

// CONNECTS TO DATABASE
$db_handle = mysql_connect($server, $user_name, $pass_word);
$db_found = mysql_select_db($database, $db_handle);

// ACCOUNT INFORMATION
$email;
$password;
$num_rows = 0;

// IF SUBMIT IS CLICKED
if (isset($_POST['submit'])) {

    // STORES INPUTS AS VARIABLES
    $email = $_POST['email'];
    $password = $_POST['password'];

    // REMOVES HARMFUL CODE
    $email = htmlspecialchars($email);
    $password = htmlspecialchars($password);

    if ($db_found) {

        /*
        // SUCCESS
        print '<div class="password-wrapper"><div class="password-match">';
        print '<li class="pass-match">Login Successful</li>';
        print '</div></div>';

        // FAILURE
        print '<div class="password-wrapper"><div class="password-match">';
        print '<li class="pass-nomatch">Email Already Exists</li>';
        print '</div></div>';
        */

        /*// REMOVES SQL INJECTION
        $email = quote_smart($email, $db_handle);
        $password = quote_smart($password, $db_handle);*/

        $SQL = "SELECT * FROM accounts WHERE email = '$email' AND password = '$password'";
        $result = mysql_query($SQL);
        $num_rows = mysql_num_rows($result);

        if ($num_rows > 0) {

            print '<div class="password-wrapper"><div class="password-match">';
            print '<li class="pass-match">Login Successful</li>';
            print '</div></div>';

            /*
            session_start();
            $_SESSION['login'] = "1";
            header("Location: page1.php");
            */

        }
        else {

            print '<div class="password-wrapper"><div class="password-match">';
            print '<li class="pass-nomatch">Invalid Credentials</li>';
            print '</div></div>';

            /*
            session_start();
            $_SESSION['login'] = '';
            */

        }

    }
    else {

    }

}
?>

1 个答案:

答案 0 :(得分:0)

您要包含php脚本,session_start()只需要调用一次,并且在父页面上。在login.php页面的最顶部放置session_start();

稍后在页面中调用PHP中的session_start不会有任何损害。