我开始在Windows Server 2008上使用php,并使用与MS SQL Server的数据连接。过去我在apache和mysql上做过。但现在我已经改变了,我的会话变量不再工作了。只有一个会话变量存储在服务器上的会话文件中。而我在多个文件上有多个会话变量。唯一存储的行如下:
if (!isset($_SESSION["language"])){$_SESSION["language"] =
substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);}
在我的文件中:
语言|s:2:"nl"
当我继续登录到我的应用程序时,我会存储以下会话变量:
$result = sqlsrv_query($conn,$sql,$params,$options);
$numrows = sqlsrv_num_rows($result);
$row = sqlsrv_fetch_array($result);
if ($numrows > 0) {
$_SESSION['loggedin']= TRUE;
$_SESSION['username']= $row['username'];
$_SESSION['name']= $row['firstname'].' '.$row['lastname'];
$_SESSION['language']= $row['language'];
//if ($row['admin'] == 1){$_SESSION['admin']= TRUE;}
//if ($row['all_orders'] == 1){$_SESSION['allorders']= TRUE;}
//if ($row['validate'] == 1){$_SESSION['validate'] = TRUE;}
echo 'Welcome '.strtoupper(trim($_SESSION['name'])); }
else {
echo 'Login niet correct '.$username.' '.$password; };
但是在文件中我找不到这些会话变量。它们没有存储在任何地方,所以我不能在其他页面上调用它们。任何人都有主意。
session_start();//session_start — Start new or resume existing session
$result = sqlsrv_query($conn,$sql,$params,$options);
$numrows = sqlsrv_num_rows($result);
$row = sqlsrv_fetch_array($result);
if ($numrows > 0) {
$_SESSION['loggedin']= TRUE;
$_SESSION['username']= $row['username'];
$_SESSION['name']= $row['firstname'].' '.$row['lastname'];
$_SESSION['language']= $row['language'];
//if ($row['admin'] == 1){$_SESSION['admin']= TRUE;}
//if ($row['all_orders'] == 1){$_SESSION['allorders']= TRUE;}
//if ($row['validate'] == 1){$_SESSION['validate'] = TRUE;}
echo 'Welcome '.strtoupper(trim($_SESSION['name'])); }
else {
echo 'Login niet correct '.$username.' '.$password; };
如果您得到if($numrows>0){return TRUE;},那么它一定是由于session_start();您无法存储会话值。