un petit service

Le
Tantale
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";}
if((stristr($body, 'http') FALSE) && (stristr($body, 'map_all')
FALSE)&& (stristr($body, 'map/map') FALSE))
mail("jmr@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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #63147
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)


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

{$body = $body . "$nom=$valeurn";}
if((stristr($body, 'http') === FALSE) && (stristr($body, 'map_all') ===
FALSE)&& (stristr($body, 'map/map') === FALSE))
mail("","Formulaire",$body);
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");

?>

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=$valeurn";
}
if (
(stristr($body, 'http') === FALSE) &&
(stristr($body, 'map_all') === FALSE)&&
(stristr($body, 'map/map') === FALSE)
) {
mail("", "Formulaire", $body);
}
}
header("Location: http://www.jmrw.com/index.htm");
?>

Tantale
Renaud
Le #63145
On 2 jan, 04:44, Olivier Miakinen

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)


À 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
Le #63144

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

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

(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
Le #62849
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
Le #62847
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
Le #67491
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.


Publicité
Poster une réponse
Anonyme