2012-04-04 2 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

+2

모든 변수 이름의 접미사에는'Var'을 사용하지 마십시오. –

답변

2

아직 모든 코드를 검토하지하지만 페이지에 양식을 제출할 때 <form> 태그에 data-ajax="false"를 추가해야 JQM하지 않았습니다. jqm을 호출하면 페이지가 정상적으로로드되고 jqm 페이지의 내용으로 해석되지 않습니다. 그건 나를 위해 '정의되지 않은'문제를 해결 ...