IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Page blanche


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 11
    Points
    11
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
     
     
    ?>

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
      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 : Sélectionner tout - Visualiser dans une fenêtre à part
      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 : Sélectionner tout - Visualiser dans une fenêtre à part
      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).

  3. #3
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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 127
    Points : 2 557
    Points
    2 557
    Par défaut
    <?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 ...

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    un petit détail aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql= "SELECT uti_nom, uti_mpas,profil, nom, prenom FROM user WHERE uti_mpas = '$motpasse' AND uti_nom = '$utilisateur' AND profil = '$prof'"
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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

Discussions similaires

  1. Page blanche à cause d'une requête SQL
    Par sinifer dans le forum Langage
    Réponses: 8
    Dernier message: 27/08/2009, 09h48
  2. [MySQL] update sql me donne une page blanche
    Par stefanelle dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 27/02/2009, 09h10
  3. Page blanche après requêtes PHP/SQL
    Par MCVampire dans le forum Langage
    Réponses: 2
    Dernier message: 23/09/2008, 07h16
  4. [Directives] Page blanche quand erreur de syntaxe
    Par syl2095 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 17/02/2006, 15h15
  5. [CR] Avoir seulement une page blanche qd la base est vide???
    Par littleChick dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 13/08/2002, 18h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo