创建新用户时出现PHP会话错误

时间:2014-06-06 11:02:54

标签: php session login

我正在使用php / mysql创建一个服务,用户必须先注册才能使用它。

  1. 我有一个 index.php 文件,您可以在其中注册和登录。它在文档`

    的顶部有这个php会话检查
     <?php
        session_start();
        if(isset($_SESSION['id'])) 
        {
           header("location: foosball/");
           exit();
        }
        session_write_close();  
     ?>
    
  2. 然后我有 register.php 文件,我在新用户尝试注册时使用该文件。我在这里开始一个新的会话,但当我尝试访问受限区域 foosball / index.php

    时,此会话无法正常工作
    session_start();
    session_regenerate_id();
    setcookie(session_name('Foosball'),session_id(),time()+56*7*24*60*60);
    $_SESSION['id'] = $mysqli->insert_id;
    $_SESSION['firstname'] = $firstname;
    $_SESSION['lastname'] = $lastname;
    $_SESSION['email'] = $email;
    $_SESSION['company'] = $company;
    $_SESSION['state'] = $state;
    session_write_close();
    header('Location: foosball/');
    
  3. foosball / index.php 文件也会在顶部进行会话检查。

    <?php
      session_start();
    
      if(!isset($_SESSION['id'])) {
        header("location: ../index.php");
        exit();
       }
    ?>
    
  4. 问题是,当我注册并将用户数据添加到数据库时,我还想设置会话,并继续到foosball / index.php区域。但是会话无效,导致foosball / index.php页面上的会话检查将用户返回到index.php页面。但是,当我之后使用我的登录脚本登录并设置新会话时,一切都按预期工作。我真的希望你们能帮助我。

    由于 卡斯帕

1 个答案:

答案 0 :(得分:0)

您的脚本不起作用,因为用于在数据库中插入id的函数不返回任何内容,因此$_SESSION['id']将始终未设置您需要修改insert_id函数以返回某些内容,例如id您正尝试插入,并从脚本中调用它,将您要添加的ID传递给数据库。

实施例

$_SESSION['id'] = $mysqlObject->insert_id(mysql_real_escape_string($_GET['id']));

功能:

function insert_id($id){
    //Insert values is db
    //...
    return $id; //then return something to put into $_SESSION['id']
}