Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

un petit service

7 réponses
Avatar
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\n";}
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

7 réponses

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

{$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");
?>

Avatar
Tantale
Avatar
Renaud
On 2 jan, 04:44, Olivier Miakinen <om+ wrote:

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


Avatar
Olivier Miakinen

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 ?

Avatar
Renaud
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".

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


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