Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2006, 22h38   #1
Invité de passage
 
Inscription : février 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 6
Points : 3
Points : 3
Envoyer un message via Yahoo à Michelinewedraogo
Par défaut [SQL] Page blanche

Salut a tous .moncode ne me signale aucune erreur mais dans l'explorateur la page d'authentification me renvoie sur une page vide qui a peine télécharger quand j rentre les données.jesuis un debutante en php et je demande votre aide
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
 
//demarage de la session
session_start();
//recuperation des données saisies dans le formulaire
$utilisateur =strtolower($HTTP_POST_VARS["uti_nom"]);
$motpasse = strtolower($HTTP_POST_VARS ["uti_mpas"]);
$prof = strtolower($HTTP_POST_VARS["profil"]);
// initialisation des variables de travail
 
 
$user="root";
$password="";
$serveur="localhost";
$db="bcb";
 
 
 
//connection au serveur de base de donnée
 
 $lien = mysql_connect($serveur,$user,$password)or die("erreur de connexion au serveur");
 
//choix de la base de donnée
mysql_select_db($db) or die("erreur de selection de la base de donnée") ;
 
//on n'effectue les traitments q'a condition que les informations ait etés postées
if (isset($_POST) && (!empty($_POST["uti_nom"]))&& (!empty($_POST
["uti_mpas"])) && (!empty($_POST["profil"]))){extract ($_POST);
 
 //extraction des données
$sql= (" select uti_nom, uti_mpas,profil, nom, prenom from user where uti_mpas = '$motpasse' AND uti_nom = '$utilisateur' AND profil = '$prof'" ) or die (mysql_error());
$result = mysql_query($sql,$lien);
  $nb = mysql_num_rows($result) ;
  // on verifie que lutilisateur existe bien
if ($nb >0 ){ 
$data = mysql_fetch_assoc($result) ; 
 
 
	// if (mysql_num_rows($result) >0 ){
	   // $data= mysql_fetch_assoc($result); 
 
		 if(($_POST["uti_nom"]!= $utilisateur))
		   echo "<script language=\"Javascript\"alert(\Nom utilisateur erroné!\")</script>";
		  elseif (($_POST["uti_mpas"]!= $motpasse))
		   echo "<script language=\"Javascript\"alert(\Mot de passe erroné!\")</script>";
		     elseif (($_POST["profil"]!= $prof)) 
		echo "<script language=\"Javascript\"alert(\profil erroné!\")</script>";
		 else { 
	// si les données sont corectes	   
        if (($_POST["uti_nom"]== $utilisateur)&& ($_POST["uti_mpas"]== $motpasse) &&($_POST["profil"]=='INFORMATICIEN') ){
 
		header('location:menuinformatique.php');//rediriger vers la page menu informatique
		$_SESSION["uti_nom"]= $data["uti_nom"];
       $_SESSION["uti_mpas"]= $data["uti_mpas"];
       $_SESSION["nom"]=$data["nom"];
       $_SESSION["prenom"]=$data["prenom"];
        $_SESSION["profil"]= $data["profil"];
		}
			 else  {
       header("location:demande.php"); // rediriger vers la page demande
 
      $_SESSION["uti_nom"]= $data["uti_nom"];
       $_SESSION["uti_mpas"]= $data["uti_mpas"];
       $_SESSION["nom"]=$data["nom"];
       $_SESSION["prenom"]=$data["prenom"];
        $_SESSION["profil"]= $data["profil"]; 
		}
 
 
 
 
		}
	  }
}
 else   
  {header("location:ouvsession.php");}
 
 
 
mysql_free_result($result);
mysql_close($db);
 
 
?>
Michelinewedraogo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2006, 23h07   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Pense à utilise la balise [ code ] s'il-te-plaît.
Nous avons même un nouvel outil de mise en couleur du code PHP :
http://php.developpez.com/bbcode/


Revenons à tes moutons...

J'ai plusieurs choses à te dire :
  • $HTTP_POST_VARS est dépréciée : utilise de préférence $_POST
  • Tu ne testes pas si $HTTP_POST_VARS existe avant d'en utiliser la valeur. Si tu n'as pas de warning (ce qui semble être le cas), cela signifie que error_reporting est à off dans ton fichier php.ini : je te recommande vivement de le mettre à E_ALL sur ta machine de développement.
  • Si tu ne comptes pas utiliser simultanément plusieurs connexions à MySQL (cela semble être le cas), alors tu n'as pas besoin de récupérer la valeur de retour de mysql_connect().
  • Ici, tu confonds un peu tout ^^
    Code :
    1
    2
    $sql= (" select uti_nom, uti_mpas,profil, nom, prenom from user where uti_mpas = '$motpasse' AND uti_nom = '$utilisateur' AND profil = '$prof'" ) or die (mysql_error());
    $result = mysql_query($sql,$lien);
    Il est inutile de mettre des parenthèses et or die() pour affecter une valeur à une variable.
    Par contre, il faut mettre or die() à l'appel à mysql_query().
    Profites-en pour écrire le SQL en mettant les mots du langage en majuscules, je te promets que cela taidera par la suite :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    $sql = "SELECT uti_nom, uti_mpas, profil, nom, prenom
            FROM user
            WHERE uti_mpas = '$motpasse'
               AND uti_nom = '$utilisateur'
               AND profil = '$prof'";
     
    $result = mysql_query($sql)
       or die (mysql_error());
  • Tes tests du style :
    Code :
    if(($_POST["uti_nom"]!= $utilisateur))
    Ne sont pas des plus efficaces car ils ne comparent pas par rapport à la base de données...

