Maison > développement back-end > tutoriel php > javascript - 设置session会话失败?

javascript - 设置session会话失败?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2016-08-18 09:15:52
original
1466 Les gens l'ont consulté

用的一个图片上传插件:uploadify,由于在IE和火狐下上传302错误,我在前端传了当前会话名称session_name()给后台,重新建立会话,但是我做了如下,后台能收到session_name()的传参,但是重新建立会话的时候,就是不成功,请问如何解决?

前台:

1

2

3

4

5

6

7

<code>//这是uploadify插件向后端传送数据的参数

'formData'     : {

     'timestamp' : '<?php echo $timestamp;?>',

     'token'     : '<?php echo md5('unique_salt' . $timestamp);?>',

     '<?php echo session_name();?>' : '<?php echo session_id();?>',

     //上面的session参数渲染后是这样:'PHPSESSID':'',

            },</code>

Copier après la connexion
Copier après la connexion

后端:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code>//这是一个公共的控制器的初始化方法 里面验证登陆

function __construct() {

    parent::__construct();

    $session_name = session_name(); 

    $post_session_name = $this->input->post($session_name);

    if (isset($post_session_name)) { //测试过  可以进入这里

        session_id($post_session_name);  //但是在这个地方好想设置会话失败

        session_start();

    }

    if ( !$this->session->valid_user() ){ //因为设置会话失败 这里通不过 前端返回302

        redirect( module_url( 'common/login' ) );

    }

}

</code>

Copier après la connexion
Copier après la connexion

回复内容:

用的一个图片上传插件:uploadify,由于在IE和火狐下上传302错误,我在前端传了当前会话名称session_name()给后台,重新建立会话,但是我做了如下,后台能收到session_name()的传参,但是重新建立会话的时候,就是不成功,请问如何解决?

前台:

1

2

3

4

5

6

7

<code>//这是uploadify插件向后端传送数据的参数

'formData'     : {

     'timestamp' : '<?php echo $timestamp;?>',

     'token'     : '<?php echo md5('unique_salt' . $timestamp);?>',

     '<?php echo session_name();?>' : '<?php echo session_id();?>',

     //上面的session参数渲染后是这样:'PHPSESSID':'',

            },</code>

Copier après la connexion
Copier après la connexion

后端:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code>//这是一个公共的控制器的初始化方法 里面验证登陆

function __construct() {

    parent::__construct();

    $session_name = session_name(); 

    $post_session_name = $this->input->post($session_name);

    if (isset($post_session_name)) { //测试过  可以进入这里

        session_id($post_session_name);  //但是在这个地方好想设置会话失败

        session_start();

    }

    if ( !$this->session->valid_user() ){ //因为设置会话失败 这里通不过 前端返回302

        redirect( module_url( 'common/login' ) );

    }

}

</code>

Copier après la connexion
Copier après la connexion

看看日志有没有报错的信息呢?session_id 必须要在会话开始前设置,是不是在这个控制器的__construct()调用之前就已经有其他地方开启了session? 试试在session_id那行前面加个session_abort()呢?

默认是通过 cookie 存 session_id 你看看cookie有没有禁用或者清空

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal