会话在本地服务器上运行,但不在Web服务器上运行

时间:2017-10-30 作者:srdjan_stojanovic

我有一个会话问题,它在本地服务器上工作正常,但在服务器上不可见,项目在wordpress中,我必须设置wordpress的一些特殊功能吗?这是我的代码。。非常感谢你的回答。

session_start();
我用这个ID(我正在发送给服务器的ID)进行了一次会话,他正在会话中

    $user_id = $arr[\'id\'];
$_SESSION[\'user_id\'] = $user_id;    
$_SESSION[\'user_email\'] = $email;
if($user_id){
     $_SESSION[\'user_id\'] = $user_id;
在这个文件中,我需要从会话中获取该ID,但服务器没有看到它。但在本地服务器上,一切正常

    public static function save_account_details() {

    $user_id = $_SESSION[\'user_id\'];
    //var_dump($user_id);
    //die();

    if ( \'POST\' !== strtoupper( $_SERVER[\'REQUEST_METHOD\'] ) ) {
        return;
    }
    if ( empty( $_POST[\'action\'] ) || \'save_account_details\' !== $_POST[\'action\'] || empty( $_POST[\'_wpnonce\'] ) || ! wp_verify_nonce( $_POST[\'_wpnonce\'], \'save_account_details\' ) ) {
        return;
    }

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

您是在插件中还是在模板文件中执行此操作?

此外,您当然希望确保正确设置会话。我建议在函数中这样做。php。e、 g:

add_action(\'init\', \'track_sessions\', 1);
 function track_sessions() { // if session isn\'t active, set it
  if(!session_id()) {
    session_start();
   }
} 
并按原样使用它们:

$_SESSION[\'my_val\'] = $val;
完成后,您需要销毁会话:

add_action( \'your_action_here\', \'destroy_session\', 10, 5 );

 // All done. Destroy session

function destroy_session() {
   session_destroy();
}

结束