2012-04-04 90 views
1

我做了一個基本的HTML/PHP登錄頁面和jQuery手機登錄頁面。我想讓它們都提交到同一個名爲checklogin.php的文件,如果登錄成功,它們打算將它們重定向到它們各自的主頁面。它成功地用於基本頁面,但不是jQuery Mobile頁面。試圖通過移動頁面提交,我會進入一個頁面,上面有「未定義」的短語。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> 
+1

爲什麼'header('HTTP/1.0 401 Unauthorized',true,401);'? – Dion 2012-04-04 23:58:50

+2

請不要用'Var'將每個變量名加後綴。 – 2012-04-04 23:59:33

回答

2

我沒有審查所有的代碼還沒有,但是當你提交表單的頁面不JQM你應該添加data-ajax="false"<form>標籤。說jqm它應該正常加載頁面,而不是解釋爲jqm頁面的內容。這爲我解決了'undefined'的事...