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

Langage PHP Discussion :

[Tableaux] Messages d'erreur liés à l'absence de variables [Débutant(e)]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Par défaut [Tableaux] Messages d'erreur liés à l'absence de variables
    Bonjour,

    Je suis débutant, j ai une page index.html ou je dois indiquer mon login et password quand je clic sur le bouton pour me connecter à la zone membre je reçois comme message ceci :

    Notice: Undefined variable: pseudo_membre in c:\program files\easyphp1-8\www\monsitetest\zone membre\login.php3 on line 14

    Notice: Undefined variable: passe_membre in c:\program files\easyphp1-8\www\monsitetest\zone membre\login.php3 on line 14

    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\monsitetest\zone membre\login.php3:14) in c:\program files\easyphp1-8\www\monsitetest\zone membre\login.php3 on line 20

    voici mon code de mon fichier index.html :
    Code HTML : 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
    <html>
    <head>
    <title>WebJeff - Espace membre</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body background="zertxtr.gif" bgcolor="#000000" text="#FFFFFF" link="#669966" vlink="#6699CC" alink="#999999"><!--msnavigation--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td><!--mstheme--><font face="Arial, Arial, Helvetica">
    <div align="center"><b><font face="Verdana" size="2">Pour 
      entrer dans l'espace membre, saisissez votre pseudo et votre mot de passe :</font></b> 
    <form method="post" action="login.php3">
      <b><font face="Verdana" size="1">Pseudo<br>
        <input type="text" name="pseudo_membre">
        <br>
        <br>
        Mot de passe</font></b><br>
        <input type="password" name="passe_membre">
        <br>
        <br>
        <input type="submit" name="Submit" value="Entrer">
    </form>
    <font face="Verdana" size="2"><a href="adduser.php3">Inscription</a></font>
    </div> 	
    <br><br>
    <div align="center"><img src="img-cours.jpg" border="0" width="268" height="350" align="middle"></div>
    </body>
    </html>

    le fichier config.php3 :
    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
    <?
    /*-----------------------------------------------------------------*/
    /*	VARIABLES A MODIFIER			*/
    /*-----------------------------------------------------------------*/
     
    // SERVEUR SQL
    $sql_serveur="localhost";
     
    // LOGIN SQL
    $sql_user="root";
     
    // MOT DE PASSE SQL
    $sql_passwd="";
     
    // NOM DE LA BASE DE DONNEES
    $sql_bdd="tbusers";
     
    // REDIRECTION VERS UNE PAGE ERREUR AU CAS OU LE LOGIN ET MOT DE PASSE SONT INVALIDES
    $url_erreur="erreur.htm";
     
    // PAGE PRINCIPALE PROTEGEE PAR MOT DE PASSE
    $zone_membre="test.html";
    ?>
    le fichier login.php3 :
    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
    <?
    require("conf.php3");
     
    /*-----------------------------------------------------------------*/
    /*	PROGRAMME PRINCIPAL			*/
    /*-----------------------------------------------------------------*/
     
    // CONNEXION A LA BASE DE DONNEE
    $db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
    if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
     
    // ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
    // MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
    $requete=mysql_db_query($sql_bdd,"select pseudo,passe from membre where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\"",$db_link) or die(mysql_error());
     
    // SI AUCUN ENREGISTREMENT NE CORRESPOND
    if(mysql_num_rows($requete)==0)
    	{
    	// REDIRECTION VERS LA PAGE ERREUR
    	header("Location:$url_erreur");
    	}
     
    // SI LE LOGIN ET MOT DE PASSE SONT EXACTES	
    else
    	{
    	// CREATION D'UN IDENTIFIANT ALEATOIRE
    	$taille = 20;
    	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
    	srand(time());
    	for ($i=0;$i<$taille;$i++)
    		{
    		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
    		}
     
    	// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE 
    	$requete=mysql_db_query($sql_bdd,"update membre set id=\"$id\" where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\"",$db_link) or die(mysql_error());
     
    	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
    	header("Location:zonemembre.php3?id=$id");
    	}	
     
    // DECONNEXION MYSQL
    mysql_close($db_link);
    ?>
    Pouvez vous m'aider svp ?

    merci

  2. #2
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    ok, rien de grave, c'est juste que t'as activé les notices, et l'affichage de ces derniers provoque l'erreur...

    Un notice n'est pas une erreur mais signale que t'es pas un codeur super rigoureux. Rien de grave, tout le monde les désactive (Fichier php.ini ERROR_REPORTING E_ALL ~E_NOTICE).

    Ensuite, le fait que le notice apparait, ça envoie des info vers ton navigateur. Or, le header ne peut plus marcher si des info ont déjà été envoyé vers le navigateur avant l'appel de header().

    Donc corrige ton .ini, et tout devrait rentré dans l'ordre sans touché au code (que je n'ai pas lu).

  3. #3
    Membre éclairé
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Par défaut
    Merci ça fonctionne, encore juste un petit problème au niveau du code quand je clic sur inscription pour qu'il ajoute un membre dans ma db il ne fais rien ??
    Et pourtant j'ai bien ajouté ma db dans phpmyadmin et configuré le fichier config.php3 (voir l'autre post ci dessus ).

    Pouvez vous m'aider svp ?

    merci à vous.

    Ma table que j'ai ajouté :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE membre (
       id_membre int(10),
       id varchar(20),
       pseudo varchar(20),
       passe varchar(20)
    );

    code du fichier adduser.php3
    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
    85
    86
    87
    88
    89
    <html>
    <head>
    <title>WebJeff - Espace membre</title>
    </head>
    <body>
    <font face="Verdana" size="2">
    <center>
    <?
    require("conf.php3");
     
    switch($action) {
    /*-----------------------------------------------------------------*/
    /*	AJOUT DANS MySQL			*/
    /*-----------------------------------------------------------------*/
     
    case "add";
     
    // CONNEXION A LA BASE DE DONNEE
    $db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
    if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
     
    // TEST SUR LES VALEURS SAISIES
    if($pseudo_membre==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    if($passe_membre==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    // CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
    //if($email==""){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
    //if($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
     
    // ON VERIFIE SI CE PSEUDO EXISTE DEJA
    $requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo_membre\"",$db_link) or die(mysql_error());
    $num=mysql_num_rows($requete);
    if($num!=0)
    	{
    	echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href=\"javascript:window.history.back()\">Retour</a>";
    	}
    else
    	{
    	// CREATION D'UN IDENTIFIANT ALEATOIRE
    	$taille = 20;
    	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
    	srand(time());
    	for ($i=0;$i<$taille;$i++)
    		{
    		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
    		}
     
    	// ON RECHERCHE L'ID MAXIMUM DE LA TABLE
    	$requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());
    	$idmax=mysql_result($requete,0,"max(id_membre)");
     
    	// INSERTION DANS LA TABLE 
    	$idnew=$idmax+1;
    	$requete=mysql_db_query($sql_bdd,"insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\")",$db_link) or die(mysql_error());
    	// CHAMPS SUPLEMENTAIRES, complétez la requête précédente en ajoutant les variables et en respectant l'ordre des colonnes de la table. Exemple :
    	// insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$email\",\"$ville\")
     
    	// REDIRECTION VERS LA PAGE D'ENTREE DE L'ESPACE MEMBRE
    	echo "Merci, vous êtes bien enregistré. Cliquez <a href=\"$zone_membre?id=$id\">ici</a> pour entrer dans votre espace privé.";
    	}
     
    // DECONNEXION MYSQL
    mysql_close($db_link);
     
    break;
     
     
    /*-----------------------------------------------------------------*/
    /*	AFFICHAGE DU FORMULAIRE			*/
    /*-----------------------------------------------------------------*/
     
    default;
    echo "	<h2>Nouveau membre</h2>
    	<form action=\"adduser.php3\" method=\"post\">
    	<input type=\"hidden\" name=\"action\" value=\"add\">
    	Chosissez un pseudo<br><input type=\"text\" name=\"pseudo_membre\"><br>
    	Chosissez un mot de passe<br><input type=\"password\" name=\"passe_membre\"><br>
    	<! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->
    	<!-- Votre email<br><input type=\"text\" name=\"email\"><br> -->
    	<!-- Ville<br><input type=\"text\" name=\"ville\"><br> -->
    	<input type=\"submit\" value=\"Envoyer\">
    	</form>
    	<font face=\"Verdana\" size=\"2\"><a href=\"index.htm\">Se connecter</a></font>";
    break;
    }
    ?>
    </center>
    </font>
    </body>
    </html>

  4. #4
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    personne ici ne pourra (voudra?) t'aider si tu ne fait pas un test sur le retour de ta requete, et si en cas d'échec tu ne récupère l'erreur générée !

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    $pseudo_membre est certainement devenu $_POST['pseudo_membre'] au même titre que les variables venant d'un formulaire (méthode POST). Vous développez comme si register_globals était à On ce qui ne semble pas (ou plus) être le cas de votre environnement.

    Changer la valeur de error_reporting (!= E_ALL) pour la phase de développement est une très mauvaise idée : l'absence de ces messages ne vous mettra plus la puce à l'oreille lorsque vous commettrez des erreurs, qu'elles soient bêtes ou non. Par ailleurs, dans votre cas vous ne réglez même pas le problème puisqu'à variable inexistante n'est associée aucune valeur (bien que PHP vous l'interprète comme une valeur fausse).

  6. #6
    Membre éclairé
    Inscrit en
    Août 2007
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 416
    Par défaut
    Merci pour vos réponses, je suis débutant pas facile au début si vous pouvez m aider à résoudre mon problème ?

    merci à vous

    chris

Discussions similaires

  1. [Tableaux] Message d'erreur dans un foreach
    Par maysa dans le forum Langage
    Réponses: 2
    Dernier message: 14/08/2007, 11h45
  2. Réponses: 11
    Dernier message: 17/07/2006, 22h08
  3. [Tableaux] Message d'erreur PHP
    Par carmen256 dans le forum Langage
    Réponses: 9
    Dernier message: 15/05/2006, 13h09
  4. [Tableaux] Message d'erreur déroutant
    Par Damzz dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2006, 02h04
  5. [Tableaux] message d'erreur
    Par ista9im dans le forum Langage
    Réponses: 2
    Dernier message: 30/09/2005, 19h56

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