0

さて、jQuery と Cordova を使用して、mySQL データベースにログインしようとしています。いくつかの問題があると、誰かが私を助けてくれるかもしれません。

        <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
    <script type="text/javascript" charset="utf-8" src="jquery-1.7.2.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="jquery.mobile-1.1.1.js"></script>
    <script type="text/javascript" charset="utf-8">
        function login() {
            $(document).ready(function() {
                              var user = $("#user")[0].value;
                              var pass = $("#pass")[0].value;
                              $.ajax({
                                     type: "GET",
                                     url: "http://www.greekhighlight.com/mob_login.php",
                                     data: "users"+user+"&pass="+pass,
                                     success: function(result){
                                     if (value){
                                     $("#message")[0].value = "Success "+result;
                                     } else {
                                     $("#message")[0].value = "error";
                                     }
                                     });

        }
                              };
        </script>

これが head タグの私の JavaScript です。

        <form>
        Username: <input type="text" size="25" id="user" onkeyup= "login()" />
        <br />
        Password: <input type="text" size="25" id="pass" onkeyup= "login()"/>
        <br />
        <input type="text" size="25" id="message" value="error" />
        </form>

これが私のHTMLフォームです。

<?php
$user = $_REQUEST['user'];
$pass = $_REQUEST['pass'];
include('php/connect.php');

$result = mysql_query("SELECT email, password, userid FROM users WHERE email = '$user'");
while($row = mysql_fetch_array($result)){
if(md5($pass) == $row["password"]){
    echo $row["userid"];
} else {
    echo "";
}
} 
?>

そして、これが私のPHPファイルです。

Phonegap などを使用するのはこれが初めての経験なので、これが見落としではないことを願っています。私の接続ファイルは正しいです。そして、私がフォローしていたチュートリアルは成功したので、なぜそうでないのかわかりません.

誰かが私に正しい方向へのプッシュを与えることができれば、私はそれを理解できることを願っています.

前もって感謝します。

更新:このプロジェクトはまだ始まったばかりなので、Aurigma Up とサイトのモバイル バージョンのみを使用することにしました。うまくいけば、ある時点でこの問題に戻り、正しく機能するようになります。助けてくれてありがとう。

4

2 に答える 2

2

コードにはいくつかの問題があります。

  1. おそらくPOSTこのリクエストには を使用する必要がありresult、成功関数チェックで値を使用することをお勧めします (JSON obj を で返すことを検討してくださいstatus)。
  2. あなたajax.dataはこの線にもっと沿っているべきです{"user":user,"pass":pass}
  3. あなたの PHP コードは安全ではないため、準備済みステートメントを使用する必要があります。
  4. 最近ではパスワードを保存することmd5(password)は大したことではありません。より優れた安全なハッシュ関数について調査してください。
  5. あなたのログインイベントはonkeyup

正しい方向に導くためのいくつかの例

HTML:

 ...
 <input type="text" size="25" id="pass"/>
 ...
 <input type="button" id="#login_button" value="Login">
 ...

JS:

 $(document).ready(function() {
     $('#login_button').click(function() {
         // ... ajax request here ...
     });
 });

PHP:

$stmt = $con->prepare('SELECT email, password, userid, salt FROM users WHERE email = ?');
$stmt->bind_param($email);
$stmt->bind_result($hash,$salt);
$stmt->execute();
if ($stmt->fetch_result()) {
     if (hash('sha512',$password.$salt)==$hash) {
         // ... OK ...
     }
}

幸運を。

注: PHP の準備済みステートメントのリファレンス、Google の「salt を使用した安全なパスワード ストレージ」、jsfiddle.netで遊んでください。

于 2012-08-02T04:24:24.677 に答える
2

これを試してください。また、php 側でクエリ インジェクションに対して何らかの保護を使用していることを確認します。

html

 <form>
    Username: <input type="text" size="25" id="user" onkeyup= "login()" />
    <br />
    Password: <input type="text" size="25" id="pass" onkeyup= "login()"/>
    <br />
    <input type="text" size="25" id="message" value="error" />
    <input type="button" value="Submit" onclick="login()"/>
    </form>

JavaScript

function login() {
            $(document).ready(function() {
           var user = $("#user").val();
           var pass = $("#pass").val();
     $.ajax({
            url: "http://www.greekhighlight.com/mob_login.php",  
            type: "GET",        
            data: { username: user, password: pass }     
            cache: false,
            success: function (html) {  
                alert(html);      
            }   
          });
       });
}   

そしてあなたのphp

 <?php
    $user = $_GET['username'];
    $pass = $_GET['paswords'];
    include('php/connect.php');

    $result = mysql_query("SELECT email, password, userid FROM users WHERE email = '$user'");
    while($row = mysql_fetch_array($result)){
    if(md5($pass) == $row["password"]){
        echo $row["userid"];
    } else {
        echo "";
    }
    } 
    ?>
于 2012-08-02T04:29:38.953 に答える