2012-04-04 18 views
1

Ich habe eine einfache HTML/PHP-Login-Seite und jQuery Mobile Login-Seite. Ich möchte, dass sie beide die selbe Datei namens checklogin.php einreichen, die sie auf ihre jeweiligen Hauptseiten umleiten soll, wenn eine Anmeldung erfolgreich ist. Es funktioniert erfolgreich für die Basis-Seite, aber nicht für die jQuery Mobile-Seite. Der Versuch, über die mobile Seite einzureichen, führt mich auf eine Seite mit dem Ausdruck "undefined".jQuery Mobile Login-Skript

Stattdessen habe ich versucht, PHP und jQuery Skript zu schreiben, so dass wenn ein mobiler Beitrag erkannt wird, anstatt sofort auf die Hauptseite zu gehen, würde es zurückgeben, dass es erfolgreich war, und die Anmeldeseite selbst würde umleiten Benutzer auf die Hauptseite. Obwohl das Klicken auf "Senden" zu Testzwecken eine erfolgreiche Benachrichtigung "Formular ist gesendet" ergibt, wird die Seite durch einen korrekten Login nicht geändert. Was soll ich hinzufügen?

Dies ist meine PHP-Login-Checker.

<?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"; 
    } 

    ?> 

Und das ist mein Skript zurück auf der Anmeldeseite zum Umleiten des Benutzers.

<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

Warum 'header ('HTTP/1.0 401 Unauthorized', true, 401);'? – Dion

+2

Bitte summieren Sie nicht jeden Variablennamen mit 'Var'. –

Antwort

2

Ich habe den gesamten Code noch nicht überprüft, aber wenn Sie ein Formular auf einer Seite einreichen nicht JQM Sie data-ajax="false" zum <form> Tag hinzufügen sollten. Mit jqm sollte die Seite normal geladen werden und nicht als Inhalt für die jqm-Seite interpretiert werden. Das löste das 'undefined' Ding für mich ...