Сессии PHP не устанавливаются - PullRequest
       0

Сессии PHP не устанавливаются

7 голосов
/ 17 сентября 2011

У меня есть код, который входит в систему через AJAX, а затем передает данные в файл .php, чтобы проверить их на соответствие SQL.для теста имя пользователя и пароль - это я, однако, несмотря на то, что это возвращается из проверки, оно не регистрирует меня, кажется, что сеанс не устанавливается.

log.php

<script type="text/javascript">
$(document).ready(function()
{
$("#login_form").submit(function()
{
    //remove all the class add the messagebox classes and start fading
                $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000);
    //check the username exists or not from ajax
    $.post("ejaxlog.php",{    username:$('#username').val(),password:$('#password').val(),rand:Math.random() } ,function(data)
    {
      if($.trim(data)=='yes') //if correct login detail
      {
        $("#msgbox").fadeTo(200,0.1,function()  //start fading the messagebox
        { 
          //add message and change the class of the box and start fading
          $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900,1,
          function()
          { 
             //redirect to secure page
             document.location='http://www.google.com';
          });

        });
      }
      else 
      {
        $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
        { 
          //add message and change the class of the box and start fading
          $(this).html('Your login detail   sucks...').addClass('messageboxerror').fadeTo(900,1);
        });     
      }

    });
    return false; //not to post the  form physically
});
//now call the ajax also focus move from 
$("#password").blur(function()
{
    $("#login_form").trigger('submit');
});
   });
  </script>

  <link type="text/css" href="formboxes.css" rel="stylesheet">

  </head>

  <body>
   <?
  echo $_SESSION['u_name'];?>
  <form method="post" action="" id="login_form">
 <div align="center">

 <div >
  User Name : <input name="username" type="text" id="username" value="" maxlength="20" />

 </div>
 <div style="margin-top:5px" >
  Password :
  &nbsp;&nbsp;
 <input name="password" type="password" id="password" value="" maxlength="20" />

 </div>
 <div class="buttondiv">
 <input name="Submit" type="submit" id="submit" value="Login" style="margin-left:-10px; height:23px"  /> <span id="msgbox" style="display:none"></span>

</div>

  </div>
</form>

это затем проверяет MySQL через следующий код, успешно ли оно выдает «да», которое я вижу в моих заголовках HTTP (так должно быть правильно), но это не перенаправляет меня на «eindex.php»"как указано в файле log.php.

 <?php
session_start();
require("../mcfrdb.php");
 // Included database once using the require method
?>

  <?php


$username = mysql_real_escape_string(stripslashes($_POST['username']));
$pass = mysql_real_escape_string(stripslashes($_POST['password'])); 


$result = mysql_query("SELECT user, pass FROM mcfruse WHERE user='$username'")or die(mysql_error());
$row=mysql_fetch_array($result); 

 if(mysql_num_rows($result)>0)
{

    if(strcmp($row['pass'],$pass)==0)
    {
            echo "yes";
            $_SESSION['name']=$username;
    }
    else
            echo "no";
}
else
    echo "no"; 

Мой HTML при использовании firebug говорит:

yes

, так что yes выводится echo'ed, что означает, что он проходитправильный pwd, и он проверяет, но он по-прежнему говорит "Детали входа в систему отстой" и не перенаправляет меня на eindex.php

eindex.php

<?php
session_start();
if(!isset($_SESSION['name']))
header("Location:../index.php");
 //if logout then destroy the session and redirect the user
if(isset($_GET['logout']))
 {
 session_destroy();
 header("Location:../index.php");
 }

 require("../mcfrdb.php");
 ?>

Я проверил код черезпару раз, но ничего не мог найти.Все ответы и любая помощь приветствуются.Большое спасибо.

РЕДАКТИРОВАТЬ: даже добавляя в хеширование md5 pwd (опущено в этом коде), я все еще получаю "да", и когда я повторяю имя пользователя и хэш, они совпадают с ботом, сеанс не устанавливаетсявсе же однако и не перенаправляя меня.если ($. trim (data) == 'yes')

Ответы [ 3 ]

7 голосов
/ 17 сентября 2011

Любая страница, к которой вы обращаетесь через AJAX, представляет собой отдельный запрос , и вам нужно будет позвонить session_start() для заполнения суперглобальной сессии.

1 голос
/ 17 сентября 2011

Ваш ejaxlog.php возвращает yes?Уверены ли вы?Попробуйте добавить alert(data) или console.log(data), чтобы увидеть, что он возвращает.Кажется, ваш скрипт возвращает не yes или не только yes (может быть, какая-то ошибка?).Очевидно, вы не перенаправлены, потому что ваш JavaScript получает не соответствующую строку, поэтому он не перенаправляет вас.Снова, попробуйте войти в систему / предупредить данные, которые возвращаются сценарием.Или установите что-то вроде FireBug для FireFox, чтобы увидеть все запросы, выполняемые JavaScript.

0 голосов
/ 17 сентября 2011

используйте session_start() вверху страницы ejaxlog.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...