Giao
-
29 avril 2010 à 17:03
avion-f16
Messages postés19249Date d'inscriptiondimanche 17 février 2008StatutContributeurDernière intervention15 juin 2024
-
29 avril 2010 à 19:10
Bonjour à tous,
Je suis encore plutôt novice en PHP et je me lance dans quelque chose de tout nouveau pour moi : la mise en place d'un système d'espace membre.
Pour le moment, j'ai enregistré manuellement dans la BDD un utilisateur pour simplement tester le système de connexion.
Le principe :
1) J'ai une page index2.php qui me sert de page test. Sur cette page se trouve le formulaire de connexion.
2) Le formulaire renvoie à une page login.php sur laquelle se trouve le fameux header() : c'est une page uniquement php teste le formulaire et permet ou non de se connecter.
3) Si l'identifiant et le mot de passe sont bons, le header() est censé renvoyer à une page valid_login.php qui confirme à l'utilisateur sa connexion.
Sinon, il renvoie à index2.php pour que l'utilisateur recommence, en affichant un message d'erreur.
Ce qui se passe : le header() de login.php (étape 2) ne semble pas marcher.
- J'entre le login et le mot de passe, je valide.
- Le formulaire redirige bien vers login.php
- Et là à login.php, une page blanche s'affiche, et c'est tout.
if (isset($_GET['erreur'])) {
switch($_GET['erreur']) {
case "badmdp" : $texte_erreur="Votre compte ou mot de passe est incorrect."; break;
case "badadmin" : $texte_erreur="Une erreur technique est survenue, essayez ultérieurement ou contactez l'administrateur."; break;
case "interdit" : $texte_erreur="Vous devez être connecté pour accéder à cette page."; break;
default : $texte_erreur=""; break;
}
// on teste si une entrée de la base contient ce couple login / pass
$req = 'SELECT count(*) FROM membres WHERE memb_login="'.mysql_real_escape_string($_POST['login']).'" AND memb_mdp="'.mysql_real_escape_string(sha1($_POST['mdp'])).'"';
$result = mysql_query($req) or die('Erreur SQL !<br />'.$req.'<br />'.mysql_error());
$data = mysql_fetch_array($result);
mysql_free_result($result);
mysql_close();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
$_SESSION['login'] = $_POST['login'];
header('Location: valid_login.php');
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
header('Location: index2.php?erreur=badmdp');
}
// sinon, il y a un gros problème...
else {
header('Location: index2.php?erreur=badadmin');
}
}
----------------------------------------------------------------------------------------------------------------
// la seule portion de code php de valid_login.php, qui vérifie seulement que l'utilisateur est identifié en arrivant sur la page
<?php
session_start();
include("config.inc.php");
if (!isset($_SESSION['login'])) {
header ('Location: index2.php?erreur=interdit');
}
?>