我无法让jQuery ajax识别会话。我正在从登录脚本创建一个php会话,但是发生的事情是,当ajax加载经过身份验证的页面时,会话始终未设置。例如,在安全页面中,如果我刷新页面,则会话ID每次都会更改。我有session_start();在每一页。有人能告诉我正确的方式来处理与Ajax和PHP会话吗?我花了2天时间,并且非常喜欢google,我可能会邀请到圣诞午餐:-)我已经包含了相关的代码,并且会很感激任何帮助。谢谢返回php会话到ajax
PS。如果它有什么不同,我正在尝试使用jquery mobile开发移动应用程序。
登录HTML JS
$(function() {
$("#kt_login1").click(function() {
var user = $('#user').val();
var pass = $('#pass').val();
if (user == '') {
$("#login_message").html('This field cannot be empty')
$('label[for=user]').addClass("label")
return false;
}
else if (pass == '') {
$("#login_message").html('This field cannot be empty')
$('label[for=pass]').addClass("label")
return false;
}
else $('label[for=user]').removeClass("label");
$('label[for=pass]').removeClass("label");
//alert(user + pass + ok);
data = 'user=' + user + '&pass=' + pass;
$.ajax({
type: "POST",
url: "testajax.php",
cache: false,
data: data,
success: function(data) {
if (data == 'authenticated') {
//alert(user);
document.location = 'secure.php';
}
else $('#login_message').html('You are not authorised');
//$(ok).val('Logged In');
//$("#login").get(0).reset();
//$("#form").dialog('close');
},
error: function(xhr, ajaxOptions, thrownError) {
jAlert('There was an exception thrown somewhere');
alert(xhr.status);
alert(thrownError);
}
});
return false;
});
});
testajax.php
<?php
// test wether the user session is already set
$username = mysql_real_escape_string($_POST['user']);
$pass = mysql_real_escape_string(md5($_POST['pass']));
mysql_connect('localhost', 'root', '');
mysql_select_db('sample');
//now validating the username and password
$sql="SELECT * FROM user_usr WHERE username_usr='$username' and password_usr='$pass'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
//if username exists
if(mysql_num_rows($result)>0) {
session_start();
$_SESSION['u_name']=$row['name_usr'];
/*
echo '<pre>';
print_r($_SESSION['u_name']);
print_r($_REQUEST);
echo '</pre>';
exit;
*/
echo 'authenticated';
}
else
{
echo 'Unknown User';
}
?>
+++++ SOLUTION从提交按钮和瞧+++++
更改的形式输入。一切ok
挡泥板,我只是更新了我的问题,说我已经包括在每一页上。谢谢 – bollo
@bollo:我看不出任何改变。你必须使用会话在每个页面上调用它,不管你是创建会话还是使用现有的会话 – Fender