Discussion:
un petit service
(trop ancien pour répondre)
Tantale
2008-01-02 09:21:49 UTC
Permalink
Je ne connais pas le php, mais j'ai dans mon livre d'or
http://www.jmrw.com/Livre_Or.htm un formulaire lié au php suivant ::

<?php
$body="";
foreach($HTTP_POST_VARS as $nom=>$valeur)
{$body = $body . "$nom=$valeur\n";}
if((stristr($body, 'http') === FALSE) && (stristr($body, 'map_all') ===
FALSE)&& (stristr($body, 'map/map') === FALSE))
mail("***@jmrw.com","Formulaire",$body);
header("Location: index.htm");
?>

J'aimerais simplement ajouter la condition suivante : si le body du
formulaire ou l'en-tête du formulaire sont vides, ne pas envoyer de mail,
car malgré la vérification lors de la saisie du formulaire je reçois
beaucoup de tels mails.

Merci

JMRW
Olivier Miakinen
2008-01-02 09:44:10 UTC
Permalink
Post by Tantale
Je ne connais pas le php, mais j'ai dans mon livre d'or
<?php
$body="";
foreach($HTTP_POST_VARS as $nom=>$valeur)
À moins que ton hébergeur ne te propose une version antique de PHP, je
te suggère de remplacer $HTTP_POST_VARS par $_POST ou $_REQUEST.
Post by Tantale
{$body = $body . "$nom=$valeur\n";}
if((stristr($body, 'http') === FALSE) && (stristr($body, 'map_all') ===
FALSE)&& (stristr($body, 'map/map') === FALSE))
header("Location: index.htm");
Même si cela fonctionne dans la plupart des navigateurs, la norme
interdit de faire une redirection vers une adresse partielle.
Préférer : header("Location: http://www.jmrw.com/index.htm");
Post by Tantale
?>
J'aimerais simplement ajouter la condition suivante : si le body du
formulaire ou l'en-tête du formulaire sont vides, ne pas envoyer de mail,
car malgré la vérification lors de la saisie du formulaire je reçois
beaucoup de tels mails.
Bien entendu, les spammeurs ne prennent pas la peine d'exécuter le code
JavaScript censé « vérifier la saisie ». ;-)


Peut-être ceci :

<?php
if (($_REQUEST['votrenom'] != '') && ($_REQUEST['commentaires'] != ''))
{
$body="";
foreach ($_REQUEST as $nom=>$valeur) {
$body .= "$nom=$valeur\n";
}
if (
(stristr($body, 'http') === FALSE) &&
(stristr($body, 'map_all') === FALSE)&&
(stristr($body, 'map/map') === FALSE)
) {
mail("***@jmrw.com", "Formulaire", $body);
}
}
header("Location: http://www.jmrw.com/index.htm");
?>
Tantale
2008-01-02 16:47:43 UTC
Permalink
Merci !

JMRW
Renaud
2008-01-03 20:58:36 UTC
Permalink
Post by Olivier Miakinen
Post by Tantale
Je ne connais pas le php, mais j'ai dans mon livre d'or
<?php
$body="";
foreach($HTTP_POST_VARS as $nom=>$valeur)
À moins que ton hébergeur ne te propose une version antique de PHP, je
te suggère de remplacer $HTTP_POST_VARS par $_POST ou $_REQUEST.
Je trouve que l'utilisation de $_REQUEST est une mauvaise idée.
L'utilisation de $_POST, à la place, permet de s'assurer que les
valeurs sont envoyés par un formulaire en POST. Ca évitera à certains
abrutis d'appeler son formulaire en passant les paramètres en GET et
de faire un robot qui boucle (oui, bon, c'est aussi possible en POST,
mais c'est moins facile a faire, quoi...)
Olivier Miakinen
2008-01-03 22:06:41 UTC
Permalink
Post by Renaud
Je trouve que l'utilisation de $_REQUEST est une mauvaise idée.
Je trouve que l'utilisation de $_POST est une fausse bonne idée, et donc
une vraie mauvaise idée, en donnant l'impression illusoire que ce serait
plus sécurisé.
Post by Renaud
L'utilisation de $_POST, à la place, permet de s'assurer que les
valeurs sont envoyés par un formulaire en POST. Ca évitera à certains
abrutis d'appeler son formulaire en passant les paramètres en GET et
de faire un robot qui boucle
On ne veut pas se protéger des abrutis mais des spammeurs. Ça fait bien
longtemps que ceux-ci ne se laissent pas impressionner par un formulaire
en POST au lieu d'un en GET (si toutefois ils l'ont jamais été).
Post by Renaud
(oui, bon, c'est aussi possible en POST,
mais c'est moins facile a faire, quoi...)
En GET :
wget http://www.example.com/?user=toto&pass=titi

En POST :
wget --post-data 'user=toto&pass=titi' http://www.example.com/

Tu trouves vraiment que la différence de difficulté vaut la peine de
s'embêter à distinguer GET et POST ?
Renaud
2008-01-04 20:49:16 UTC
Permalink
Post by Olivier Miakinen
Tu trouves vraiment que la différence de difficulté vaut la peine de
s'embêter à distinguer GET et POST ?
Oui :) Surtout quand il n'y a aucun embettement.
Si on devait ne pas faire de différence entre GET et POST, il n'y
aurait pas 2 types d'envoi de données en HTTP.
Les catchall sont bien souvent une bien plus mauvaise idée que "de ne
pas s'embetter la vie".
Olivier Miakinen
2008-01-04 21:56:53 UTC
Permalink
Post by Olivier Miakinen
Tu trouves vraiment que la différence de difficulté vaut la peine de
s'embêter à distinguer GET et POST ?
Oui :) Surtout quand il n'y a aucun embêtement.
Si ça t'amuse... tu peux bien faire comme tu veux. ;-)
Marc
2008-01-13 14:44:48 UTC
Permalink
Post by Renaud
Post by Olivier Miakinen
Tu trouves vraiment que la différence de difficulté vaut la peine de
s'embêter à distinguer GET et POST ?
Oui :) Surtout quand il n'y a aucun embettement.
Si on devait ne pas faire de différence entre GET et POST, il n'y
aurait pas 2 types d'envoi de données en HTTP.
entre le GET et le POST, les données ne sont pas transmises de la meme
maniere. Et en pratique, le volume de données transmissible par le GET
est un peu ou beaucoup plus faible.

Pour les connaisseur du monde unix, on peut comparer a ca :

# le POST : le flot d'entrée contient les données formatées
(echo STDIN) | script

# le GET : les arguments standards a la Unix
script arg1 arg2 ... argn

Il n'y a aucune raison de se priver des 2 méthodes, a chacun des les
utiliser à bon escient.

Continuer la lecture sur narkive:
Loading...