8798 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Bonjour,

juste une petite remarque au niveau du code PHP proposé par keran.

if (false === mail('monadresse@wanadoo.fr', 'Nouveau message sur le livre d\'or', $msg , 'From: expediteur@monsite.fr')) { 


Ici, ça ne serait pas plutôt deux signes égales à mettre au lieu de trois ?
J'ai beau être un novice en PHP, mais je n'ai encore jamais vu trois signes égales à la suite.
Le triple égale permet de tester si les valeurs sont les mêmes ET si le type est également le même.

Donc dans cet exemple, le test serait faut si on avait d'un coté false (boolean) et de l'autre 'false' (string). Les valeurs sont les mêmes mais pas le type, donc le test est faux. Alors qu'il sera vrai si l'on a bien des booléen des deux côtés. Smiley cligne
Modifié par moust (30 Jul 2009 - 15:15)
Non son code est bon mais il n'est pas justifié, la fonction mail retourne déjà un booléan...

if (mail(blabla)) echo "Envoi réussi" ;
else exit("envoi échoué"); 
Modérateur
Hello,

AspiGeek a écrit :
... Les hackers sont gentils et cherchent plutôt l'exploit informatique ...


+1
Un petit lien intéressant sur les hackers.

Est ce que les guillemets magiques sont activés sur ta config php ?
Je te conseille de lire cet article et de lire ce qui suit attentivement :

* fichier : rectificationHTTP.php


<?php
// rectification de toutes les superglobales...
function rectificationHTTP(){
  if (get_magic_quotes_gpc()) {
    $_POST = normalisation($_POST);
    $_GET = normalisation($_GET);
    $_REQUEST = normalisation($_REQUEST);
    $_COOKIE = normalisation($_COOKIE);
  }
}

// traitement de chaque superglobales.
//fonction récursive
function normalisation($tableau){
  foreach ($tableau as $cle => $valeur)
	$tableau[$cle] = (!is_array($valeur))? stripSlashes($valeur) : $tableau[$cle] = NormalisationHTTP($valeur);
  
  return $tableau;
}
?>



* fichier : rectificationHTTP.php

<?php

require_once("rectificationHTTP.php");

$_POST['clef'] = "Peuf Peuf lui tendit l'oreiller et dit : \" L'oreiller est bien à toi ?\"";
echo $_POST['clef'];

//suppression des magic_quotes ... 
rectificationHTTP();
echo $_POST['clef'];
?>



Il est évident que rectificationHTTP() est à factoriser, puisque c'est une fonction récurrente.

jQz a écrit :

Ici, ça ne serait pas plutôt deux signes égales à mettre au lieu de trois ?
J'ai beau être un novice en PHP, mais je n'ai encore jamais vu trois signes égales à la suite.

Les trois signes = existent. On est toujours dans les comparateurs bien sûr et cela veut strictement égale en valeur et type de variable. Il y a également le strict différent.

// integer
$a = 1;

//string
$b = "1";

//comparatif
echo ($a === $b)? "ok" : "ko"; // ko
echo "<br />";
echo ($a !== $b)? "ok" : "ko"; // ok


++

Note à l'admin ou au modérateur : Petit soucis d'édition du code. Pas d'affichage sur les deux premiers scripts si j'utilise la paire de « tags » : "code=php"
Modifié par Nolem (30 Jul 2009 - 16:28)
a écrit :
Le triple égale permet de tester si les valeurs sont les mêmes ET si le type est également le même.

Donc dans cet exemple, le test serait faut si on avait d'un coté false (boolean) et de l'autre 'false' (string). Les valeurs sont les mêmes mais pas le type, donc le test est faux. Alors qu'il sera vrai si l'on a bien des booléen des deux côtés. Smiley cligne Les trois signes = existent. On est toujours dans les comparateurs bien sûr et cela veut strictement égale en valeur et type de variable. Il y a également le strict différent.


Merci à vous deux Smiley smile .
Modérateur
AspiGeek a écrit :
...exit("envoi échoué")...


Je trouve que cette pratique excessive du exit ou du die n'est pas très bonne n'est ce pas ?
Modifié par Nolem (30 Jul 2009 - 16:40)
AspiGeek a écrit :
tu ne t'es pas fait pirater mais plutôt hacker...
Hacker ou Pirate = même combat. Il se trouve que celui-ci cherche à "évangéliser" les webmasters et pas à leur nuire. Smiley cligne

jQz a écrit :
Ici, ça ne serait pas plutôt deux signes égales à mettre au lieu de trois ?
J'ai beau être un novice en PHP, mais je n'ai encore jamais vu trois signes égales à la suite.
Alors il faut apprendre ! Smiley ravi cf. http://fr.php.net/manual/fr/language.operators.comparison.php

Nolem a écrit :
Je trouve que cette pratique excessive du exit ou du die n'est pas très bonne n'est ce pas ?
Au contraire : die ou exit permettent de stopper un traitement et c'est pertinent ici. Plus globalement l'ami keran est consciencieux et va même jusqu'à utiliser le === au lieu d'un simple if(!mail(...)). Même si dans ce cas le résultat est équivalent cela me laisse à penser que le développement PHP est son métier -> prenons-en de la graine ! Smiley smile
Modifié par Heyoan (31 Jul 2009 - 04:35)
Modérateur
Bonsoir Heyoan, Smiley smile

Heyoan a écrit :

...
Au contraire : die ou exit permettent de stopper un traitement et c'est pertinent ici.
...


Ha, ha, ...
Là, je suis pas tout à fait d'accord avec toi et je ne pense pas être dans le faux. Qu'il y ait la pertinence de mettre des stops aux endroits critiques, c'est tout à fait juste et j'en conviens aisément. En exemple, une connexion à un SGBDR n'est pas fiable à 100 %. Cependant, tu ne peux pas bloquer l'utilisateur suite à un disfonctionnement de l'application, n'est ce pas ? Il me semble qu'il faille plutôt coder une gestion d'exception. Ainsi, l'application perdure (sur trois pattes, je te l'accorde) et l'utilisateur continue à exploiter les autres fonctions de l'application tout en sachant qu'il ne peut plus faire la « manip » précédente.

Bonne soirée à toi. Smiley smile
Modifié par Nolem (03 Aug 2009 - 01:00)
Hello Nolem,

je parlais du fait de stopper l'exécution du script mais effectivement il faudrait s'y prendre autrement pour un site en ligne (le sujet est d'ailleurs abordé dans ce tuto).

En même temps ce n'était pas le sujet et tous les codes ou presque servant d'exemples utilisent die ou exit pour aller droit à l'essentiel et rester compréhensibles.

Bonne soirée également. Smiley cligne
Pages :