当用户访问我网站上的某个页面时,下面的脚本会运行一次。这完全有效,但由于某种原因,在运行一次后,会话被清除并设置为“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
答案 0 :(得分: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'];
答案 1 :(得分:1)
使用会话我们需要做的是
1开始会话
session_start()
函数必须出现在标记之前:
2存储会话变量,如
$_SESSION['bla']=blabla;
3销毁会话
要删除部分会话数据,您可以使用unset()
或session_destroy()
功能。
好读
注意
ext/mysql
PHP扩展程序(提供名为mysql_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDO
或MySQLi
好读