}; ???

Forum.en1heure.com Index du Forum
 
Rechercher S'enregistrer Profil Se connecter pour vérifier ses messages privés Connexion
 

}; ???

Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
NSV



Inscrit le: 15 Oct 2004
Messages: 17

MessagePosté le: Lun Déc 13, 2004 9:29 pm | Sujet du message :

}; ???

Répondre en citantRevenir en haut

J'étais en train de regarder le codage d'un script pour un chat pgp (PhpMyChat), et je suis tombé sur un code que j'avais jamais vu auparavent :

if(condition1 == condition2) {
//action
};

C'est bien sur le "};" qui m'a interloqué, au derniere nouvelle pour fermer un bloc un simpl } suffit.

Sur de moi, j'abandonne la lecture de ce script vu qu'il était codé bizarrement.

Puis je tombe sur du code Iteasy, et je retombe nez à nez face à un "};" (ligne 47 de header.php).

D'un coup, d'un seul, j'étais plus très sur de moi sur le fait que "};" était une faute.

Donc, je le demande ici, "};" ça existe ?? et ça apporte quoi face au "}" simple ??

++
Voir le profil de l'utilisateurEnvoyer un message privé
vanquish
Administrateur


Inscrit le: 26 Mar 2004
Messages: 1552
Localisation: /var/www/

MessagePosté le: Mar Déc 14, 2004 2:39 pm | Sujet du message :

}; ???

Répondre en citantRevenir en haut

Bonjour !
Le }; provient d'une fatigue accumulée Laughing
En fait normalement seul le } est correct mais comme le }; n'est pas signalé comme erreur je ne l'avais même pas vu !
Merci pour l'info.

_________________
La liberté n'a pas de prix
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer l'e-mail
NSV



Inscrit le: 15 Oct 2004
Messages: 17

MessagePosté le: Mar Déc 14, 2004 8:06 pm | Sujet du message :

}; ???

Répondre en citantRevenir en haut

Ca me rassure alors ;o)

Les }; ça n'existe pas

Donc ligne 22 de 0sys_connexion_administration.php, y'a la meme erreur aussi ;o)

Et dans 0admin_header.php, donc y'a aussi pleins de petite erreur ;o)

Tiens d'ailleurs, un truc qui m'ennerve fortement :
le "exit();" !!

Par exemple ce code dans le 0admin_header.php (en ayant corriger les }Wink

if(!isset($_SESSION['ip_utilisateur'])) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
exit();
}
if($_SESSION['ip_utilisateur'] != $_SERVER['REMOTE_ADDR']) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
exit();
}
if(!isset($_SESSION['hash_acces_utilisateur'])) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
exit();
}
if($_SESSION['hash_acces_utilisateur'] != $hash_acces) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
exit();
}
if(!isset($_GET['sid'])) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
exit();
}
if($_GET['sid'] != session_id()) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
exit();
}
if(!isset($_SESSION['user_agent'])) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
exit();
}
if($_SESSION['user_agent'] != $_SERVER['HTTP_USER_AGENT']) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
exit();
}
@ob_start("ob_gzhandler");
...

Ce code par exemple, il aurait pas été plus logique, a la place d'utiliser des if en gogo et des exit() dans chaque, de coder avec la fameuse technique du if - elseif - else : logique non ? car quand on veut faire un autre test si le premier était faux, on met un elseif.

Donc ça donnerais :
if(!isset($_SESSION['ip_utilisateur'])) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
}
elseif($_SESSION['ip_utilisateur'] != $_SERVER['REMOTE_ADDR']) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
}
elseif(!isset($_SESSION['hash_acces_utilisateur'])) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
}
elseif($_SESSION['hash_acces_utilisateur'] != $hash_acces) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
}
elseif(!isset($_GET['sid'])) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
}
elseif($_GET['sid'] != session_id()) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
}
elseif(!isset($_SESSION['user_agent'])) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
}
elseif($_SESSION['user_agent'] != $_SERVER['HTTP_USER_AGENT']) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
}
else {
@ob_start("ob_gzhandler");
.....
}