En gros, c'est tout.
Je te recommande vivement d'utiliser un bon éditeur de code, cela t'aidera énormément à t'organiser et notamment à indenter ton code (quelque chose qui fait cruellement défaut à l'exemple que tu nous donnes ici).
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2006, 18h38   #3
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
Citation:
<?php

//demarage de la session
session_start();

//recuperation des données saisies dans le formulaire
$utilisateur =strtolower($_POST["uti_nom"]);
$motpasse = strtolower($_POST["uti_mpas"]);
$prof = strtolower($_POST["profil"]);

// initialisation des variables de travail
$user="root";
$password="";
$serveur="localhost";
$db="bcb";


//connection au serveur de base de donnée
mysql_connect($serveur,$user,$password) or die("erreur de connexion au serveur");

//choix de la base de donnée
mysql_select_db($db) or die("erreur de selection de la base de donnée") ;

// on n'effectue les traitments q'a condition que les informations ait etés postées
if ( isset($_POST) )
{
if ( !empty(
$_POST["uti_nom"]) && !empty($_POST["uti_mpas"]) && !empty($_POST["profil"]) )
{
extract($_POST);

//extraction des données
$sql= "SELECT uti_nom, uti_mpas,profil, nom, prenom FROM user WHERE uti_mpas = '$motpasse' AND uti_nom = '$utilisateur' AND profil = '$prof'";
$result = mysql_query($sql);
$nb = mysql_num_rows($result) ;

// on verifie que lutilisateur existe bien
if ($nb >0 )
{
$data = mysql_fetch_assoc($result) ;

if (
$_POST["uti_nom"] != $utilisateur )
{
echo
"<script language=\"Javascript\"alert(\Nom utilisateur erroné!\")</script>";
}
elseif (
$_POST["uti_mpas"]!= $motpasse )
{
echo
"<script language=\"Javascript\"alert(\Mot de passe erroné!\")</script>";
}
elseif (
$_POST["profil"]!= $prof )
{
echo
"<script language=\"Javascript\"alert(\profil erroné!\")</script>";
}
else
{
// si les données sont corectes
if ( ($_POST["uti_nom"]== $utilisateur) && ($_POST["uti_mpas"]== $motpasse) && ($_POST["profil"]=='INFORMATICIEN') )
{
header('location:menuinformatique.php'); //rediriger vers la page menu informatique
$_SESSION["uti_nom"]= $data["uti_nom"];
$_SESSION["uti_mpas"]= $data["uti_mpas"];
$_SESSION["nom"]=$data["nom"];
$_SESSION["prenom"]=$data["prenom"];
$_SESSION["profil"]= $data["profil"];
}
else
{
header("location:demande.php"); // rediriger vers la page demande

$_SESSION["uti_nom"]= $data["uti_nom"];
$_SESSION["uti_mpas"]= $data["uti_mpas"];
$_SESSION["nom"]=$data["nom"];
$_SESSION["prenom"]=$data["prenom"];
$_SESSION["profil"]= $data["profil"];
}
}
}
}
}
else
{
header("location:ouvsession.php");
}


mysql_free_result($result);
mysql_close($db);

?>
J'ai remis le code en forme, j'ai enlevé les trucs qui sont pas top, après ca sera plus visible ...

j'avais 5 minutes et voila ...
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2006, 23h19   #4
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
un petit détail aussi :

Code :
1
2
3
4
//recuperation des données saisies dans le formulaire
$utilisateur = addslashes( strtolower($_POST["uti_nom"]) );
$motpasse = addslashes(  strtolower($_POST["uti_mpas"]);
$prof = addslashes(  strtolower($_POST["profil"]);
sinon, tu auras des erreurs dans ta requete si le gars saisie des pseudo/password avec des ' ou des "

Code :
$sql= "SELECT uti_nom, uti_mpas,profil, nom, prenom FROM user WHERE uti_mpas = '$motpasse' AND uti_nom = '$utilisateur' AND profil = '$prof'"
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2006, 23h31   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Il s'agit plutôt de se protéger contre les injections SQL que d'éviter les erreurs. Une erreur, ce n'est pas grave ; une injection, ça peut faire très mal.
À ce propos, il est préférable d'utiliser mysql_real_escape_string() qu'addslashes().
Lire ici : http://shiflett.org/archive/184
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h21.


 
 
 
 
Partenaires

Hébergement Web