【问题标题】:Session Variables and protected page errors会话变量和受保护的页面错误
【发布时间】:2014-03-17 18:59:03
【问题描述】:

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

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

在我的登录 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 变量,我不确定我是否正确使用它。

FIXED 感谢以下建议

我调整了下面建议的代码,我的受保护页面现在可以工作了。感谢大家的帮助。

【问题讨论】:

  • 不要在会话中存储密码。你永远不需要它。
  • 我没有看到session_start()anyhwere
  • 无法从 html 页面引用 php 代码。先将account.html 更改为account.php
  • @JohnConde session_start() 遗漏的是复制粘贴错误。我已经编辑了代码。
  • @mutiemule 感谢您的信息。

标签: php sql session cookies


【解决方案1】:

不会从 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';
       }

 ?>

【讨论】:

  • 忘记了什么?提示:session_start()
  • @mutiemule 感谢您的建议。我调整了您建议的代码,我的页面现在可以正常工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 2016-03-08
  • 2011-08-02
  • 2014-08-24
  • 2010-09-17
  • 1970-01-01
相关资源
最近更新 更多