Notice: Undefined index: num_client

Répondre
aquievreux
le 21/04/2010 à 09:47
aquievreux
Voici mon code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Antivirus</title>

  6. </head>

  7. <body>

  8. <?php
  9. session_start();

  10. if (@$_SESSION['auth'] != "yes")
  11. {
  12. header("Location: login.php");
  13. exit();
  14. }

  15. include("chiens.inc");
  16. $cxn = mysqli_connect($host, $user, $password, $database) or die ("Connexion en échec");
  17. $sql = "SELECT firstName,lastName FROM member WHERE loginName='{$_SESSION['logname']}'";
  18. $result = mysqli_query($cxn,$sql) or die ("Requete SELECT en échec dans Nouveau_Membre");
  19. $row = mysqli_fetch_assoc($result);
  20. extract($row);
  21. echo "<html>
  22. <head><title>Fiche</title></head>
  23. <body>
  24. <h2 style='margin-top: .7in; text-align: left'>
  25. $firstName $lastName</h2>\n";
  26. ?>


  27. <h1 align="center"><strong><u>Donnees client pour antivirus :</u></strong></h1>
  28. <p align="center">&nbsp;</p>

  29. <h1><u><strong>Client :</strong></u></h1>
  30. <h3>Numéro : <?php echo $_POST['num_client']; ?> </h3>
  31. <h3>Nom : <?php echo $_POST['nom_client']; ?> </h3>
  32. <h3>Prénom : <?php echo $_POST['prenom_client']; ?> </h3>
  33. <h3>Adresse : <?php echo $_POST['adresse_client']; ?> </h3>
  34. <h3>Téléphone : <?php echo $_POST['tel_client']; ?> </h3>
  35. <h3>Mail : <?php echo $_POST['mail_client']; ?> </h3>
  36. <h3>Date d'achat : <?php echo $_POST['date_achat_client']; ?> </h3>
  37. <h3>Date d'expiration : <?php echo $_POST['date_expir_client']; ?> </h3>


  38. <div id="corps">

  39. <?php

  40. try
  41. {
  42. $bdd = new PDO('mysql:host=localhost;dbname=antivirus','root','');
  43. }
  44. catch(Exception $e)
  45. {
  46. die('Erreur : ' .$e->getMessage());
  47. }

  48. $num_client = $_POST["num_client"];
  49. $nom_client = $_POST["nom_client"];
  50. $prenom_client = $_POST["prenom_client"];
  51. $adresse_client = $_POST["adresse_client"];
  52. $tel_client = $_POST["tel_client"];
  53. $mail_client = $_POST["mail_client"];
  54. $date_achat_client = $_POST["date_achat_client"];
  55. $date_expir_client = $_POST["date_expir_client"];

  56. try
  57. {
  58. $resultat1 = $bdd->prepare("insert into client (num_client, nom_client, prenom_client, adresse_client, tel_client, mail_client, date_achat_client, date_expir_client) values(:num_client, :nom_client , :prenom_client , :adresse_client, :tel_client, :mail_client, :date_achat_client, :date_expir_client)") or die(print_r($bdd->errorInfo()));
  59. $resultat1->execute(array(
  60. 'num_client' => $_POST['num_client'],
  61. 'nom_client' => $_POST['nom_client'],
  62. 'prenom_client' => $_POST['prenom_client'],
  63. 'adresse_client' => $_POST['adresse_client'],
  64. 'tel_client' => $_POST['tel_client'],
  65. 'mail_client' => $_POST['mail_client'],
  66. 'date_achat_client' => $_POST['date_achat_client'],
  67. 'date_expir_client' => $_POST['date_expir_client'],
  68. )) or die(print_r($bdd->errorInfo()));
  69. }
  70. catch(Exception $e)
  71. {
  72. ('Erreur1 : ' .$e->getMessage());
  73. }


  74. ?>
  75. </div>


  76. </body>
  77. </html>


Le problème que j'ai c'est qu'il m'affiche le message d'erreur suivant :


Notice: Undefined index: num_client in C:\wamp\www\antivirus\donnees.php on line 61

et ce pour chaque variable.

Merci de m'aider!!!!!!!!
LupusMic
le 21/04/2010 à 10:30
LupusMic
C'est normal. Une erreur de niveau E_NOTICE est déclenchée lorsqu'on tente d'accéder à un indice non-défini d'un tableau.

La solution la plus stupide est d'utiliser l'opérateur silencieux @. C'est stupide pour tout un tas de raisons.

Une première solution correcte est d'initialiser un tableau dont tu garanti qu'il aura les index attendus.

  1. <?php

  2. function array_get(& $array, $key, $default = '')
  3. {
  4. return isset($array[$key]) ? $array[$key] : $default ;
  5. }

  6. function client_reception($requete)
  7. {
  8. $filtre = array() ;

  9. // Récupération des données
  10. $filtre['num_client'] = array_get($requete, 'num_client']) ;

  11. return $filtre ;
  12. }


  13. $filtre = client_reception($requete) ;


