Estoy escribiendo un jquery login. Si el php script de inicio de sesión (checklogin.php) se hace eco de «true», entonces mi jquery página se supone que para dar una alerta. Cuando ejecuto un login.php (que no usa jquery) se envía la solicitud a checklogin.php que hace eco a la «verdad» sin embargo, si puedo usar mi jquery script de inicio de sesión para enviar la información de inicio de sesión para checklogin.php la alerta que me remontan dice «false».

$('#login').click(function(e){
      $.getJSON("http://www.hedonsoft.com/game/login.php",{username: $("#username").val(), password: $("#password").val()},function(data){
         if(data==true){
            alert(data.boolean);
            //$('#logindiv').slideUp();
            //$('#gamediv').show(); 
            //$('#registerdiv').hide();
            //$('#gameheader').html(data['username']);
         }else{
            alert("false");
         }
      });
});

<?php
header('Access-Control-Allow-Origin: *');
$host="localhost"; //Host name 
$username=""; //Mysql username 
$password=""; //Mysql password 
$db_name="hedonsof_conflict"; //Database name 
$tbl_name="members"; //Table name 

//Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

//username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

//To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

//Mysql_num_row is counting table row
$count=mysql_num_rows($result);

//If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

//Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
$json = array('boolean' => 'true', 'jsonUser' => $myusername);
echo "true";
}
else {
echo "Wrong Username or Password";
}
?>

Tan largo el cuento, cuando intento de inicio de sesión de php de la página el valor que traza es cierto, cuando intento de inicio de sesión de jquery, la página de el valor que traza es falso;

EDICIÓN:

<?php
...
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

//Mysql_num_row is counting table row
$count=mysql_num_rows($result);

//If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

//Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
$json = array('boolean' => true, 'jsonUser' => $myusername);
echo true;
}
else {
echo "Wrong Username or Password";
}
?>

Y mi jQuery…

$('#login').click(function(e){
      $.getJSON("http://www.hedonsoft.com/game/login.php",{username: $("#username").val(), password: $("#password").val()},function(data){
         if(data){
            alert("true");
            //$('#logindiv').slideUp();
            //$('#gamediv').show(); 
            //$('#registerdiv').hide();
            //$('#gameheader').html(data['username']);
         }else{
            alert(data); //shows null
         }
      });
});

Con json_encode, boolean valor se devuelve null

$('#login').click(function(e){
       $.getJSON("http://www.hedonsoft.com/game/login.php",{username: $("#username").val(), password: $("#password").val()},function(data){
          if(data.boolean == "true"){
             alert("true");
             //$('#logindiv').slideUp();
             //$('#gamediv').show(); 
             //$('#registerdiv').hide();
             //$('#gameheader').html(data['username']);
          }else{            alert(data);
          }
       }); });
<?php
...
//Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
$json = array('boolean' => true, 'jsonUser' => $myusername);
echo json_encode($json);
}
...
?>
  • Es json_encode utilizado realmente en algún lugar, o simplemente una recopilación que echo «true»; como la respuesta de ajax?
  • Por favor, ver mi edición. Esto es lo que fue originalmente intentando pero volvía null no importa lo que hice, así que pensé tratando de una cadena simple o booleano de verificación sería más fácil, y una vez que hube de trabajo, a continuación, me gustaría probar esto de nuevo.
  • Ver respuesta actualizada.
InformationsquelleAutor RapsFan1981 | 2012-07-24

1 Comentario

  1. 9

    Uso true, no 'true'. 'true' es una cadena, y desea un valor booleano:

    $json = array('boolean' => true, 'jsonUser' => $myusername);

    También, nunca escribir == true.

    if(data==true) {

    Bien, ahora el problema es:

    $json = array('boolean' => true, 'jsonUser' => $myusername);
    echo true;

    No echo true, echo json_encode($json).

    • «nunca escriba == true» -> ¿por qué?
    • Sólo conduce a errores de código. if(data == true) es generalmente equivalente a if(data). Si es equivalente, la == true es superfluo y debe ser llevado a cabo. Si es no equivalente, tienes un serio problema con el código, como es el caso aquí. En la mayoría de uso === true si usted realmente necesita para comprobar una true valor y nada más.
    • Hm, puede que sea solo yo, pero estoy teniendo un tiempo difícil imaginar en qué casos podría if(data == true) no ser equivalentes a if(data), ¿podría dar un ejemplo? sólo por curiosidad.
    • Ningún efecto. alert(«false»); aún está funcionando.
    • Bueno, JavaScript. 'true' != true pero 'true' es truthy.
    • Podría usted por favor enviar su código actualizado?
    • Hice echo json_encode($json). Véase mi edición
    • Usted está haciendo la == "true" cosa de nuevo. Lleve a cabo.
    • $json = array(‘boolean’ => true, ‘jsonUser’ => $myusername); si(los datos.boolean == true) pero no funciona
    • No hacer == true bien. Lleve a cabo. Ahora, qué navegador estás usando?
    • Chrome, pero también estoy probando en Dreamweaver código en vivo
    • permítanos continuar esta discusión en el chat
    • Te las has arreglado para conseguir que funcione? Creo que usted necesita, ya sea if(data) o if(data.boolean), y, además, tal vez la configuración de un application/json encabezado en el php lado.
    • Stil no funciona, minitech ha estado ayudando a mí. He tratado de si(de datos) y si(los datos.boolean).
    • después de mucha experimentación y el cambio de las cosas, yo lo tengo de ir. Hice un trabajo de registro de la secuencia de comandos que utiliza .post así que terminé usando .post para mi inicio de sesión así. También he añadido e.preventDefault() como se sugiere por la minitech.

Dejar respuesta

Please enter your comment!
Please enter your name here