2011-09-16 13 views
7

Tengo un código que inicia sesión a través de AJAX y luego pasa los datos a un archivo .php para verificarlo con el SQL. para una prueba, el nombre de usuario y la contraseña son para mí, sin embargo, incluso si esto vuelve del cheque, no me registra, parece que la sesión no se está configurando.No se establecen las sesiones PHP

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> 

esto, entonces comprueba el MySQL a través de la siguiente código, es que es un éxito que hace eco a cabo "sí", que veo en mis cabeceras HTTP (por lo que debe ser correcto) pero, duerma redirigirme a "eindex.php" como se especifica en el archivo 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"; 

Mi HTML cuando se utiliza Firebug dice

así está siendo echo'ed el sí que significa que se pasa a la derecha pwd y se valida, pero todavía dice "detalle de sesión chupa" y tampoco me redirigir a 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"); 
?> 

He revisado el código varias veces pero no pude encontrar nada. Todas las respuestas y cualquier ayuda apreciada. Muchas gracias.

EDITAR: incluso agregando el hash md5 pwd (omitido de este código) sigo recibiendo un "sí" y cuando hago eco del nombre de usuario y el hash, coinciden los bot, la sesión no se establece y redirecciona yo. en si ($. Trim (datos) == 'sí')

+0

¿Dónde está su ['session_start()'] (http://php.net/manual/en/function.session-start.php)? – feeela

+1

Niza mensaje de error bro –

+0

que está allí, jsut en la línea superior, se omite desde el código, creo que debería haber metido eso; D – ben

Respuesta

1

Sus rendimientos ejaxlog.phpyes? ¿Estás seguro? Intente agregar alert(data) o console.log(data) para ver qué devuelve. Parece que su secuencia de comandos devuelve no yes o no solo yes (¿puede haber algún error?). Obviamente, no se te redirecciona porque tu JavaScript no recibe la cadena adecuada, por lo que no te redirecciona. De nuevo, intente iniciar sesión/alerta de los datos que devuelve el script. O instale algo así como FireBug for FireFox para ver todas las solicitudes hechas por JavaScript.

+0

ahhhh, nadie lo habría conseguido. el (datos) = "sí" devuelto era malo porque estaba tratando de devolver toda la basura html con él, en lugar de solo "sí" estaba vinculando para devolver No pensé usar FB incluso si tuviera instalado, funciona perfecto ahora Gracias – ben

7

Cualquier página se accede a través de AJAX es una solicitud por separado y necesitará llamar session_start() con el fin de la sesión súper mundial a poblarse.

0

uso session_start() en la parte superior de la página ejaxlog.php

+0

tengo eso allí, solo se omite del código ...ahora agregó – ben

Cuestiones relacionadas