【发布时间】:2011-07-26 01:02:16
【问题描述】:
好的,我有以下一组页面。他们获取用户信息,并将它们放入 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获取用户输入并输入到会话变量中
<?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 检查会话中的 var 时,在调用 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);
}
?>
output['lastframe'] 和 currframe 分别等于 0 和 -1,无论您在前面的页面中实际输入了什么。但是会话[文件] 是正确的...
总结一下:
- 转到 input.php 并上传您的文件
- session['file'] 可用;
- 转到 input2.php
- session['currframe']、endframe 和格式正确
- 转到 control.php
- 所有会话变量都可用
- updateAjax.php 只能访问 session['file'],不能访问其他任何人
对我的问题可能有什么想法? 感谢您帮助我:),并询问您是否需要更多信息,很乐意提供帮助
【问题讨论】:
标签: php