Page de connexion avec PHP et de la SESSION
J'ai créé une base de données et une table pour les utilisateurs avec un nom d'utilisateur et mot de passe.Je veux créer une page de connexion avec simple HTML
et PHP
mais je ne peux pas trouver de solution pour mon problème avec du code PHP.Donc, il y a une page de Connexion (index.html)
et Chklogin.php
et un login_success.php.
Lorsque je tape mon nom d'utilisateur et le mot de passe qui a été inséré dans la table des utilisateurs avant il l'habitude de montrer la login_success page.
Voici mon code pour les Chklogin.php :
<?php
$host="localhost"; //Host name
$username="root"; //username
$password="root"; //password
$db_name="TA"; //Database name
$tbl_name="user"; //Table name
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
$myusername=mysql_real_escape_string($_POST['username']);
$mypassword=mysql_real_escape_string($_POST['password']);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
//Register $myusername, $mypassword and redirect to file "login_success.php"
session_start();
$_SESSION['username'] = $myusername;
$_SESSION['password'] = $mypassword;
header("location: login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>
Et les codes de la login_success.php :
<?php
session_start();
if(!$_SESSION['username']){
header("Location: index.html");
exit;
}
echo 'Welcome, '.$_SESSION['username'];
header("Location: student-page.html");
?>
- Êtes-vous le stockage de texte en clair dans la base de données.
- S'il vous plaît ne pas utiliser
mysql_*
fonctions. Ils sont désormais obsolète!! Au lieu de cela, veuillez utiliser php.net/manual/en/book.mysqli.php ou php.net/manual/en/book.pdo.php - Et où les données introduites dans la base de données, qu'est-ce que votre structure de base de données et que les données sont là
- le début de la séance au début de la file, également la
Location
dans l'en-tête doit commencer avec une lettre majuscule, je pense qu'il est sensible à la casse (pas testé) - ses pas sensible à la casse.
- ce qui est dans
student-page.html
Vous devez vous connecter pour publier un commentaire.
Ajouter
AND username != '' AND username IS NOT NULL LIMIT 1
pour votre Instruction SQL. Sinon, quelqu'un peut se connecter sans informations d'identification correctes dans certaines circonstances.session_start()
etheader()
doivent être mis AVANT toutecho
,print
, etc. de sortie (également blankspaces). Pourquoi? une séance commence généralement avec un cookie dans le navigateur, les cookies sont envoyés à l'intérieur des en-têtes. les en-têtes besoin pour aller de l'avant de la charge utile.n'est pas seulement vérifier si le nom d'utilisateur existe à l'intérieur de la session, vérifier l'ensemble de vos informations d'identification pour être correct. certaines séances sont toujours enregistrées dans les endroits où quelqu'un pourrait être en mesure de manipuler ces
mettre
exit;
aprèsheader()
- pas tous les clients de suivre les informations d'en-tête et de votre script peut aller en conduisant à des effets étranges, dans certains cas,pour le débogage, mettre
error_reporting(E_ALL);
etini_set('display_errors', true);
au-dessus de toutDe choses que vous devez vérifier