3

私はjqueryログインを書いています。PHP ログイン スクリプト (checklogin.php) が "true" を返す場合、私の jquery ページはアラートを出すはずです。login.php (jquery を使用しない) を実行すると、「true」を返す checklogin.php にリクエストが送信されますが、jquery ログイン スクリプトを使用してログイン情報を checklogin.php に送信すると、アラートがトレースされます。後ろは「偽」と言っています。

$('#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";
}
?>

簡単に言えば、通常の php ページからログインしようとすると、トレースする値は true になります。jquery ページからログインしようとすると、トレースする値は false です。

編集:

<?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";
}
?>

そして私の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
         }
      });
});

json_encode、ブール値が返されます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);
}
...
?>
4

1 に答える 1

10

trueではなく、使用してください'true''true'は文字列で、ブール値が必要です:

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

また、絶対に書かない== trueでください。

if(data==true) {

さて、問題は次のとおりです。

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

しないecho trueでくださいecho json_encode($json)

于 2012-07-24T20:57:28.100 に答える