Votre question

[Besoin d'aide, s'il vous plaît] Identification.php...

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
29 Novembre 2009 11:49:02

Bonjour à tous,

Ce là fait déjà quelques temps que je regarde sur divers forums qui aides pour les créations de site (au niveaux php, ect), et là comme j'ai un petit problème en php, j'ai décidé de m'inscrire sur le site, et de poster mon problème, tout en espérant que vous me répondrez ;) .

En faites mon bug, je pense qu'il est tout "c**" a réparé, mais je sais pas comment faire, donc voilà mon code php (identification.php) de mon site :

Mon erreur :
Notice: Undefined index: pseudo in C:\wamp\www\nouveau-test\identification_ok.php on line 27


Mon fichier :


<?php
if (isset($_GET['page']) and $_GET['page'] == "identification_ok") {
//on initialise les variables les rendent innofensives
$pseudo = htmlentities(addslashes($_POST['pseudo']));
$mdp = $_POST['mots_de_passe'];

//test de la variable logged, si elle n'existe pas on la crée
if (!isset($_SESSION['logged'])) $_SESSION['logged'] = FALSE;

//connection à MySQL
include "config.php";
$base = mysql_connect ($adresse_bdd, $login_bdd, $mdp_bdd);
mysql_select_db($nom_bdd, $base);

//on demande a MySQL de regarder si le compte existe
$pseudo=$_POST['pseudo'];
$pseudo = mysql_query("SELECT * FROM utilisateur WHERE pseudo='$pseudo'");
while ($resultat = mysql_fetch_array($pseudo))
{
//on remplie les variables pour tester si elle sont égales ou non.
$id=$resultat['id'];
$_SESSION['pseudo'] = $resultat['pseudo'];
$mots_de_passe=$resultat['mots_de_passe'];
$_SESSION['rang']=$resultat['rang'];
}

if ($pseudo != $_SESSION['pseudo'])
{
echo "Le pseudo entré n'existe pas.";
}
else
{
//le pseudo existe, on test si le mots de passe correspond au pseudo
if ($mdp == $mots_de_passe)
{
//le mots de passe est bon, on connecte le client
?>
<h4>Identification réussie.</h4>
<?php
$_SESSION['logged'] = true;
echo "Vous êtes maintenant connecté.";?><br /><?php
mysql_close(); // Déconnexion de MySQL
?>
<p><br />Bienvenue <?php echo $_SESSION['pseudo']; ?><br />Pour accéder à votre compte <a href="index.php?page=mon_compte">cliquez ici</a></p>
<?php
}

//si le mots de passe n'est pas bon
else
{
?><p>Connexion échouée, revérifiez vos identifiants.</p><?php

//mysql_close(); // Déconnexion de MySQL
}
}

} Else { include "action_interdite.php"; } ?>



Ligne de l'erreur : (ligne 27)



if ($pseudo != $_SESSION['pseudo'])



En faites, mon bug c'est que quand on s'inscrit sur le site, c'est OK, mais quand on veut s'identifier, il y a un problème, même un gros problème :

--> On entre aucuns champs (donc pas de mot de passe, ni de pseudo) :
On est quand même connecté.

Ce que j'aimerai, c'est qu'on puisse m'aider à mettre le bon code dans mon code, pour que lors ce qu'on entre aucuns mdp et pseudo, et bien qu'il y ai un message d'erreur style "1 ou plusieurs champs sont vide !".

Je sais certains me diront "go voir le SDZ", et bien moi je réponds :
Non, j'ai déjà été voir. Mais le code n'est pas le même en plus, et en plus sa provoque des erreurs et tout sa...

Je serai ravis que quelqu'un puisse m'aider sur le forum pour que je puisse réparer ce bug.

Merci d'avance,

Sur ce, Bonne journée!

Autres pages sur : besoin aide plait identification php

29 Novembre 2009 12:38:42

Hello
D'après ce que je vois (rapidos), tu mélanges un peut tout.

Au début :
$mdp = $_POST['mots_de_passe'];
Meme pas crypter ? Mot de passe en claire dans la base ??

Ensuite, tu vérifie un à un le pseudo et le mot de passe, hors il faut verifier les deux en une seule requete.

Et tu n'as pas de session_start(); ducoup cela ne risque pas de marcher non plus.

En "très gros", ton code doit etre de cette forme :

session_start();
traitement de $_POST[pseudo] et $_POST[mdp] avec htmlentities, mysql_real_escape_string etc
requete : $req = select * from membre where pseudo = '$pseudo' and mdp = '$mdp'
$nbres = mysql_num_rows(mysql_query($req));
si $nbres == 1 { $_session['pseudo'] = $pseudo } else { echo 'pseudo ou mdp invalide'; }

tutorial bien fait :
http://www.lephpfacile.com/howto/10-comment-faire-un-es...


m
0
l
29 Novembre 2009 13:27:09

Re bonjour,

Pour le session_start, il se trouve dans le index.php, et donc avec un include, sa fait que le session_start est mis dans la page, mais sans qu'on le voit (vu que c'est par include ;)  )

Je sais pas si vous comprenez...

Ensuite, le mot de passe crypté, je devais le faire là je testais seulement ^^ (de toute façon, là je test en local donc personne peut s'inscrire, donc je ne peux pas voir les mdp ^^).

Pour le tutos, merci je le connaissais, et c'est vrai qu'il est bien fait ^.^

PS: Sinon, quelqu'un pourrai m'aider à faire un système par rang s'il vous plaît ?
m
0
l
Contenus similaires
2 Décembre 2009 14:00:26

up ? ;) 
Si quelqu'un est partant pour m'aider à faire un système par rang, faites moi signe!
m
0
l
2 Décembre 2009 16:19:47

Tu vas être étonné de ma réponse mais il n'y a aucune erreur dans ton code. Bon, il est moche comme tout code de débutant mais il n'y a pas d'erreur.

Il serait bon que tu configures ton serveur pour ne pas afficher les messages de type Notice, même si c'est bien de les corriger. En gros ici tu essayes d'accéder à une entrée de tableau qui n'existe pas. Par exemple tu fais :

$toto = $_POST['toto'] et tu n'as pas de variable toto envoyer par ton formulaire alors tu auras un notice.

Tu aurais du avoir :

if(isset($_POST['toto'])) $toto = $_POST['toto'];


Pour ne pas afficher les erreurs aux maximum tu peut mettre en haut de ton script error_reporting(E_ALL ^ E_NOTICE); Actuellement il est à error_reporting(E_ALL);
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS