PHP:在没有MySQL的情况下创建一个简单的日志形式


PHP: Create a simple log in form without MySQL

我正试图处理一个简单的登录表单,这只是为了好玩。内容并不敏感,但我正在努力学习SESSION等。我创建了这个简单的登录表单,它运行良好,但如果用户单击"home"按钮,即href'dprocess_login.php,则会要求他们再次登录。我正试图将usernamepassword保存在SESSION中,这样,如果他们登录并从任何页面点击home,它都会记住他们的登录信息,而不会要求他们继续登录。

我有一个form.php脚本,它使用POST方法,有两个textfields,用户名和密码在process_login.php中保存为"admin",如果它们与表单中的POST indices匹配,那么我将包括content.php。在process_login.php中,我获取POST数据并像这样运行:

SESSION_start();
//var_dump($_POST);
$match_username = 'admin' ;
$match_password = 'admin';
if(isset($_POST['submit'])){
    $username = $_POST['username'];
    $password = $_POST['password'];
    if($username == $match_username && $password == $match_password ){
        include 'content.php';
    }elseif($username == "" || $password != $match_password){
        echo "Please try again.";
    }
    if(!isset($_SESSION["logged_in"])){
        //Run if not set
        $_SESSION["logged_in"] = array(1 => array($username => $_POST['username'], $password => $_POST['password']));
    };
};

您将在上面看到,我正在尝试设置SESSION信息,但我知道我做得不对。一旦用户登录,一切都正常。但是,如果同一用户从另一个页面点击"主页",它会告诉他们"Please try again.",我想让用户在登录后保持登录状态。

感谢所有的建议。非常感谢。

您的$_SESSION["logged_in"]测试不应在if(isset($_POST['submit']))块内。

if (isset($_SESSION['logged_in'])) {
    include 'content.php';
    exit();
}
if (isset($_POST['submit'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    if($username == $match_username && $password == $match_password ){
        $_SESSION["logged_in"] = array('username' => $_POST['username'], 'password => $_POST['password']);
        include 'content.php';
        exit();
} elseif($username == "" || $password != $match_password){
    echo "Please try again.";
}
// Put login form here

我更改了您的$_SESSION["logged_in"]变量。现在它只是一个一维数组,而不是二维数组,键是单词usernamepassword——在那里使用变量作为键没有多大意义。