2011-07-26 4 views
1

좋아, 다음 페이지가 있습니다. 그들은 사용자 정보를 받아서 php 세션 변수에 넣으므로 결국 ajax 가능 페이지에서 사용할 수 있습니다. 문제는 이러한 세션 바의 일부만 서버에서 사용할 수 있다는 것입니다. 여기 일부 세션 변수가 아약스 요청에서 사라짐

은 유동을하다

input.php => input2.php, 
input2.php => control.php, 
control.php calls ajax requests to updateAjax.php 

input2.php // 파일 이름을 취하고 세션에 둔다

<?php 
     session_start(); 
     header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
     header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
    ?> 
    <?php 
     $_SESSION = array(); 
     $_SESSION['file'] = $_FILES['file']['name']; 
     mkdir("/blend/". $_FILES['file']['name']); 
     mkdir("/blend/" . $_FILES['file']['name'] . "/frames"); 
     move_uploaded_file($_FILES["file"]["tmp_name"], "/blend/". $_SESSION['file'] . "/scene.blend"); 
    ?> 

control.php // 세션에 fourms 입력한다 그것을에서 사용자의 입력을 받아 vars

<?php 
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
    session_start(); 
    ?> 
    <?php 
     $_SESSION['endFrame'] = $_POST['frameEnd'] - 0; 
     $_SESSION['format'] = $_POST['format']; 
     $_SESSION['currFrame'] = $_POST['frameStart'] - 1; 
    ?> 

나는 var_dump를 사용하여 세션에서 vars를 검사 할 때 updateAjax.php가 c

updateAjax.php

 <?php 
     header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
     header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
     session_start(); 
     ?> 
     <?php 
      /*for blender internal render engine*/ 
      init(); 

      function init() { 
       sendInfo(); 
      } 

      function sendInfo() { 
       $output = array(); 
       $output['status'] = $_SESSION['file']; 
       $output['currFrame'] = $_SESSION['currFrame']; //Var is -1! 
       $output['lastFrame'] = $_SESSION['endFrame']; //var is 0! 
       echo json_encode($output); 
      } 
    ?> 

출력 [ 'lastframe']와 currframe가 0이고를 alled -1 각각 상관없이 acually 이전 페이지에 넣어없는 것을. 세션 [파일] 그러나

모든 것을 정리해 ... 올바른 :

  1. 이동이 input.php하고 파일을 업로드
  2. 세션 [ '파일']를 사용할 수;
  3. 세션을 input2.php로 이동 [ 'currframe'], EndFrame에, 및 형식은
  4. 모든 세션 바르 control.php로 이동
  5. updateAjax.php 할 수있는 전용 액세스 세션을 사용할 수 있습니다
  6. 올바른지 [ 'file'], 다른 사람이 아니십니까

내 아이디어는 무엇입니까? 당신이 더 많은 정보를 필요로하는 경우 : 저를 도와 주셔서 감사합니다, 그리고 당신은 session_start()를 호출하기 전에 헤더를 보낼 수 없습니다, control.phpupdateAjax.php에서

답변

0

을 기꺼이 도와 병, 부탁드립니다. 다음의 순서를 뒤집으십시오 :

<?php 
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
session_start(); 
?> 

// Should be 
<?php 
session_start(); 
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
?> 

PHP는 이것에 대한 경고를 발행해야합니다. 웹 서버 오류 로그를 확인하십시오.

+0

조언을 주셔서 감사합니다 : –

+0

그것은 여전히 ​​내 주요 문제를 해결하지 않았다 :( –

관련 문제