我正在使用php / mysql创建一个服务,用户必须先注册才能使用它。
我有一个 index.php 文件,您可以在其中注册和登录。它在文档`
的顶部有这个php会话检查 <?php
session_start();
if(isset($_SESSION['id']))
{
header("location: foosball/");
exit();
}
session_write_close();
?>
然后我有 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/');
foosball / index.php 文件也会在顶部进行会话检查。
<?php
session_start();
if(!isset($_SESSION['id'])) {
header("location: ../index.php");
exit();
}
?>
问题是,当我注册并将用户数据添加到数据库时,我还想设置会话,并继续到foosball / index.php区域。但是会话无效,导致foosball / index.php页面上的会话检查将用户返回到index.php页面。但是,当我之后使用我的登录脚本登录并设置新会话时,一切都按预期工作。我真的希望你们能帮助我。
由于 卡斯帕
答案 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']
}