jQuery 아약스가 세션을 인식하는 데 문제가 있습니다. 로그인 스크립트에서 PHP 세션을 만들지 만, Ajax가 인증 된 페이지를로드하면 세션은 항상 설정 해제됩니다. 예를 들어 보안 페이지에서 페이지를 새로 고침하면 매번 세션 ID가 변경됩니다. 나는 session_start(); 각 페이지에. 누군가가 나를 아약스와 PHP 세션을 처리하는 올바른 방법을 보여주십시오 수 있습니까? 나는 2 일을 보냈고 Google을 너무 많이 사용했다. 아마 거기에 크리스마스 점심을 초대 할 것이다 :-) 나는 관련 코드를 포함 시켰고 어떤 도움에 대해서도 감사 할 것이다. 감사합니다아약스로 PHP 세션을 반환 중
추신. 차이가 있다면 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. 모든 확인
펜더, 나는 각 페이지에 포함되었다고 말할 수 있도록 제 질문을 업데이트했습니다. 고마워요 – bollo
@ 볼보 : 나는 변화를 볼 수 없습니다. 당신은 세션을 사용하여 각 페이지에서 전화해야합니다. 세션을 만들거나 기존의 것을 사용 하든지 상관없이 – Fender