Bien sûr, on a pas encore géré les problèmes liés à la sécurité.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
aquievreux
le 21/04/2010 à 10:40
aquievreux
Merci mais malgrés le code que t m'as donné il y a une erreur revoici le code :

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Antivirus</title>

  6. </head>

  7. <body>

  8. <?php
  9. session_start();

  10. if (@$_SESSION['auth'] != "yes")
  11. {
  12. header("Location: login.php");
  13. exit();
  14. }

  15. include("chiens.inc");
  16. $cxn = mysqli_connect($host, $user, $password, $database) or die ("Connexion en échec");
  17. $sql = "SELECT firstName,lastName FROM Member WHERE loginName='{$_SESSION['logname']}'";
  18. $result = mysqli_query($cxn,$sql) or die ("Requete SELECT en échec dans Nouveau_Membre");
  19. $row = mysqli_fetch_assoc($result);
  20. extract($row);
  21. echo "<html>
  22. <head><title>Fiche</title></head>
  23. <body>
  24. <h2 style='margin-top: .7in; text-align: left'>
  25. $firstName $lastName</h2>\n";
  26. ?>


  27. <form action="deco.php" method="POST">
  28. <input type="submit" value="Deconnexion">
  29. </form>

  30. <?php

  31. function array_get(& $array, $key, $default = '')
  32. {
  33. return isset($array[$key]) ? $array[$key] : $default ;
  34. }

  35. function client_reception($requete)
  36. {
  37. $filtre = array() ;

  38. // Récupération des données
  39. $filtre['num_client'] = array_get($requete, 'num_client']) ;
  40. $filtre['nom_client'] = array_get($requete, 'nom_client']) ;
  41. $filtre['prenom_client'] = array_get($requete, 'prenom_client']) ;
  42. $filtre['adresse_client'] = array_get($requete, 'adresse_client']) ;
  43. $filtre['tel_client'] = array_get($requete, 'tel_client']) ;
  44. $filtre['mail_client'] = array_get($requete, 'mail_client']) ;
  45. $filtre['date_achat_client'] = array_get($requete, 'date_achat_client']) ;
  46. $filtre['date_expir_client'] = array_get($requete, 'date_expir_client']) ;

  47. return $filtre ;
  48. }


  49. $filtre = client_reception($requete) ;
  50. ?>

  51. <h1 align="center"><strong><u>Donnees client pour antivirus :</u></strong></h1>
  52. <p align="center">&nbsp;</p>

  53. <h1><u><strong>Client :</strong></u></h1>
  54. <h3>Numero : <?php echo $_POST['num_client']; ?> </h3>
  55. <h3>Nom : <?php echo $_POST['nom_client']; ?> </h3>
  56. <h3>Prenom : <?php echo $_POST['prenom_client']; ?> </h3>
  57. <h3>Adresse : <?php echo $_POST['adresse_client']; ?> </h3>
  58. <h3>Téléphone : <?php echo $_POST['tel_client']; ?> </h3>
  59. <h3>Mail : <?php echo $_POST['mail_client']; ?> </h3>
  60. <h3>Date d'achat : <?php echo $_POST['date_achat_client']; ?> </h3>
  61. <h3>Date d'expiration : <?php echo $_POST['date_expir_client']; ?> </h3>


  62. <div id="corps">

  63. <?php

  64. try
  65. {
  66. $bdd = new PDO('mysql:host=localhost;dbname=antivirus','root','');
  67. }
  68. catch(Exception $e)
  69. {
  70. die('Erreur : ' .$e->getMessage());
  71. }


  72. $num_client = $_POST["num_client"];
  73. $nom_client = $_POST["nom_client"];
  74. $prenom_client = $_POST["prenom_client"];
  75. $adresse_client = $_POST["adresse_client"];
  76. $tel_client = $_POST["tel_client"];
  77. $mail_client = $_POST["mail_client"];
  78. $date_achat_client = $_POST["date_achat_client"];
  79. $date_expir_client = $_POST["date_expir_client"];

  80. try
  81. {
  82. $resultat1 = $bdd->prepare("insert into client (num_client, nom_client, prenom_client, adresse_client, tel_client, mail_client, date_achat_client, date_expir_client) values(:num_client, :nom_client , :prenom_client , :adresse_client, :tel_client, :mail_client, :date_achat_client, :date_expir_client)") or die(print_r($bdd->errorInfo()));
  83. $resultat1->execute(array(
  84. 'num_client' => $_POST['num_client'],
  85. 'nom_client' => $_POST['nom_client'],
  86. 'prenom_client' => $_POST['prenom_client'],
  87. 'adresse_client' => $_POST['adresse_client'],
  88. 'tel_client' => $_POST['tel_client'],
  89. 'mail_client' => $_POST['mail_client'],
  90. 'date_achat_client' => $_POST['date_achat_client'],
  91. 'date_expir_client' => $_POST['date_expir_client'],
  92. )) or die(print_r($bdd->errorInfo()));
  93. }
  94. catch(Exception $e)
  95. {
  96. ('Erreur1 : ' .$e->getMessage());
  97. }


  98. ?>
  99. </div>


  100. </body>
  101. </html>


