1

基本的な HTML/PHP ログイン ページと jQuery モバイル ログイン ページを作成しました。ログインが成功した場合にそれぞれのメインページにリダイレクトすることを目的として、両方を checklogin.php という同じファイルに送信させたいと考えています。基本ページでは正常に機能しますが、jQuery Mobile ページでは機能しません。モバイルページから送信しようとすると、「未定義」というフレーズが記載されたページに移動します。

その代わりに、モバイル投稿が検出された場合、すぐにメイン ページに移動するのではなく、成功したことを返し、ログイン ページ自体がユーザーをメイン ページにリダイレクトするように、PHP および jQuery スクリプトを作成しようとしました。ページ。[送信] をクリックすると、テスト目的で「フォームが送信されました」というアラートが正常に表示されますが、正しくログインしてもページは変更されません。何を追加すればよいですか?

これは私の PHP ログイン チェッカーです。

<?php
$host=// Host name
$username=// Mysql username
$password=// Mysql password
$db_name=// Database name
$tbl_name=// 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 prevent MySQL injection (a form of internet hacking)
$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 the main page"
        session_register("myusername");
        session_register("mypassword");
        //Send them back to the page they were at/
        if(!$_POST['mobile']) 
        {
            header("location:main.php");
        }
        else
        {

            header('HTTP/1.0 401 Unauthorized', true, 401);

        }
    }
    else 
    {
        echo "Wrong Username or Password";
    }

    ?>

これは、ユーザーをリダイレクトするためのログイン ページに戻るスクリプトです。

<script language="javascript">  
      // Global declarations - assignments made in $(document).ready() below  
      var hdrMainvar = null;  
      var contentMainVar = null;  
      var ftrMainVar = null;  
      var contentTransitionVar = null;  
      var stateLabelVar = null;  
      var whatLabelVar = null;  
      var stateVar = null;  
      var whatVar = null;  
      var form1var = null;  
      var confirmationVar = null;  
      var contentDialogVar = null;  
      var hdrConfirmationVar = null;  
      var contentConfirmationVar = null;  
      var ftrConfirmationVar = null;  
      var inputMapVar = null;  

      // Constants  
      var MISSING = "missing";  
      var EMPTY = "";  
      var NO_STATE = "ZZ";  

      function getFormValues() {
        data = {};
        data['username'] = $("#username").val();
        data['password'] = $("#password").val();
        return data;
      }

      function transmitPost() {
        $.ajax({
            url: 'checklogin.php',
            type:"post",
            data: getFormValues(),
            statusCode: {
            401: function() {
                alert("Wrong Password");
                },
            200: function() {
                window.location = "m/main.php";
                alert('Submitted');}
            }
            error: function(value) {
                alert("error");
            }
        });  
      }

      $('#submitButton').bind('click', function() {
        alert('User clicked on "foo."');
    });
    </script>  
4

1 に答える 1

2

まだすべてのコードを確認していませんが、jqm 以外のページにフォームを送信するときはdata-ajax="false"<form>タグに追加する必要があります。jqm と言うと、通常どおりページが読み込まれ、jqm ページのコンテンツとして解釈されません。それは私にとって「未定義」のことを解決しました...

于 2012-04-05T07:49:06.493 に答える