2013-07-05 2 views
0

я бегу последовал тест, чтобы проверить мой код работает правильно:

локон -L -i -X ​​POST -d 'JSon = { "OrderBy": 0, "maxResults": 50} http://mysite.com/ctlClient/

Я называю: http://mysite.com/ctlClient/index.php:

 session_unset(); 
     session_start(); 

     //pass data to _SESSION 
     foreach($_POST as $key => $value){ 
      $_SESSION[$key] = $value; 
     } 
     // redirect to `/fwf/online/index.php` 
     ctlGotoSameDomain("/fwf/online/"); 

После редиректа, я называю /fwf/online/index.php:

<?php 

session_start(); 

.... 

class fwfOnline { 


    public function __construct() { 

     msqLogFile('test/test_max',$_SESSION); 

     // here is my problem, $_SESSION is empty, :(

     $this->json = isset($_SESSION['json']) ? $_SESSION['json'] : null; 
     global $gConfig; 
     if ($gConfig['soapDebug']) 
      msqLogFile("fwf/post", Array('post' => 'Request: '.$this->json)); 
     $this->response = $this->getResponse(); 
     echo $this->response; 
    } 

.... 

В журналах от mysite.com/ctlClient/index.php Я вижу, что $ _SESSION имеет данные , но в /fwf/online/index.php его пустым.

Может кто-нибудь сказать мне, что я пропустил?

Спасибо,

[EDIT] От @ rr-

Я печатались как идентификаторы сессий и получил разницу:

"2013-07-05 09:44:31","Session ID: ihpfs1skrp792gncgancb02516" 
"2013-07-05 09:44:31","Session ID: tp6ejtl1tj9bigrgsi3jt6h9a1" 

почему его произошло?

[FIX]

Привет @rr- ответ я нашел проблему,

Мне нужно добавить -b в мой сценарий, чтобы включить куки. CURL по умолчанию не использует их, и эта проблема вызвала проблему с идентификатором сеанса.

Спасибо rr-

+0

Вы "session_start" на переадресации на страницу? – Paul

+0

Вы действительно перенаправляетесь на тот же домен (без 'www.domain.com' против' domain.com')? –

+0

@Paul Да, я пытался добавить его, но все равно не работает.Я отредактировал сообщение mt –

ответ

1

Убедитесь, что вы начали сессию в целевой странице: /fwf/online/index.php.

Вы также можете проверить возвращаемое значение session_id() на обеих страницах. Значение должно быть таким же, если это не так, даже если вы назвали session_start на обеих страницах, это может означать три вещи:

  1. Либо вы звоните session_write_close, который эффективно приводит к созданию новых сеансов и забывает все предыдущие данные ,
  2. PHP не может получить доступ к каталогу, в котором он должен хранить данные сеанса на сервере (это происходит!),
  3. ... или у пользователя отключены куки-файлы, что делает его браузер неспособным сохранить идентификатор сеанса.

Я думаю, что третий вариант, скорее всего, является причиной проблемы.

+0

Я напечатал оба идентификатора сеанса и получил разные имена: «Идентификатор сеанса: ihpfs1skrp792gncgancb02516» «Идентификатор сессии: tp6ejtl1tj9bigrgsi3jt6h9a1» –

+0

Я отредактировал ответ в соответствии с этой информацией. –

+0

Да, от клиентов Android это работает, но из моего скрипта - нет, может быть, в проблемах с cookie –

Смежные вопросы