bigornot Posté 7 Avril 2004 Posté 7 Avril 2004 (modifié) voila, j'ai une script, et,il y a une erreur ... mais, quelle est cette erreur ? ca parait correct ! voila le bout de code : num1=mysql_numrows('SELECT * FROM inscription WHERE pseudo=\"$pseudo\" AND passe=\"$passe\"');if($pseudo == "") { echo "Vous devez mettre un pseudo !";exit;}if($passw == "") { echo "Vous devez mettre un password !";exit;}if(mysql_numrows($num1) == "0") {echo "faux mot de passe ou faux pseudo ";}else{$duree = 60*60; // 1 heure en secondes !setcookie("identok","antiseche_AT_expose.fr",time()+$duree);}?> on m'a dit : ton bout de code n'est valable que sous php3 ... mais alors, maintenant, c'est quoi ? ps : l'erreur est surtout là : if(mysql_numrows($num1) == "0") {echo "faux mot de passe ou faux pseudo ";}else{$duree = 60*60; // 1 heure en secondes !setcookie("identok","antiseche_AT_expose.fr",time()+$duree);} Merci // edit : ca me fait une parse error Modifié 7 Avril 2004 par bigornot
Beatnykk Posté 7 Avril 2004 Posté 7 Avril 2004 (modifié) à mon avis, je dirais que time()+$duree c'est pas trop catholique ça. réecrit le temps dans une variable ($actuel) dans le bon format (time() en php donne le temps dans des formats particuliers selon les options) pis on verra. nb : le parse error interivent à quelle ligne dans le debugger ? nb2 : c'est normal qu'il y a pas de $ devant le 1er num1 ? et pourquoi pas $duree='3600' ?? nb3 : tu as mangé chaud ce midi ? nb4 : tu as déjà vu une prison turque, petit ? Modifié 7 Avril 2004 par Beatnykk
bigornot Posté 7 Avril 2004 Auteur Posté 7 Avril 2004 (modifié) ok, merci ... nbrep : line 8 c-a-d :if(mysql_numrows($num1) == "0") { nb2rep : non, c'est pas normal... pourquoi pas 3600 ? 60x60, c'est plus simple ... nb3rep : du lapin, des pates nb4rep : euhh non, pourquoi ? // edit et si je supprimais time() ...? Modifié 7 Avril 2004 par bigornot
Arlette Posté 7 Avril 2004 Posté 7 Avril 2004 Bigornot, Si je comprend ceci: $num1=mysql_numrows('SELECT * FROM inscription WHERE pseudo=\"$pseudo\" AND passe=\"$passe\"'); en rajoutant un $ à num1... Par contre, je ne vois pas ce que tu veux faire ici: if(mysql_numrows($num1) == "0") ..... Tu passes à la fonction mysql_numrows() un argument qui est le nombre retourné précédemment... Tu devrais plutôt faire ton test comme ceci: if ($num1 == 0) ....
Beatnykk Posté 7 Avril 2004 Posté 7 Avril 2004 mais si $num1 est DEJA un mysql_numrows, pourquoi refaire un numrows dessus ?
bigornot Posté 7 Avril 2004 Auteur Posté 7 Avril 2004 (modifié) ah ouiii ! en effet ! c'est pour ca ... merci :-) Ps et edit : la prison turque, c'est pourquoi ??? Modifié 7 Avril 2004 par Dan
bigornot Posté 7 Avril 2004 Auteur Posté 7 Avril 2004 ah, ca marche pas ... mysql_numrows(mysql_query("SELECT .......")) ca irait ?
Anonymus Posté 7 Avril 2004 Posté 7 Avril 2004 Bonjour, mysql_numrows n'est plus utilisé depuis php3, d'où la remarque. On est passé à mysql_num_rows. C'est comme ça. time() retourne la valeur du timestamp actuel, soit 1081359434 au 07/04/2004, à 19h37. Il est exprimé en secondes depuis le 1er janvier 1970 (mais ca, c'est de la science fiction). Pour ce qui est de ton code, il est ... confus. Il faut d'abord tester les variables. Donc, les lignes : if($pseudo == "") { echo "Vous devez mettre un pseudo !";exit;} if($passw == "") { echo "Vous devez mettre un password !";exit;} Sauf que là, c'est un peu violent... Dire : "Vous devez mettre un pseudo" et présenter une page vide, ca fait un peu... violent, si, si. Ensuite, si les variables $pseudo et $passw sont bonnes, on peut faire la requète, et la lancer. C'est le classique mysql_query, associé à la variable $query : $query = "SELECT * FROM inscription WHERE pseudo=\"$pseudo\" AND passe=\"$passe\""; Notes au passage les modifications au niveau des guillemets. Et donc, le mysql_query : $result = mysql_query($query,$link); Une fois que l'on a l'identifiant de ressource, on peut lancer le mysql_num_rows pour connaitre le nombre de lignes contenues dans la requète : Il a besoin d'un identifiant de ressources : $num_rows = mysql_num_rows($result); Avec ca, on possède le nombre de lignes : $num_rows. Mais : php interprète les variables de façon... joviale Si tu testes le nombre de lignes par la commande if ($num_rows == 0) tu risques de te faire piéger par le cas où $num_rows contient une erreur, et donc est égal à FALSE, et est donc égal à 0. Il faut donc distinguer les deux cas, et tester les 2. Pour cela, il faut utiliser l'opérateur : === qui signifie égal et de même type. Soit : if ($num_rows === 0) Pour le reste, c'est bon... apparemment. Je te laisse compiler tout ca Anonymus.
bigornot Posté 7 Avril 2004 Auteur Posté 7 Avril 2004 mais, alors, pour time, je peux supprimer ? pasque je me revois pas remettre a jour toute les 2 minutes, avec un nombre à rallonge ... dis donc, 34 ans ... 1 miliard 81 millions 359 mille 434 de secondes ...
bigornot Posté 7 Avril 2004 Auteur Posté 7 Avril 2004 modif faite : parse error on line13 line 13 : $num_rows = mysql_num_rows($result) ; des "" ???
Dan Posté 7 Avril 2004 Posté 7 Avril 2004 modif faite : parse error on line13 line 13 : $num_rows = mysql_num_rows($result) ; des "" ??? Quand tu as une "parse error", regardes bien, l'erreur est très souvent à la ligne au dessus, genre un ; oublié Dan
bigornot Posté 7 Avril 2004 Auteur Posté 7 Avril 2004 oui, mais la, si c'est la ligne du dessus :$result = mysql_query($query) ;
Anonymus Posté 7 Avril 2004 Posté 7 Avril 2004 C'est l'une des 12 lignes du dessus. Tu peux les mettre, s'il te plait parse error on line13
bigornot Posté 8 Avril 2004 Auteur Posté 8 Avril 2004 voilà : <html> <head> <?php include("config.php"); _AT_mysql_connect($db_chemin,$db_user,$db_pass) or die("Impossible de se connecter à la base de données") or die ("rate"); _AT_mysql_select_db("xxxxxx"); if($pseudo == ""){ echo "Vous devez mettre un pseudo !";exit;} if($passw == ""){ echo "Vous devez mettre un password !";exit;} $query = "SELECT * FROM inscription WHERE pseudo=\"$pseudo\" AND passe=\"$passe\""; $result = mysql_query($query);
Anonymus Posté 8 Avril 2004 Posté 8 Avril 2004 Bonjour, ce code ne peut pas marcher. 1/ Tu mets $passw puis $pass. 2/ Il te faut récupérer l'identifiant de lien, lorsque tu fais mysql_connect. 3/ Tu mets 2 fois OR sur la même ligne, soit 3 conditions. $link = mysql_connect($server,$user,$pass,$db) OR die("Stop"); Sinon, un conseil, penses à passer à la ligne, lorsque tu as plusieurs instructions, comme ceci : if($pseudo == ""){ echo "Vous devez mettre un pseudo !"; exit; } réessaie.
Anonymus Posté 8 Avril 2004 Posté 8 Avril 2004 Lorsque tu fais mysql_connect(...), il te faut récupérer un id, parce que tu en as besoin, par la suite, pour faire mysql_query. $link = mysql_connect ... $query = "..."; $result =mysql_query($query,$link); Anonymus.
bigornot Posté 9 Avril 2004 Auteur Posté 9 Avril 2004 ah ?? ca marche sans, pourtant ... mais bon, merci quand même !!
Anonymus Posté 9 Avril 2004 Posté 9 Avril 2004 Ca marche sans, le paramètre est optionnel. Mais dans le cas où tu ne le mentionnes pas, msql_query prend par défaut la dernière connection active sur le serveur. Question : La dernière connection active correspondra t elle à la connection que tu souhaites ? Réponse : Pas forcément. Tu auras bien un résultat, mais qui ne correspondra pas à la demande. Anonymus.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant