0

当用户访问我网站上的某个页面时,下面的脚本会运行一次。这完美地工作,但由于某种原因,在它运行一次后,会话被清除并设置为“0”。

会话名称是“user_zip”,这是以某种方式清除会话的代码。

$user_zip_query = "SELECT * FROM dev_cities WHERE city_zip = '".$_SESSION['user_zip']."'";
$user_zip = mysql_query($user_zip_query);
$userziprow = mysql_fetch_assoc($user_zip);
$state = $userziprow['city_state'];
$county = $userziprow['city_county'];
$city = $userziprow['city_name'];

知道是什么原因造成的吗?

会话在包含此代码的包含类文件中启动...

 public function __construct() {

        include_once("includes/userconfig.php");                  // include database constants        

        if ($this->checkDatabase()) {                   // check for database connection

            session_start();                            // create session
4

2 回答 2

1

您的代码在会话中有引号,引号也被取消会话的引号包围,将其更改为:

$uzip = $_SESSION['user_zip'];
//highly recommend use add SQL injecton prevention here how ever
$user_zip_query = mysql_query("SELECT * FROM dev_cities WHERE city_zip = '$uzip'") or die(mysql_error());

$row = mysql_fetch_assoc($user_zip_query);
$state = $row['city_state'];
$county = $row['city_county'];
$city = $row['city_name'];
于 2012-12-31T06:29:01.737 回答
1

使用 session 我们需要做的是

1 开始会话

   该session_start()函数必须出现在标签之前:

2 存储会话变量,如

    $_SESSION['bla']=blabla;

3 销毁会话

     要删除一些会话数据,您可以使用unset()session_destroy()功能。

好读

  1. 会话处理
  2. PHP 安全指南:会话

笔记

  1. 整个ext/mysqlPHP 扩展提供了所有以 mysql_ 为前缀的函数,从 PHP v5.5.0 开始正式弃用,并将在未来删除。所以使用PDO或者MySQLi

好读

  1. 不推荐使用 mysql 扩展并将在将来删除:请改用 mysqli 或 PDO
于 2012-12-31T06:37:09.520 回答