0

jSONとAjaxを使用してデータベースにログインし、データベースを更新する必要がありました。これを行うための修正されたコードは次のとおりです。

<auth.php> `

<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"
    type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <script type="text/javascript">
        $(document).ready(function() {

$("#login").click(function() {

    var action = $("#form1").attr('action');
    var form_data = {
        email: $("#email2").val(),
        password: $("#password").val(),
    };
$.getJSON("login.php",form_data,function(data){
    switch(data.retval){
      case 0: $("#form").html("You have logged in successfully,"+ data.data.displayName+"!");
      break;
      case 1: $("#status").html("Invalid Username/Password, please try again.");
      break;
      default: $("#status").html("Database error, please try again.");
      break;
   }
});
});
});
    </script>
</head>

<body>
    <div id="fullBG">
        <div id="formBG">
            <div id="form">
                <div id="status">
                    <br />
                    <br />
                </div>
                <form id="form1" name="form1" action="login.php" method="post">
                    <input type="email" placeholder="Email" name="email" id="email2" size="30">
                    <br>
                    <input type="password" placeholder="Password" name="password" id="password"
                    size="30">
                    <br>
                    <input type="button" value="Login" class="sub" id="login">
                </form>
                <br />
                <br />
                <form method="link" action="register.php">
                    <input type="submit" value="Register" class="register">
                </form>
            </div>
        </div>
    </div>
</body>

</html>`

<login.php> `

<?php
ob_start();
session_start();
mysql_connect('', '', '') or 
die('Could not connect: ' . mysql_error());
mysql_select_db('phppro2') or
die ('Can\'t use database: ' . mysql_error());

// retval: 0 - login ok, 1 - login failed, 2 - internal error
$json = array("retval" => 2, "data" => NULL, "debug" => "");

$email = mysql_real_escape_string($_REQUEST['email']);
$password = mysql_real_escape_string($_REQUEST['password']);

$sql="SELECT * FROM users WHERE email='$email' and password='$password'";

$json['debug'] .= "SQL query was: ".$sql."\n";
$result=mysql_query($sql);
if (!$result) {
$json['debug'] .= "SQL query failed\n";
$json['debug'] .= "Other output: ". ob_get_contents();
ob_end_clean();
die(json_encode($json));
}
$count=mysql_num_rows($result);

if($count==1){
$json['retval'] = 0;
$json['data'] = mysql_fetch_assoc($result);
} else {
$json['retval'] = 1;
}
$json['debug'] .= "Other output: ". ob_get_contents();
ob_end_clean();
echo json_encode($json);`

//古い問題:

データベースから情報を取得し、Ajaxを使用してロードする必要があります。すべてが機能していましたが、auth.phpファイルが上書きされ、失われました。私は自分の歩みをたどろうとしましたが、道に迷っています。ページはそれ自体に更新されなくなり、データを取得しなくなります。(データベース情報を削除しましたが、接続されています)

私のlogin.phpは変更していないので、正確だと思います。

4

1 に答える 1

0

1)2つのボタン(登録とログインボタン)のIDを同じにしないでください

2)JavaScript関数を次のように変更します

 $.getJSON("login.php",form_data,function(data){
        switch(data.retval){
          case 0: $("#form").html("You have logged in successfully,"+ data.data.displayName+"!");
          break;
          case 1: $("#status").html("Invalid Username/Password, please try again.");
          break;
          default: $("#status").html("Database error, please try again.");
          break;
       }
    }

3)また、ステータスdivは空白である必要があります

<div id="status"></div>

4) http://samaradionne.com/phppro2/auth.phpの構文エラー

$(document).ready(function() {

    $("#login").click(function() {

        var action = $("#form1").attr('action');
        var form_data = {
            email: $("#email").val(),
            password: $("#password").val(),
        };
 $.getJSON("login.php",form_data,function(data){
        switch(data.retval){
          case 0: $("#form").html("You have logged in successfully,"+ data.data.displayName+"!");
          break;
          case 1: $("#status").html("Invalid Username/Password, please try again.");
          break;
          default: $("#status").html("Database error, please try again.");
          break;
       }
    });
  });
});
于 2012-10-02T16:26:49.533 に答える