不工作的原因$_SESSIONS
在WP核心中:
WordPress对会话的处理是由内部负担的
~/wp-includes/load.php
.
负责重置$_SESSION
到null
是wp_unregister_GLOBALS()
. 所以如果你真的需要它,你必须register_globals
在你的php.ini
文件
/**
* Turn register globals off.
*
* @access private
* @since 2.1.0
* @return null Will return null if register_globals PHP directive was disabled
*/
function wp_unregister_GLOBALS() {
if ( !ini_get( \'register_globals\' ) )
return;
if ( isset( $_REQUEST[\'GLOBALS\'] ) )
die( \'GLOBALS overwrite attempt detected\' );
// Variables that shouldn\'t be unset
$no_unset = array( \'GLOBALS\', \'_GET\', \'_POST\', \'_COOKIE\', \'_REQUEST\', \'_SERVER\', \'_ENV\', \'_FILES\', \'table_prefix\' );
$input = array_merge( $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset( $_SESSION ) && is_array( $_SESSION ) ? $_SESSION : array() );
foreach ( $input as $k => $v )
if ( !in_array( $k, $no_unset ) && isset( $GLOBALS[$k] ) ) {
$GLOBALS[$k] = null;
unset( $GLOBALS[$k] );
}
}
背后的想法是什么同样值得注意的是,从技术上讲,没有真正的会话需要,总是有其他途径。会话依赖于会话ID来验证并提供连续性,但这些会话可以被截获/预测/窃取,此时有人可以冒充您
评论中的@TomJNowell