2014-02-16 51 views
0

,我用这个代码:登录表单不做工精细

<?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:[email protected]">[email protected]</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>'; 
    } 
} 

?> 

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

+1

'我在这里看几个星期** **你是否认真?? ** –

回答

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') 
{ 
+0

不,这表明登录。它也必须位于其他页面上? – Advil

+0

您使用会话变量的每个页面必须在页面顶部有该功能 –

+0

是的,我的意思是,但是当我“销毁”会话时,您仍然可以访问该网站? 母猪我已经在该文件中创建了一个名为logout.php的文件,我有这样的代码: <?php session_destroy(); header(“Location:index.php”); ?> 如何在您访问网页后访问网页? – Advil

0

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

session_start(); 

/* @var $_SERVER type */ 

//使用相同的(====)运算符,而不是代替

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

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

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

     } 
+0

但是当我想退出时,我该怎么做? – Advil

+0

你的意思是你想要销毁会话。默认情况下,当用户关闭浏览器时会自动删除PHP会话,因为PHPSESSID cookie的expires字段被设置为零。您可以阅读php.net上的会话工作方式http://www.php.net/manual/en/function.session-start.php或http://webwidetutor.com/php/sessions-and-cookies/ – Mubo

+0

是的,我的意思是,但是当我'摧毁'会议,你仍然可以访问该网站? – Advil