Comment pouvez vous retourner formulaire de connexion des erreurs à la même page, à l'aide de PHP?
Je suis relativement nouveau à PHP et ont épuisé l'internet à essayer de trouver une réponse à ce problème. J'ai regardé de nombreux exemples, mais les gens semblent très différents systèmes d'accès à la mine et j'ai du mal à déchiffrer.
Voici mon code pour l'instant:
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Video for Education Log In</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="wrapper">
<div id="header">
<div id="logo">
videoedu.edu </div>
<div id="menu">
<ul>
<li><a href="account.html" class="menua">Create Account</a></li>
<li><a href="about.html" class="menua">About Us</a></li>
</ul>
</div>
</div>
<br><br><br><br>
<div id="page">
<div id="content">
<h2>Video for Education helps you connect and share with the videos in your life.</h2>
<h3>Upload Share Create Using video for your education purposes. Lecturers Welcome
Upload Share Create Using video for your education purposes. Lecturers Welcome
Upload Share Create Using video for your education purposes. Lecturers Welcome</h3>
<div class= "form">
<form name="login" method="post" action="checklogin.php">
Username: <input type="text" name="myusername" id="myusername" class="textb"/><br />
Password : <input type="password" name="mypassword" id="mypassword" class="textb"/><br />
<br>
<input type="submit" name="login" value="Login" id="login" class="texta" />
</form>
</div>
</div>
</div>
</div>
</body>
</html>
checklogin.php
<?php
$host = "localhost";
$username = "root";
$password = "";
$db_name = "test";
$tbl_name = "members";
mysql_connect("$host", "$username", "$password")or die("Cannot connect.");
mysql_select_db("$db_name")or die("Cannot select DB.");
$myusername=$_POST["myusername"];
$mypassword=$_POST["mypassword"];
if ($myusername&&$mypassword)
{
$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);
$count = mysql_num_rows($result);
if($count == 1){
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else
{
echo "Wrong Username or Password";
}
}
else
echo "You have left one or more fields blank.";
?>
login_success.php
<?
session_start();
if( !isset( $_SESSION['myusername'] ) ){
header("location:account.html");
}
echo "Welcome, ".$_SESSION['myusername']." - You are now logged in.<br>";
echo "<a href=logout.php>Logout</a>"
?>
<html>
<body>
</body>
</html>
logout.php
<?php
session_start();
session_destroy();
echo "You have been logged out, <a href='index.php'>click here</a> to return."
?>
J'ai essayé d'insérer cela dans index.html et de changer le nom du fichier à index.php.
$submit = $_POST["login"];
if($submit)
{
}
...mais il affiche en permanence l'une des erreurs ("Mauvais nom d'utilisateur ou le mot de passe') en bas de la page à tout moment.
Je le veux, de sorte que si l'utilisateur entre un mauvais nom d'utilisateur ou mot de passe, ou laisse un champ obligatoire vide, le message d'erreur s'affiche sur la même page, au lieu d'aller à un nouveau moche, vide page PHP avec le message d'erreur dans le coin supérieur gauche.
OriginalL'auteur Callum O' Riordan | 2012-02-28
Vous devez vous connecter pour publier un commentaire.
Dans checklogin.php au lieu de devenir une erreur, utilisez ceci:
ou quelque chose de similaire, et dans votre index.html page PHP de générer le code HTML du message, quelque chose comme ceci:
Aussi, assurez-vous de
die()
ouexit()
lorsque vous utilisezheader
pour rediriger la page, sinon le reste de votre script continue à s'exécuter.Le reste du script après
header
n'est pas nécessairement continuer à exécuter (et n'est généralement pas le cas), mais il est tehcnically possible de simplement ignorer la modification des en-têtes et pas de redirection (qui provoque la poursuite du script). Donc oui, l'arrêt du script à droite après le réglage de l'en-tête est fortement recommandé.Salut Travesty3. Je comprends votre concept de l'utilisation d'un tableau à une erreur de sortie en fonction de ce qui a causé cela, mais dans le if($_GET["loginFailed"] j'obtiens un message d'erreur indiquant que loginFailed est un undefined index. Où est cette condition en venir?
C'est un PHP avis, plutôt que d'un erreur. Cela signifie que vous avez votre error_reporting dans votre php.ini défini pour afficher les notifications. Essayez
if (isset($_GET["loginFailed"]))
à la place.Toujours rien! Où est le "loginFailed" condition de venir? Qu'est-ce que if(isset($_GET["loginFailed"])) contrôle et comment?
OriginalL'auteur Travesty3
Ce que vous pouvez faire est de redirection vers votre page si les données n'est pas valide. Mettre les erreurs dans la session et de les afficher sur la page:
par exemple:
et votre message sera visible sur la page.
Dans votre PHP
OriginalL'auteur Senad Meškin
Dans checklogin.php si l'utilisateur saisit un mauvais nom d'utilisateur ou mot de passe, utilisez le code comme ceci:
Il s'affichera le message d'erreur à la même page (page de connexion), au lieu d'aller vers une nouvelle page PHP.
qu'est-ce que vos sens pour solution élégante?
OriginalL'auteur Ian
Vous voulez rendre votre index.html page une page PHP, et ont du se soumettre à lui-même, c'est à dire à index.php. De cette façon, vous votre page d'index peut faire la connexion pour vérifier les valeurs d'un formulaire et afficher le résultat de la page de façon appropriée, ou d'utiliser des en-têtes de rediriger si tout valide.
Il est difficile de dire l'effet que votre tentative peut-être eu sans le voir dans le contexte, mais l'essentiel de la situation est que vous devez le formulaire pour soumettre à lui-même et de gérer la connexion de traitement.
stackoverflow.com/questions/9386301/...
OriginalL'auteur thescientist
Il semble que vous voulez/besoin d'intégrer jQuery ou certains autres Javascript/AJAX library
pour rendre les choses plus présentable. jQuery est un plugin pour la validation d'un formulaire qui est très facile à intégrer à votre projet (évidemment bibliothèque jQuery est une exigence minimale).
jQuery site et
plugin jQuery validation.
Vous pouvez également envisager d'utiliser un Framework PHP comme CodeIgniter qui est également très utile de validation de formulaire de la bibliothèque. CodeIgniter est effrayant au début (comme tous les MVC basé sur la programmation de la bibliothèque/cadre), mais ça en vaut la peine. vous pouvez regarder quelques tutoriels sur netTuts+ ils ont créé une série de tutoriels appelé CodeIgniter À Partir De Zéro, n'est pas de la dernière version, mais il est facile de s'adapter.
OriginalL'auteur msmafra