我无法弄清楚为什么没有设置这些会话。我的代码似乎与所有教程相同 - 并且堆栈溢出问题 - 但它不会设置会话。如果我在某个地方出错,请告诉我。
以下是基础知识:我有一个hmtl页面,其中包含一个向数据库添加电子邮件地址和密码的表单。插入到数据库之后,我正在尝试启动会话,然后将用户重定向到新页面并检查会话是否已设置。如果没有会话,用户将被重定向到受保护的页面。
这是运行数据库插入的代码,应该设置会话,但不是:
<?php
// connect to db manager
$link = mysql_connect("localhost", "root", "");
if (!$link) {die('Database Error: Could not connect: ' . mysql_error());}
// select db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
// username and password sent from form
$em = mysql_real_escape_string($_POST['email']);
$pw = mysql_real_escape_string($_POST['password']);
// MySQL Insert Statement
$insert = "INSERT INTO users (`email`, `password`) VALUES ('$em',AES_ENCRYPT('$pw','SecretKey'))";
// Perform Query
$execute = mysql_query($insert);
// if inserted, start session + variable, then redirect
if ($execute) {
session_start();
$_SESSION["signUp"];
echo '<script type="text/javascript">';
echo 'document.location.href = "../u/user.php";';
echo '</script>';
}
else{
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
mysql_close($link);
?>
这是受保护页面顶部的代码:
<?php
session_start();
if (empty($_SESSION['signUp'])){
echo "Session not set!";
// header("location:../index.php");
}
?>
我将重定向注释掉,以便我可以测试是否正在设置会话。每次我运行表单时,我都会被重定向到../u/user.php“;页面,我收到错误消息,说明会话没有设置。
答案 0 :(得分:3)
您好,您尚未为session
if ($execute) {
session_start();
$_SESSION["signUp"];// where is the value for this ????
// $_SESSION["signUp"] = true; or whatever you want
echo '<script type="text/javascript">';
echo 'document.location.href = "../u/user.php";';
echo '</script>';
}
也会在页面顶部开始观看
答案 1 :(得分:2)
您需要将值设置为$_SESSION['signUp']
,例如$_SESSION['signUp'] = true;
答案 2 :(得分:0)
您可以将empty
替换为isset