Avec ce type de codage on voit toute de suite mieux les relations entre chaque test.

Je vois pas vraiment pk y'a des exit(); dans tout les sens, et pas que dans vos script.
Pour moi quand y'a un exit(); c'est que simplement l'imbrication des conditions (ou/et boucles) a été mal faite et que donc on ne peut arreter un script sans l'intervention d'un exit();
Alors qu'un if () {} et en else{} réponde dans la grande majorité des cas à cette demande.
Mais apparement le "else" est souvent oublié, et donc apres le test "if" qu'il rentre ou pas, le prog continue et affiche ce qui ne devrait pas afficher, donc le codeur rajoute un exit() au moins il est tranquille.
Mais si a la base il avait mis un else en toute logique ça serait jamais arrivé

++


EDIT :
En relisant le code, j'ai vu une simplification supplémentaire :
if(!isset($_SESSION['ip_utilisateur'] ||
$_SESSION['ip_utilisateur'] != $_SERVER['REMOTE_ADDR'] ||
!isset($_SESSION['hash_acces_utilisateur']) ||
$_SESSION['hash_acces_utilisateur'] != $hash_acces ||
!isset($_GET['sid']) ||
$_GET['sid'] != session_id() ||
!isset($_SESSION['user_agent'])
|| $_SESSION['user_agent'] != $_SERVER['HTTP_USER_AGENT']) {
$titre_page = "Autorisation refusée";
require("./0sys_autorisation_refusee.php");
}
else {
@ob_start("ob_gzhandler");
.....
}

Ca fait un énorme if, mais on gagne pas mal de ligne et donc de la place.
Voir le profil de l'utilisateurEnvoyer un message privé
vanquish
Administrateur


Inscrit le: 26 Mar 2004
Messages: 1552
Localisation: /var/www/

MessagePosté le: Mar Déc 14, 2004 8:22 pm | Sujet du message :

}; ???

Répondre en citantRevenir en haut

Hello !
Oui carrément tu as raison !
Merci je ferai les modifs Wink
Par contre kékitonfait mes exit(); ? Mr. Green

_________________
La liberté n'a pas de prix
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer l'e-mail
NSV



Inscrit le: 15 Oct 2004
Messages: 17

MessagePosté le: Mar Déc 14, 2004 8:28 pm | Sujet du message :

}; ???

Répondre en citantRevenir en haut

D'ailleurs dans le meme style (j'écris dans une nouveau message, car on risque de plus rien comprendre sinon)

dans 0admin_afficher_masquer_statistiques.php :
if($afficher_stats == "0") {
$nouvelle_configuration = str_replace("afficher_stats = \"0\"", "afficher_stats = \"1\"", $configuration);
$handle = fopen("./0sys_config.php","w+");
fwrite($handle,$nouvelle_configuration);
echo "<h1>Opération éffectuée</h1>
<p>Les statistiques de bas de pages sont maintenant affichées.</p>";
}
if($afficher_stats == "1") {
$nouvelle_configuration = str_replace("afficher_stats = \"1\"", "afficher_stats = \"0\"", $configuration);
$handle = fopen("./0sys_config.php","w+");
fwrite($handle,$nouvelle_configuration);
echo "<h1>Opération éffectuée</h1>
<p>Les statistiques de bas de pages sont maintenant désactivées.</p>";
}

Vu que logiquement, si la premiere condition est réalisé, la deuxieme ne le sera jamais, il faut mettre elseif à la place du 2° if.
Au moins quand le premier test est vrai, le parser zappera direct le test de l'autre en voyant que c'est un elseif (donc à tester que si les test précédent sont faux).
En mettant un autre if, tu obliger le parser à vérifier si la condition est vrai ou pas. Donc plus de travail pour lui.

