2015-03-04 2 views
0

Я использую следующий код Ajax для входа пользователя, передавая данные формы, введенные на мою страницу validate_login.php:данные эхо-сессии в ajax?

<script type="text/javascript"> 
$(document).ready(function() { 
$(document).on('click', '#submit', function() { 
var myusername = $("#myusername").val(); 
var mypassword = $("#mypassword").val(); 
if (myusername == null || myusername == "" || mypassword == null || mypassword == "") { 
if (myusername == null || myusername == "") { document.forms["form"]["myusername"].style.border = "2px solid #963634";} 
if (mypassword == null || mypassword == "") { document.forms["form"]["mypassword"].style.border = "2px solid #963634";} 
$(".home_column").effect("shake"); 
} else { 
// Returns successful data submission message when the entered information is stored in database. 
$.post("include/validate_login.php", { 
username1: myusername, 
password1: mypassword 
}, function(data) { 
if(data == 'login_wrong') { 
$(".home_column").flip({ 
    direction:'lr', 
     color: 'rgba(138, 138, 138, 0.2)', 
      content:'<h21>Incorrect Login Details</h21>' 
}) 
setTimeout(
    function() 
    { 
    $(".home_column").revertFlip() 
    }, 2500); }else{ 
    if(data == 'login_success') { 
    $(".home_column").flip({ 
    direction:'lr', 
     color: 'rgba(138, 138, 138, 0.2)', 
      content:'<h21>Hello <? echo $_SESSION['username']; ?></h21><br/><br/><h21>Login In...</h21>' 
}) 
setTimeout(
    function() 
    { 
    window.location = 'dashboard.php'; 
    }, 2500); 

    } } 
$('#form')[0].reset(); // To reset form fields 
}); 
} 
}); 
}); 

</script> 

Я хочу обратить ваше внимание на эту часть моего кода:

if(data == 'login_success') { 
     $(".home_column").flip({ 
     direction:'lr', 
      color: 'rgba(138, 138, 138, 0.2)', 
       content:'<h21>Hello <? echo $_SESSION['username']; ?></h21><br/><br/><h21>Login In...</h21>' 
    }) 

то, что я делаю, передает данные формы на мою php-страницу validate_login.php, это запускает запрос MySQL, чтобы проверить, совпадают ли имя пользователя и пароль. Если они это сделают, то login_success будет эхом, и это значение будет передано обратно на мой сценарий ajax в качестве данных. Это все работает нормально, пользователь вошел в систему, и он должен повторить имя пользователя, чтобы сказать «Hello Mark Login In ...»

Я пытаюсь сделать это, используя сеанс, который является именем пользователя, и я определить это в моей validate_login.php странице здесь:

session_start(); 

$query = "SELECT * FROM $tbl_name WHERE user_name = '$username' UNION 
SELECT * FROM $tbl_name2 where user_name = '$username'"; 
$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_assoc($result); 

$hashed_pass = crypt($password, $Blowfish_Pre . $row['salt'] . $Blowfish_End); 

if(mysql_num_rows($result) > 0) { // Check Username Exists 

if($hashed_pass === $row['user_password_hash']) { // Check Password is valid 
$_SESSION['id']=$row['user_id'];  //Start User Session 
$_SESSION['user']=$username; 
$_SESSION['username']=$row['user_first_name']; 
$_SESSION['username2']=$row['user_last_name']; 
$_SESSION['allowance']=$row['allowance']; 
$_SESSION['privelleges']=$row['privelleges']; 
$sql2 = mysql_query("UPDATE $tbl_name2 SET user_failed_logins = '0', user_status = 'online' WHERE user_name = '".$username."'"); 
$result2=mysql_query($sql2); 
$sql3 = mysql_query("UPDATE $tbl_name SET user_failed_logins = '0', user_status = 'online' WHERE user_name = '".$username."'"); 
$result3=mysql_query($sql2); //Start User Session 

echo "login_success"; 

по какой-то причине, название будет только иногда будет отображаться, а затем в других случаях это не будет. Я бы сказал, что это 50/50.

Есть ли причина для этого? Может кто-нибудь покажет мне, что я делаю неправильно?

Спасибо,

+0

PHP-код выполняется на сервере. Итак, если $ _SESSIOn пуст, это все равно так после вашего ajax-вызова (потому что он был отправлен клиенту перед вызовом, когда исходная страница была передана). – Burki

+0

Еще один подсказку, хотя не относится к теме: функции mysql_ * устарели. Настоятельно рекомендуется не использовать их. – Burki

+0

@Burki благодарит вас за ваши комментарии, есть ли способ вокруг этого? –

ответ

0

перейдет на страницу уже в браузере клиента к тому времени вы называете Ajax для входа пользователя. измените обратный вызов функции $ .post, чтобы вернуть данные пользователя с сервера и использовать jQuery для изменения содержимого home_column.

Смежные вопросы