2012-06-29 56 views
3

我試圖讓管理面板,我使用sessions,但有問題,會議無法正常工作,PHP - 會話不登記

的index.php

$r=mysql_fetch_array($result); 
$login=$r["login"]; 
session_register('login'); 
Header("Location: protected.php"); 

protected.php

<?php 
session_start(); 
if (!isset($_SESSION['login'])) { 
    echo "Not work"; 
} 
else{ 
    echo "Work"; 
} 
?> 

我不知道是什麼問題,因爲在index.php我註冊會話,但在protected.php這個會話沒有設置。

回答

6

請勿使用session_register()。它在PHP 5.4.0中被刪除。 在index.php文件,添加session_start();頂部和替換$_SESSION['login'] = 'val';

+0

什麼是$ _SESSION之間的不同[ '登錄']和$ _SESSION [ 「登錄」]? – Wizard

+1

沒有,你的情況。使用單引號意味着PHP不會分析文本中的變量,因此您可以執行諸如「hi $ foo」之類的操作,並保持字面意思。用雙引號,「hi $ foo」會變成hi,接着是$ foo的值。除此之外,更多細節請參見[手冊](http://php.net/manual/en/language.types.string.php)。 – Lusitanian

2

session_register()的使用已廢棄5.3.0和4.1.0以來一直沒有被推薦您的註冊電話。

相反,創建以相同的格式使用$_SESSION[]您引用它的會話變量:

$_SESSION['login'] = $r["login"]; 

利用這種方法消除了需要初始化$login變量從結果集中的登錄值直接設置到會話變量。

<?php // Use of session_register() is deprecated 
$barney = "A big purple dinosaur."; session_register("barney"); 

// Use of $_SESSION is preferred, as of PHP 4.1.0 
$_SESSION["zim"] = "An invader from another planet."; 

// The old way was to use $HTTP_SESSION_VARS 
$HTTP_SESSION_VARS["spongebob"] = "He's got square pants."; ?> 

此外,建議mysql_fetch_array不能使用,而是,應利用MySQLiPDO_MySQL擴展。