登录表单不能正常工作

时间:2014-02-16 16:40:52

标签: php session

如果我想保护我的文件(页面),我使用以下代码:

<?php
    if( isset ($_SESSION['user']['name']) && $_SESSION['user']['ip'] == $_SERVER['REMOTE_ADDR']) { 
      echo''; 
    } else {
     header ("Location: index.php"); 
   }
?>

我在上面的每个案例中都将这段代码放在页面上。因此,如果您尚未登录,则会返回登录表单。 问题是,我不能真正使用会话,我不知道我是否会把它变成它应该是什么。 Class.users a如果有人能帮助我,我会非常高兴。记录的问题是他可能不使用会话......在这里我的会话:

<?php


if($_SERVER['REQUEST_METHOD']== 'POST') 
{
    //echo 'Request started';
    $username = $_POST['username']; 
    $password = $_POST['password'];


    $sth = $db->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
    $sth->bindParam(':username', $username);
    $sth->bindParam(':password', $password);
    $sth->execute();
    $total = $sth->rowCount();

    if($total == 1)
    {
        //echo 'Row found';
        $row = $sth->fetch();

        if($row['activated'] == 1)
        {
            //echo 'User is activated';
            $_SESSION['user']['name'] = $username;
            $_SESSION['user']['loggedin'] = true;
            $_SESSION['user']['id'] = $row['id'];
            $_SESSION['user']['timestamp'] = time();
            $_SESSION['user']['ip'] = $_SERVER['REMOTE_ADDR'];
            $_SESSION['user']['time'] = date('d/m/Y - H-m-s');
            header ("Location: ./home.php");  
            exit();
        }
        else
        {
            echo '<div id="login-form-alert"><div class="alert alert-warning"><h5>Uw account is niet actief. Contacteer aub de beheerder op het mail adres <a href="mailto:info@rallypodium.be">info@rallypodium.be</a><h5></div></div>';
        }
    }
    else
    {
        echo '<div id="login-form-alert"><div class="alert alert-danger"><h5>Uw wachtwoord of gebruikersnaam klopt niet.<h5></div></div>';
    }
}

?>

我在这里看了几个星期......谁能帮助我,是我的英雄!!

2 个答案:

答案 0 :(得分:1)

您在页面顶部缺少session_start()

<?php
    session_start();
    if( isset ($_SESSION['user']['name']) && $_SESSION['user']['ip'] == $_SERVER['REMOTE_ADDR']) { 
      echo''; 


<?php
    session_start();

if($_SERVER['REQUEST_METHOD']== 'POST') 
{

答案 1 :(得分:0)

将会话开始放在应该使用此会话的每个页面的第一行。

  session_start();

/* @var $_SERVER type */

//改为使用相同的(====)运算符

 if($_SERVER['REQUEST_METHOD'] === 'POST')
{

这里不要直接访问Superglobarl $ _POST数组,而是使用一些过滤器输入函数(例如filter_input();等等)

  /* @var $username type */
     $username = $_POST['username']; 
     $password = $_POST['password'];

       }