D'ailleurs un autre truc bizarre, mais ne connaissant pas suffisament iteasy, je peux pas etre sur, mais apparament la varaiable $afficher_stats devrait etre de type entier (et oui meme si on déclare pas les types, ils existe quand meme ;o). Or ici, on teste si $afficher_stats == "0", mais en mettant des "", ça indique que c'est une chaine de caractère.
Logiquement, il est plus pratique de manipuler des entiers, donc peut etre qu'il serait mieux d'enlever les "".

Il serait aussi justicieux de regrouper des informations communes.

Mais je sais toujours pas tout viens $afficher_stats. Passage par URL ?
Donc en tout ça donnerais :

if($afficher_stats == 0 || $afficher_stats == 1) {
$handle = fopen("./0sys_config.php","w+");
echo "<h1>Opération éffectuée</h1>
<p>Les statistiques de bas de pages sont maintenant ";
if($afficher_stats == 0) {
$nouvelle_configuration = str_replace("afficher_stats = 0", "afficher_stats = 1", $configuration);
echo "affich.</p>";
}
elseif($afficher_stats == 1) {
$nouvelle_configuration = str_replace("afficher_stats = 1", "afficher_stats = 0", $configuration);
echo "désactiv"; // Pousser à bout l'amélioration ;o)
}
echo "ées.</p>";
fwrite($handle,$nouvelle_configuration);
}

Y'a surement pas tout qui est bon a prendre ;o) mais y'a surement des trucs interessant dans ce que je dis ;o)
Voir le profil de l'utilisateurEnvoyer un message privé
NSV



Inscrit le: 15 Oct 2004
Messages: 17

MessagePosté le: Mar Déc 14, 2004 8:33 pm | Sujet du message :

}; ???

Répondre en citantRevenir en haut

vanquish a écrit:
Hello !
Oui carrément tu as raison !
Merci je ferai les modifs Wink
Par contre kékitonfait mes exit(); ? Mr. Green


Je l'ai hait ;o)

J'aime pas les exit() pour 2 raisons :
1°) J'ai jamais appris à programmer dans n'importe quel langage avec ce genre de (pseudo) astuce.
2°) On croit justement que c'est une astuce, c'est pratique, tu fout un exit() et ça arrete ton script d'un coup. Mais il arrive souvent par exemple qu'on mette à la fin des page php un require("footer.php"); qui permet de finir un page php avec les balise de fermeture html.
Mais le preobleme quand y'a un exit(); c'est qu'on saute tout ça. Donc les pages crées par des scripts ayant exécutés un exit() seront des pages pas fini, et donc pas conforme aux standards vu qu'il manquera au minimun un </body></html> et souvent bien plus.

++
Voir le profil de l'utilisateurEnvoyer un message privé
vanquish
Administrateur


Inscrit le: 26 Mar 2004
Messages: 1552
Localisation: /var/www/

MessagePosté le: Mer Déc 15, 2004 8:21 am | Sujet du message :

}; ???

Répondre en citantRevenir en haut

Pas dans Itseasy !

_________________
La liberté n'a pas de prix
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer l'e-mail
NSV



Inscrit le: 15 Oct 2004
Messages: 17

MessagePosté le: Mer Déc 15, 2004 2:37 pm | Sujet du message :

}; ???

Répondre en citantRevenir en haut

C'est possible mais je trouve que les exit(); poussent bug

DOnc je les évite
Voir le profil de l'utilisateurEnvoyer un message privé
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet

Voir le sujet suivant
Voir le sujet précédent

Rappel du sujet de la page : }; ???



 Sauter vers:   

Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Liste des membres

Powered by phpBB © 2001, 2002 phpBB Group | Traduction par : phpBB-fr.com
Hébergement : Venigo, hebergement site web

Thème En1heure.com par Vanquish.
surinvitation | club privé | musique rock gratuite | vente privée | recettes de cuisine | fiche technique auto | photos de lille | voyage privé | nice
Toutes les heures sont au format GMT - 1 Heure
Hé bin vous lisez vraiment tout jusqu'au bout vous ! Salut :o)