et voici l'erreur :

Parse error: parse error in C:\wamp\www\antivirus\donnees.php on line 50

la ligne 50 correspond à :

$filtre['num_client'] = array_get($requete, 'num_client']) ;
LA GLOBULE
le 21/04/2010 à 10:53
LA GLOBULE
Vire le crochet dans $filtre['num_client'] = array_get($requete, 'num_client') ;
aquievreux
le 21/04/2010 à 10:57
aquievreux
Merci j'avais pas fais attention donc désormais voici mes erreurs :

Notice: Undefined variable: requete in C:\wamp\www\antivirus\donnees.php on line 63

avec la ligne 63 qui correspond à :

$filtre = client_reception($requete) ;

Notice: Undefined index: num_client in C:\wamp\www\antivirus\donnees.php on line 70

avec la ligne 70 qui correspond à :

<h3>Numero : <?php echo $_POST['num_client']; ?> </h3>

Et cette erreur se répéte a chaque variable.
aquievreux
le 21/04/2010 à 14:03
aquievreux
En remplacant comme tu me le dis je garde la même erreur initiale :

Notice: Undefined index: num_client in C:\wamp\www\antivirus\donnees.php on line 70

avec la ligne 70 qui correspond à :

<h3>Numero : <?php echo $_POST['num_client']; ?> </h3>

Et cette erreur se répéte a chaque variable.
dark_nemo
le 21/04/2010 à 19:02
dark_nemo
Tu cherches à afficher $_POST['num_client']; alors que celui-ci n'a pas été définit. Donc php te le dit.

Juste un truc en passant. C'est super dangereux d'afficher les données non filtré comme ça. Tu t'exposes à pas mal de problèmes.

Je t'invite à regarder du coté de filter_var et filter_array pour filtrer un minimum tes données.

Tu peux aussi utiliser le bon vieux strip_tags qui élimine les balises.

Regarde aussi du coté de htmlentities avant d'afficher tes données, ça transforme les caractères spéciaux en entitiés html.
ça devrait t'aider un peu
LupusMic
le 21/04/2010 à 20:42
LupusMic
(aquievreux) Au temps pour moi, je n'ai pas testé, et j'ai oublié d'expliquer.

Je vais repaster en ajoutant quelques commentaires :
  1. <?php

  2. /**
  3. * \param array& $array Référence sur le tableau inspecté
  4. * \param (string|int) $key Clé ou index du tableau
  5. * \param mixed $default Valeur à retourner en cas d'absence de la valeur
  6. * \return mixed Valeur associée à la clé dans le tableau, ou la
  7. * valeur par défaut.
  8. */
  9. function array_get(& $array, $key, $default = '')
  10. {
  11. return isset($array[$key]) ? $array[$key] : $default ;
  12. }

  13. /** Requerche les données associées à un client dans un tableau.
  14. * \param array& $array Référence sur le tableau issu de la requête du
  15. * formulaire de soumission.
  16. * \return array Le tableau contenant les données pertinentes.
  17. */
  18. function client_reception(& $requete)
  19. {
  20. $filtre = array() ;

  21. // Récupération des données
  22. $filtre['num'] = array_get($requete, 'num_client') ;
  23. $filtre['prenom'] = array_get($requete, 'prenom_client') ;
  24. /* ... la suite des attributs à récupérer */
  25. $filtre['date_expir'] = array_get($requete, 'date_expir_client') ;


  26. return $filtre ;
  27. }


  28. // La fonction client_reception garanti que l'ensemble des attributs nécessairent au
  29. // concept de client sont définis, et initialisés.
  30. $client = client_reception($_POST) ;

  31. // À partir de là, tu utilises $client pour afficher et manipuler les données issues du
  32. // formulaire.

  33. export($client) ;
  34. echo $nom ;

  35. export($client, EXTR_OVERWRITE | EXTR_PREFIX_ALL, 'client_') ;
  36. echo $client_nom ;


(dark_nemo) strip_tags n'est pas une bonne idée, ça introduit plus de bogues que ce n'est pratique. La seule solution qui vaille le coup, à mon sens, c'est htmlentities (auquel tu as fait référence) et htmlspecialchars. Quand à filter_var, ce n'est pas destiné à sécuriser les données, mais je crois que c'est un problème qui sort du cadre de la question de notre amie.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours