Enable WordPress Sessions

时间:2012-10-09 作者:Paul

我想知道为什么WordPress不支持会话,许多人声称将以下代码放入函数中。php可能不是一个好主意(它实际上对我有用,但也会返回php警告):

function cp_admin_init() {
if (!session_id())
session_start();
}

add_action(‘init’, ‘cp_admin_init’);
在WordPress中启用会话是个好主意吗?正确的方法是什么?

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

不工作的原因$_SESSIONS 在WP核心中:

WordPress对会话的处理是由内部负担的~/wp-includes/load.php.

负责重置$_SESSIONnullwp_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] );
        }
}
背后的想法是什么

评论中的@TomJNowell

结束

相关推荐

Multi-site User Sessions

我有一个客户想要创建几个WordPress站点,并在顶部使用一个“站点切换器”,有点像前面的。网我知道在WP 3中,您可以在同一个安装上创建多个博客,但如何让登录到一个博客的用户登录到WordPress安装中的所有博客?这可能吗?