设置php会话

时间:2016-07-13 01:35:38

标签: php session

我无法弄清楚为什么没有设置这些会话。我的代码似乎与所有教程相同 - 并且堆栈溢出问题 - 但它不会设置会话。如果我在某个地方出错,请告诉我。

以下是基础知识:我有一个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“;页面,我收到错误消息,说明会话没有设置。

3 个答案:

答案 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