Notice: Use of undefined constant ...

Répondre
aquievreux
le 15/04/2010 à 11:35
aquievreux
Voici mon code

  1. <?php
  2. /* Programme : Login.php
  3. * Description : Programme de Login pour la section à accés réservé de l'animalerie. Il propose deux options :
  4. * 1 - S'identifier par un couple nom de login/mot de passe
  5. * 2 - Créer un nouveau compte Identificateurs et mots de passe sont conservés dans une base de données MySQL
  6. *
  7. */

  8. session_start();
  9. include("chiens.inc"); // modifier le nom
  10. switch(@$_POST['do'])
  11. {
  12. case "login":
  13. $cxn = mysqli_connect($host, $user, $password, $database) or die ("Connexion impossible au serveur dans case login");

  14. $sql = "SELECT loginName FROM Member WHERE loginName='$_POST[fusername]'";
  15. $result = mysqli_query($cxn,$sql) or die ("Requête en échec 1.");
  16. $num = mysqli_num_rows($result);

  17. if ($num > 0) // loginname non trouvé
  18. {
  19. $sql = "SELECT loginName FROM Member WHERE loginName='$_POST[fusername]' AND password=md5('$_POST[fpassword]')";
  20. $result2 = mysqli_query($cxn,$sql) or die("Requête en échec2.");
  21. $num2 = mysqli_num_rows($result2);

  22. if ($num2 > 0) // Mot de passe OK
  23. {
  24. $_SESSION['auth'] = "yes";
  25. $logname = $_POST['fusername'];
  26. $_SESSION['logname'] = $logname;
  27. $today = date("Y_m-d h:i:s");
  28. $sql = "INSERT INTO Login (loginName,loginTime) VALUES ('$logname', '$today')";
  29. $result = mysqli_query($cxn,$sql) or die ("INSERT en échec");
  30. header("Location: membre_page.php"); /***** *****/
  31. }
  32. else // mot de passe incorrect
  33. {
  34. $message = "Le nom de Login '$POST[fusername]' existe, mais le mot de passe ne va pas ! Réessayez.<br>";
  35. include("login_form.inc");
  36. }
  37. }
  38. elseif ($num == 0) // Nom de login introuvable
  39. {
  40. $message = "Le nom de login que vous avez saisi n existe pas. Essayez encore.<br>";
  41. include("login_form.inc");
  42. }
  43. break;

  44. case "new":
  45. /* Recherche de champs vide */
  46. foreach($_POST as $field => $value)
  47. {
  48. if ($field != "fax")
  49. {
  50. if ($value == "")
  51. {
  52. $blanks[] = $field;
  53. }
  54. }
  55. }
  56. if (isset($blanks))
  57. {
  58. $message_new = "Champs non saisis. Veuillez les renseigner : ";
  59. foreach($blanks as $value)
  60. {
  61. $message_new = "$value, ";
  62. }
  63. extract($_POST);
  64. include("login_form.inc");
  65. exit();
  66. }

  67. /* Validation des données */
  68. foreach($_POST as $field => $value)
  69. {
  70. if (!empty($value))
  71. {
  72. //if (eregi("name", $field) and !eregi("login", $field))
  73. if (preg_match("/name/i", $field) and !preg_match("/login/i", $field))
  74. //if (stristr($field, "name") and !stristr($field, "login"))
  75. {
  76. //if (!ereg("^[A-Za-z' -]{1,50}$", $value))
  77. if (!preg_match("/^[A-Za-z' -]{1,50}$/i", $value))
  78. //if (!strstr("^[A-Za-z' -]{1,50}$", $value))
  79. {
  80. $errors[]= "$value n est pas un nom valide.";
  81. }
  82. }
  83. //if (eregi("street", $field) or eregi("addr",$field) or eregi("city", $field))
  84. if (preg_match("/street/i", $field) or preg_match("/addr/i",$field) or preg_match("/city/i", $field))
  85. //if (stristr($field, "street") or stristr($field, "addr") or stristr($field, "city"))
  86. {
  87. //if(!ereg("^[A-Za-z0-9.,' -]{1,50}$",$value))
  88. if(!preg_match("/^[A-Za-z0-9.,' -]{1,50}$/i",$value))
  89. //if(!strstr($value, "^[A-Za-z0-9.,' -]{1,50}$"))
  90. {
  91. $errors[] = "$value est incorrect.";
  92. }
  93. }

  94. //if (eregi("email", $field))
  95. if (preg_match("/email/i", $field))
  96. //if (stristr($field, 'email'))
  97. {
  98. //if (!ereg("^.+@.+\\..+$",$value))
  99. if (!preg_match("/^.+@.+\\..+$/i",$value))
  100. //if (!strstr($value, "^.+@.+\\..+$"))
  101. {
  102. $errors[] = "$value est refusé comme email.";
  103. }
  104. }


  105. } // Fin de if empty
  106. } // Fin de foreach
  107. if (@is_array($errors))
  108. {
  109. $message_new = "";
  110. foreach($errors as $value)
  111. {
  112. $message_new .= $value. " Reessayez<br />";
  113. }
  114. extract($_POST);
  115. include("login_form.inc");
  116. exit();
  117. }

  118. /* Nettoyage des données */
  119. $cxn = mysqli_connect($host, $user, $password, $database);

  120. foreach($_POST as $field => $value)
  121. {
  122. if ($field != "Button" and $field != "do")
  123. {
  124. if ($field == "password")
  125. {
  126. $password = strip_tags(trim($value));
  127. }
  128. else
  129. {
  130. $fields[] = $field;
  131. $value = strip_tags(trim($value));
  132. $values[] = mysqli_real_escape_string($cxn, $value);
  133. $$field = $value;
  134. }
  135. }
  136. }

  137. /* Le nom de login existe t-il deja ? */
  138. $sql = "SELECT loginName FROM Member WHERE loginName = '$loginName'";
  139. $result = mysqli_query($cxn, $sql) or die ("Requete SELECT en echec dans case new");
  140. $num = mysqli_num_rows($result);

  141. if (num > 0)
  142. {
  143. $message_new = "$loginName existe deja. Choisissez en un autre.";
  144. include("login_form.inc");
  145. exit();
  146. }

  147. /* Ajout d un nouveau membre dans la base */
  148. else
  149. {
  150. $today = date("Y-m-d");
  151. $fields_str = implode(",", $fields);
  152. $values_str = implode(",", $values);
  153. $fields_str .=",createDate";
  154. $values_str .='"'.","."md5"."('".$password."')";
  155. $sql = "INSERT INTO Member ";
  156. $sql .="(".$fields_str.")";
  157. $sql .=" VALUES ";
  158. $sql .="(".'"'.$values_str.")";
  159. $result = mysqli_query($cxn, $sql) or die ("Requete INSERT en echec.");
  160. $_SESSION['auth']="yes";
  161. $_SESSION['logname'] = $loginName;

  162. /* Envoyer un email au nouveau membre */
  163. /*
  164. $emess = "Un nouveau compte de membre vient d'être créé.";
  165. $emess .= " Votre identificateur et votre mot de passe sont : ";
  166. $emess .= "\n\n\t$loginName\n\t$password\n\n";
  167. $emess .= "Nous apprecions l interet que vous portez a notre magasin. \n\n";
  168. $subj = Votre nouveau compte :
  169. $mailsnd = mail("$email","$subj","$emess");
  170. header("Location: Nouveau_membre.php");
  171. */

  172. }
  173. break;

  174. default:
  175. include("login_form.inc");
  176. }
  177. ?>


Voici l'erreur qu'il me reste :


  1. Notice: Use of undefined constant num - assumed 'num' in C:\wamp\www\autre\login.php on line 176
  2. Requete INSERT en echec.



Malgrés toute les modifs je ne trouve pas aidez moi svp!!!!!!!!!!!
moogli
le 15/04/2010 à 14:02
moogli
Salut,

Comme ca je ne vois pas trop. Sd serzit bien d'ajouter la requete dans le message d'erreur ligne 174 afin de voir pourquoi la requete echoue.

Le message d'erreur en lui meme indique qu'il n'arrive pas a utiliser du texte comme une constante. En gros cela arrive quand on oublie les ' dans un tableai ou une chaine de caracterz quelconque mais aussi si tu n'a pas mis le $ devant une variable ;)

Donne nous le message d'erreur avec la requete sql que l'on est plus d'infos (a tu d'autre message dans le source html ?)

@+
Il en faut peu pour être heureux !!!!!
aquievreux
le 15/04/2010 à 15:08
aquievreux
C'est bon j'ai trouvé ce n'était pas :

  1. <?php
  2. if (num > 0)
  3. ?>


mais :

  1. <?php
  2. if ('num' > 0)
  3. ?>
nbourgeo
le 10/06/2010 à 13:57
nbourgeo
Bonjour,

En fait le code que tu devrais avoir est le suivant :

  1. <?php
  2. if ($num > 0)
  3. ?>


En effet, tu récupères la variable définie plus haut ($num) pour savoir si ta requête retourne un résultat.

L'erreur que tu avais, venait du fait que comme tu avais marqué :

  1. <?php
  2. if (num > 0)
  3. ?>


Php cherchait une constante s'appelant num et qui n'existait pas.

Bye
nbourgeo
nbourgeo
le 10/06/2010 à 14:15
nbourgeo
En relisant ton message, j'ai noté que tu avais une seconde erreur :

Requete INSERT en echec.

Celle-ci vient du code suivant :

  1. $fields_str .=",createDate";
  2. $values_str .='"'.","."md5"."('".$password."')";
  3. $sql = "INSERT INTO Member ";
  4. $sql .="(".$fields_str.")";
  5. $sql .=" VALUES ";
  6. $sql .="(".'"'.$values_str.")";


Celui-ci devrait être :

  1. $fields_str .="createDate"; // Suppression de la virgule
  2. $values_str .='"'.","."md5"."('".$password."')";
  3. $sql = "INSERT INTO Member ";
  4. $sql .= "(" . $fields_str . ")";
  5. $sql .= " VALUES ";
  6. $sql .= "('" . $values_str . "')";


Il peut encore subsister une erreur dans la définition de $values_str , due à une mauvaise utilisation des simples et doubles quotes. Pour résoudre cela, n'hésites pas à afficher ta requête SQL en faisant par exemple :

  1. echo $sql;


Bye
nbourgeo
Répondre

Ecrire un message

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