Session avec login et password

Petit nouveau ! | 8 Messages

22 févr. 2011, 12:16

Bonjour à tous !

Voilà depuis quelques jours je m'arrache les cheveux pour créer une session avec login et password.
J'ai créer une page de connexion et une base de données hors je n'arrive pas à me connecter avec les variables que j'ai créé :x

Ma page de connexion :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>


</head>
<body>
<div id="headco"> <u> Identification </u> </div>
<div id="connexion">

<form method="post" action="sectionmembre_acces.php" enctype="multipart/form-data">

<div id="fieldset">

<div class="set">
<label for="id"> Nom d'utilisateur : </label>

<div class="champs">
<input type="text" name="ident" />
</div>
</div>

<div class="set">
<label for="mdp"> Mot de passe : </label>
<div class="champs">
<input type="password" name="mdp" />
</div>
</div>
</div>

<input type="submit" value="Connexion" />

</form>
</body>
</html>


ma page de vérification :

<?php
// Script faisant appel aux sessions
session_start();

// Paramètres de connexion à la base de données
$BD_serveur = "localhost";
$BD_utilisateur = "root";
$BD_motDePasse = "";
$BD_base = "reservation salle";

$id = $_POST["ident"];
$motDePasse = $_POST["mdp"];

@mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
or die("Impossible de se connecter au serveur de bases de données.");
@mysql_select_db($BD_base)
or die("Impossible de se connecter à la base de données.");

$requete = "SELECT mdp FROM utilisateur WHERE ident='$ident'";

$result = @mysql_query($requete);

if ($enreg = @mysql_fetch_array($result)) {
// Si une ligne a été trouvée c'est que le couple
// (identifant, mot de passe) est valide
$_SESSION["ident"] = TRUE;
$_SESSION["ident"] = $ident;
header("Location: sectionmembre_acces_accueil.php");
die();
} else {
$_SESSION["ident"] = FALSE;
header("Location: sectionmembre_acces_invalide.html");
die();
}
?>

Ma BDD se nome "reservation salle", la table que j'interroge "utilisateur" et les champs dont j'ai besoin sont "ident" et "mdp".

[edit] voilà ce que je voudrais :
si le login et le mot de passe sont valides => accès autorisé
sinon => veuillez recomencer

Merci de vos lumières !
Modifié en dernier par scoop le 22 févr. 2011, 13:28, modifié 1 fois.

ViPHP
ViPHP | 2577 Messages

22 févr. 2011, 12:33

Bonjour,

Ajout
if (mysql_errno()<>0)
{
die(mysql_error());
}
après tes utilisations de mysql pour voir ce qui ne marche pas. D'ailleurs ce serai bien de nous dire à quel niveau tu as un problème.

Il lecture en diagonal de ton script me fait soupçonner que tu ne testes pas le mot de passe saisie et celui stocké.

Petit nouveau ! | 8 Messages

22 févr. 2011, 13:22

Quand j'essaie de me logué rien ne s'affiche....

Pour tester le mot de passe, faudrait-il que je déclare la variable en haut de page ? tel que :
$_POST['mdp'] = "toto";


[edit] $_POST['mdp'] = "toto";
ou
$_SESSION['mdp'] = "toto";

ViPHP
ViPHP | 2577 Messages

22 févr. 2011, 14:33

Bonjour,

Pour être sur de voir les messages d'erreur, tu devrais mettre en début de script : error_reporting(E_ALL);

Pour le contrôle du mot de passe :

A priori remplacer :
if ($enreg = @mysql_fetch_array($result)) {
par :
$enreg = @mysql_fetch_array($result))
if ($motDePasse=$result['mdp'])

Ou faire :
$requete = "SELECT mdp FROM utilisateur WHERE ident='$ident' and mdp='$motDePasse'" ;
En général on stocke les mots de passe crypté dans la base.

Il faut aussi te renseigner sur l'injection SQL (cf http://php.net/manual/fr/function.mysql ... string.php)

ViPHP
xTG
ViPHP | 7331 Messages

22 févr. 2011, 15:25

Moi je dirai surtout que pour voir les messages d'erreur il faudrait ne pas les cacher...
Enlèves tous les @ devant les fonctions. ;)

Petit nouveau ! | 8 Messages

22 févr. 2011, 15:56

xTG, j'ai retiré les @ comme tu m'as dis et j'ai enfin quelque chose qui s'affiche, les messages d'erreurs ^^


Warning: mysql_pconnect() [function.mysql-pconnect]: [2002] Une tentative de connexion a échoué car le parti connecté n’a pa (trying to connect via tcp://localhost:3306) in C:\Program Files\EasyPHP-5.3.3\www\dev\nouveaudossier\sectionmembre_acces.php on line 20

Warning: mysql_pconnect() [function.mysql-pconnect]: Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu. in C:\Program Files\EasyPHP-5.3.3\www\dev\nouveaudossier\sectionmembre_acces.php on line 20

Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\EasyPHP-5.3.3\www\dev\nouveaudossier\sectionmembre_acces.php on line 21

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 févr. 2011, 16:10

salut,

mysql est bien démarré ? tu vois bien le processus dans le gestionnaire de taches ?

pourquoi pconnect ? un simple mysql_connect suffit et peut éviter des soucis ;)

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

22 févr. 2011, 16:18

Salut Moogli !
MySQL est bien connecté et est actif dans le gestionnaire de taches, de plus dans mon script je viens de remplacer mysql_pconnect par mysql_connect mais j'ai toujours le même message d'erreur...

ViPHP
xTG
ViPHP | 7331 Messages

22 févr. 2011, 16:25

MySQL utilise-t-il le bon port ? (3306 en l'occurence)

Petit nouveau ! | 8 Messages

22 févr. 2011, 16:27

Euh comment vérifier ?

ViPHP
xTG
ViPHP | 7331 Messages

22 févr. 2011, 17:27

C'est dans le fichier my.ini
Vérifies aussi que ton parefeu ou ton antivirus (ou tout autre protection) ne bloque pas MySQL.

Petit nouveau ! | 8 Messages

22 févr. 2011, 18:18

Pour le port c'est bon il utilise bien le 3306, pour ce qui est du pare-feu c'est OK aussi mais pour l'anti-virus je ne sais pas, j'ai sophos et je sais pas comment vérifier si il le bloque ou pas...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 févr. 2011, 19:59

essai de "voir" ce que mysql à dans le ventre a partir de phpmyadmin il est normalement pré installé avec easyphp à l'adresse suivante http://localhost/phpmyadmin

si cela fonctionne je vois pas trop la :/

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

23 févr. 2011, 10:02

Bonjour tout le monde !

A l'adresse http://localhost/phpmyadmin j'ai ceci :


Objet non trouvé!

L'URL requise n'a pu etre trouvée sur ce serveur. Si vous avez tapé l'URL à la main, veuillez vérifier l'orthographe et réessayer.

Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site.
Error 404
localhost
02/23/11 09:01:00
Apache/2.2.16 (Win32) PHP/5.3.3

ViPHP
ViPHP | 2577 Messages

23 févr. 2011, 14:45

Bonjour,

Dans le répertoire C:\Program Files\EasyPHP-5.3.3\www tu dois avoir un fichier index.php fourni par easyphp si tu as mis tes sources dans le sous-répertoire dev. En appelant http://localhost tu dois avoir un lien qui permet l'accès à phpmyadmin.

Au pire sauvegarde tes sources et réinstalle easyphp.