好的,我有以下几页。它们获取用户信息,并将它们放入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 //从4ms获取用户输入并将其输入会话变量
<?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来检查会话中的变量时,在调用updateAjax.php之前一切都很好
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和-1,无论你在前几页中实际放入什么。会话[文件]但是正确...
总结一下:
我的问题可能是什么想法? 感谢您帮助我:),并询问您是否需要更多信息,感到很乐意提供帮助
答案 0 :(得分:0)
在control.php
和updateAjax.php
中,您无法在致电session_start()
之前发送标头。颠倒这些的顺序:
<?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应该发出警告。检查Web服务器错误日志。