【问题标题】:PHP Session ending automaticallyPHP 会话自动结束
【发布时间】:2013-09-07 20:20:33
【问题描述】:

我使用 PHP 框架做了很多工作,但我现在正在从头开始构建一个简单的登录系统,但我很难过。我正在使用 PDO 进行数据库查询。我有一个简单的登录表单,它使用 $_SERVER['PHP_SELF'] 指向同一页面。然后我有这个代码......

<?php
//LOG IN
if($_POST['login_submit']){
  $username = $_POST['username'];
  $password = $_POST['password'];
  //Query
  $database->query("SELECT * FROM users WHERE username = :username AND password = :password");
  $database->bind(':username',$username);
  $database->bind(':password',$password);
  $rows = $database->resultset();
  $count = count($rows);
  if($count > 0){
    session_start();
    //Assign session variables
    $_SESSION['username']   = $username;
    $_SESSION['password']   = $password;
    $_SESSION['logged_in']  = 1;
} else {
   $login_msg[] = 'Sorry, that login does not work';
}
}

当我登录时,它很好。它开始会话。但是,一旦我转到另一个页面,会话就会中断。我怀疑可能导致 session_start() 处于 if($_POST['login_submit']) 条件。但我可以发誓我以前做过这样的事情。任何帮助都会很棒..谢谢!

【问题讨论】:

  • 为什么要在条件中包含session_start()
  • 问题可能出在出现损坏的其他页面上。听起来您不是在每个页面上都开始会话。
  • session_start(); 需要位于所有使用的文件的顶部(大部分时间)。不使用会破坏你的代码。

标签: php session login


【解决方案1】:

代码的第一行...

if($_POST['login_submit']){

仅当您提交登录表单时,会话才会开始。

而且,在所有其他页面上,您必须调用 session_start() ...

【讨论】:

    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    相关资源
    最近更新 更多