Aller au contenu

probleme script


bigornot

Sujets conseillés

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é par bigornot
Lien vers le commentaire
Partager sur d’autres sites

à 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é par Beatnykk
Lien vers le commentaire
Partager sur d’autres sites

Posté (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é par bigornot
Lien vers le commentaire
Partager sur d’autres sites

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... :blink:

Tu devrais plutôt faire ton test comme ceci:

if ($num1 == 0)  ....

Lien vers le commentaire
Partager sur d’autres sites

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 :D

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.

Lien vers le commentaire
Partager sur d’autres sites

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 ...

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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);

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...