我在我的网站上使用此验证码插件http://code.google.com/p/cool-php-captcha/,我在我的wamp服务器中使用了HTML表单,并将其提交到位于http://www.example.com/experiments/emaileasy/index.php
的我的活动服务器。现在问题是,会话返回空数组,当我在$ .ajax中提交表单时它没有检索,但是如果我直接访问浏览器中的url,我可以看到该值。我几乎不知道如何继续这个,
这是我的index.php文件,我提交表单
<?php
session_start();
print_r($_SESSION);die;
if(isset($_POST))
{
if (empty($_SESSION['captcha']) || trim(strtolower($_POST['captcha'])) != $_SESSION['captcha'])
{
header("HTTP/1.0 400 Bad Request");
header('Content-type: application/json');
die(json_encode(array('message' => 'Please recheck the captcha')));
}
try {
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('expo', $conn);
$status = mysql_query("INSERT INTO table SET content = '".mysql_real_escape_string($_POST['content'])."'");
header("HTTP/1.1 200 OK");
header('Content-type: application/json');
echo json_encode(array('message' => 'Success!'));
} catch (Exception $e) {
header("HTTP/1.0 400 Bad Request");
header('Content-type: application/json');
echo json_encode(array('message' => 'Failed'));
}
}
?>
这是我的JS文件,
$( "#Form" ).submit(function( event ) {
// Stop form from submitting normally
event.preventDefault();
var data = "content="+$( "#content" ).val()+"&captcha="+$( "#captcha" ).val();
$.ajax({
type: "POST",
url: baseurl+'experiments/emaileasy/index.php',
data: data
});
});
如果我将表单提交给localhost它正常工作,但是当我将其提交给实时服务器时,会话返回空数组。
这是我的.htaccess文件,
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers X-Requested-With
</IfModule>
请注意,会话是通过服务器上的cool-php-captcha
设置的。我还注意到的另一件事是,当加载验证码时,会创建一个会话文件,当我发布值时,会以PHPSESSID
的名义创建一个新的会话文件,传递AJAX请求(我通过Firebug注意到这一点)响应标题)。
我也获得了$_POST
值,但是当通过AJAX检索时,会话返回空数组。请帮忙。提前谢谢。