Formulaire de connexion d'une application mobile à l'aide de Jquery Mobile, PHP et MySQL
Je suis nouveau avec le développement mobile. Je suis en train de développer un Formulaire de Connexion qui permettra de vérifier le nom d'utilisateur et un mot de passe de base de données MySQL. J'ai construit certains de code déjà. J'ai deux problèmes. Le premier est que, après avoir soumis le formulaire, dans le navigateur, la barre d'adresse URL, je peux voir le nom d'utilisateur et le mot de passe tapé, même à l'aide de POST sur mon script JQuery. Le deuxième problème est que la page de garde de revenir à login.html au lieu d'aller à main.html. Ci-dessous est ce que j'ai construit, à l'aide de mon expérience avec PHP, JQuery et MySQL.
Formulaire HTML
<div id="loginPage" data-role="page">
<div data-role="header">
<h1>App Authentication</h1>
</div>
<div data-role="content">
<div id="landmark-1" data-landmark-id="1">
<form id="loginForm">
<div data-role="fieldcontain" class="ui-hide-label">
<label for="username">Username:</label>
<input type="text" name="username" id="username" value="" placeholder="Username" />
</div>
<div data-role="fieldcontain" class="ui-hide-label">
<label for="password">Password:</label>
<input type="password" name="password" id="password" value="" placeholder="Password" />
</div>
<input type="submit" value="Login" id="submitButton">
</form>
</div>
</div>
<div data-role="footer">
<h4>© Silva's General Services</h4>
</div>
L'auth.php
<?php
$mysqli = new mysqli($mysql_hostname,$mysql_user, $mysql_password, $mysql_database);
header("access-control-allow-origin: *");
header("access-control-allow-methods: GET, POST, OPTIONS");
header("access-control-allow-credentials: true");
header("access-control-allow-headers: Content-Type, *");
header("Content-type: application/json");
//Parse the log in form if the user has filled it out and pressed "Log In"
if (isset($_POST["username"]) && isset($_POST["password"])) {
CRYPT_BLOWFISH or die ('No Blowfish found.');
//This string tells crypt to use blowfish for 5 rounds.
$Blowfish_Pre = '$2a$05$';
$Blowfish_End = '$';
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$sql = "SELECT id, password, salt, username FROM users WHERE username='$username' LIMIT 1";
$result = $mysqli->query($sql) or die( $mysqli->error() );
$row = mysqli_fetch_assoc($result);
$hashed_pass = crypt($password, $Blowfish_Pre . $row['salt'] . $Blowfish_End);
if ($hashed_pass == $row['password']) {
$response_array['status'] = 'success';
} else {
$response_array['status'] = 'error';
}
echo json_encode($response_array);
}
$mysqli->close();
?>
Script Jquery
<script>
$('#loginForm').submit(function(){
e.preventDefault();
jQuery.support.cors = true;
$.ajax({
url: 'http://www.test.com/mobile/auth.php',
crossDomain: true,
type: 'post',
data: $("#loginForm").serialize(),
success: function(data){
if(data.status == 'success'){
window.location.href = 'http://www.test.com/mobile/main.html';
}else if(data.status == 'error'){
alert("Authentication Invalid. Please try again!");
return false;
}
}
});
});
</script>
J'ai vraiment apprécier l'aide.
Merci.
Vous devez vous connecter pour publier un commentaire.
C'est tout simplement une supposition, mais:
vous n'avez pas de méthode dans votre formulaire de déclaration:
<form action="your_action_url" method="post">
.il ressemble au votre, ne passant pas le cas dans la fonction. Je sais que la syntaxe qui ressemble à ceci:
$('#loginForm').submit(function(e){
avis le "e" en tant que paramètre de la fonctionjquery a
e.preventDefault
ete.stopPropagation
qui sont deux choses distinctes, voir jquery objet d'événement. Certains autres gestionnaires de peut-être faire des trucs. Vous pouvez également utiliser le "return false;" au lieu de les deux, selon votre cas d'utilisation.Je pense que 2. permettra de résoudre votre problème, vous avez besoin de passer l'événement à la fonction.