php從5.2.x升級到5.3.2.出來問題了。有些原來能用的程序報錯了。
報錯內容是
Deprecated: Function session_register() is deprecated
查了一下是5.3這個session_register就不讓用了,降回去?不爽。
搜了一把,有個解決方法是寫一個函數
復制代碼 代碼如下:
<?php
// Fix for removed Session functions
function fix_session_register(){
function session_register(){
$args = func_get_args();
foreach ($args as $key){
$_SESSION[$key]=$GLOBALS[$key];
}
}
function session_is_registered($key){
return isset($_SESSION[$key]);
}
function session_unregister($key){
unset($_SESSION[$key]);
}
}
if (!function_exists('session_register')) fix_session_register();
?>
查了一下出現這個問題的地方不多,找到了另外一個方法,直接
把
session_register( “abc” ) ;
改成
$_SESSION['abc'] = null;
即可
session在php5.3中的變化
在php5.3中運行書中代碼會有如下提示:
Function session_is_registered() is deprecated in
Function session_register() is deprecated in
意思是說這兩個函數是不贊成的,棄用的。
下面是php官方手冊上的代碼,注釋部分已經說明了不贊成用session_register()
復制代碼 代碼如下:
<?php
// Use of session_register() is deprecated 不贊成用session_register()
$barney = "A big purple dinosaur.";
session_register("barney");
// Use of $_SESSION is preferred, as of PHP 4.1.0 首選 $_SESSION
$_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.";
?>
並且有如下警告及提示:
Warning
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.
警告:這個函數在php5.3中已不推薦使用,在php5.4中已被移除。
Note:
If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use isset() to check a variable is registered in $_SESSION.
提示:如果 使用了$_SESSION,就用isset()函數來檢查。
Caution
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister().