会话变量和受保护的页面错误

时间:2014-03-17 18:59:03

标签: php sql session cookies

我目前有一个登录表单,如果登录成功,会将用户重定向到另一个页面。该页面应该是受保护的页面,如果用户未登录则无法为用户打开,并将其重定向到登录表单页面。

为了做到这一点,我将登录数据(电子邮件和密码)存储为会话变量,并使用它们来验证是否允许用户查看该页面。

在我的登录php页面中,我有以下代码

<?php
    session_start();
    if ($count == 1) {
      $_SESSION['logged'] = 1;
      $_SESSION['email'] = $myemail;
      $_SESSION['password'] = $mypassword;
      header("Location: account.html");
      exit();
    }
?>

我用以下内容开始我的帐户html文件:

<?php
    session_start();
    if ($_SESSION['logged'] != 1) { //no session
        header("Location:memberlogin.html");
        exit();
    }
?>

但是,无论何时加载帐户页面,我都可以每次查看。这是我第一次使用Session变量,我不确定我是否正确使用它。

已修复感谢以下建议

我调整了下面建议的代码,我的受保护页面正在运行。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

不会从html页面引用php代码。 因此,将account.html更改为account.php,然后在页面顶部添加会话检查代码,如下所示:

account.php:

  <?php
  if ($_SESSION ['logged'] !=1) { 
  //User is not logged in
  header ("Location:memberlogin.html");
  exit();
  }
  ?>

但是,重定向不是最佳解决方案,如果用户未登录,您可以显示错误消息,否则授予用户访问页面信息的权限。 您可以按如下方式实现它:

account.php:

 <?php

  if ($_SESSION ['logged'] !=1) { 
  //User is not logged in, display an error message
  echo 'You need to be logged in to access this page';
  exit();
  }
   else{
   //Display all information that only a logged in user can view
   echo 'You are logged in, you can view the page';
       }

 ?>