Problème complexe formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème complexe formulaire

par LaurentLB » 03 nov. 2008, 20:09

Pardon autant pour moi j'ai bien remplacé $header par h$ (bon fonctionnement aussi) j'ai pas recopié le bon script sur mon précédent message.

par Hywan » 03 nov. 2008, 18:56

Je veux que tu supprimes la redirection pour m'afficher (dans le forum !) le résultat du var_dump et de print_r. Regarde le manuel pour voir ce qu'elles font.

J'ai aussi parlé des variables $h et $headers qui devaient fusionner je crois …

par LaurentLB » 03 nov. 2008, 18:49

Donc ça marche ou pas ? J'ai un doute du coup … Mes fonctions étaient censées afficher un résultat histoire de débugger tout ça.
Attends j'ai un doute. Qu'est-ce que tes fonctions étaient censées faire ? J'ai tout placé comme tu me l'a dit, j'ai enlevé les redirections et losque je clique sur "envoi" sur le formulaire j'ai une page blanche qui s'affiche avec toutes les données du formulaire (titres et contenus). Il n'y a aucun message d'errur sur une ligne du script. Donc à mon niveau tout va bien en remettant correctement le script PHP comme ceci :
<?php 
$TO = "[email protected]"; 
$subject = "Retour formulaire FR"; 
$h = "From: Foto Video Paris"; 
$message = ""; 
foreach($_POST as $key => $value)    
    $message .= $key . ' : ' . $value . "\n";     
$headers = 'From: [email protected]' . "\r\n" .    
           'Reply-To: [email protected]' . "\r\n" .    
           'Content-Type: text/plain; charset=utf-8' . "\r\n"; 
var_dump($message); 
print_r($_POST);  
mail($TO, $subject, $message, $h); 
header("Location: http://www.fotovideoparis.fr/retform-fr.html"); 
?>
les forumlaires arrivent bien sur le mail avec tous les élements et les caractères cyrilliques respectés.

Maintenant faut-il que je laisse print_r$ et var_dump pour le fonctionnement normal du script ? Est-ce ce que nous avons modifié suffit à avoir mis à jour ce script ou y -a-t-il des choses encore à faire ?

par Hywan » 03 nov. 2008, 16:25

Donc ça marche ou pas ? J'ai un doute du coup … Mes fonctions étaient censées afficher un résultat histoire de débugger tout ça.

par Truc » 03 nov. 2008, 11:02

Modération :
LaurentLB, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par LaurentLB » 03 nov. 2008, 01:27

Voilà j'ai enlevé les redirections et le contenu du formulaire s'affiche correctement.

par Hywan » 03 nov. 2008, 01:27

Enlève ta redirection pour voir le résultat de var_dump et print_r …
Au passage, $headers ne sert à rien. Remplace par $h.

par LaurentLB » 03 nov. 2008, 01:22

Voilà j'ai suivi tes instruction et là de manière étonnante les mails arrivent bien avec leurs contenus sur yahoo alors que les essais que nous avions faits avec nos autres serveurs de mail (cf. mon message précédent) ils arrivaient vides.

Voilà le code PHP modifié :
<?php
$TO = "[email protected]";
$subject = "Retour formulaire FR";
$h = "From: Foto Video Paris";
$message = "";
foreach($_POST as $key => $value)   
    $message .= $key . ' : ' . $value . "\n";	
$headers = 'From: [email protected]' . "\r\n" .   
           'Reply-To: [email protected]' . "\r\n" .   
           'Content-Type: text/plain; charset=utf-8' . "\r\n";
var_dump($message);
print_r($_POST); 
mail($TO, $subject, $message, $h);
header("Location: http://www.fotovideoparis.fr/retform-fr.html");
?>
Je crois comprendre que la fonction print_r($_POST); doit imprimer le contenu pour vérification mais ça n'a rien rien fait, de toutes façons c'est accéssoire vu que les mails arrivent correctement sur Yahoo.. faut-il que je le laisse comme çà ? Est-il encore obsolèté ? Dois-je supprimer var_dump($message); ?

Merci HyWaN.

par Hywan » 03 nov. 2008, 00:53

Si tu fais ceci :
var_dump($message);
avant l'appel à la fonction mail(), qu'est-ce que cela t'affiche ?

L'impression que ça me donne, c'est que $_POST est vide. Est-ce que tu pourrais faire suivre ton var_dump par :
print_r($_POST);
pour vérification.

Merci d'indiquer les résultats.

par LaurentLB » 03 nov. 2008, 00:03

Bonjour me revoici pour la suite des évènements. Et ben l'envoi des mails en russe fonctionne parfaitement. Je vais vous dire ce que nous avons fait. L'autre jour on a essayer d'envoyer directement des mails russe depuis différents sites de gestion de mails, notamment celui que nous devions utiliser pour le site et également depuis le serveur de mails fourni avec le pack d'hébergement et on s'est aperçu que les caractères russes ne passaient toujours pas. On en a essayé 4 ou 5 comme çà et toujours le même problème on a commençé a avoir un doute sur notre formulaire.

Et l'autre soir j'ai par dépi j'ai essayé d'envoyer notre formulaire sur Yahoo mail que notamment ma femme (qui est russe) utilise pour converser avec sa famille. Et là bingo les formulaires arrivent en respectant les caractères russes et ukrainiens parfaitement.

Donc depuis le début je m'exite sur les codes HTML et PHP de notre site pour faire passer ces caractères alors qu'apparament le problème viendrait de la boite de recption. Je parle au conditionnel sous votre controle. Un truc bizarre on a ouvert un compte mail sur un site russe exclusivement russe (rambler.ru) et les formulaires n'arrivent pas bien non plus là. Il n'y a que sur Yahoo que les retours de formulaires sont bons. Donc on va utiliser Yahoo et je serais heureux de lire vos analyses histoire de mourir un peu moins idiot.

Autre chose je vais être un gros lourd mais tant qu'à faire je vais tenter de mettre à jour mon script PHP d'envoi de formulaires qui a été jugé obsolète par tous ceux à qui je l'ai présenté.

Mon script d'origine qui marche bien :
<?php  
$TO = "[email protected]";  
$subject = "Retour formulaire RU";  
$h = "From: Mon site";  
$message = "";  
while (list($key, $val) = each($HTTP_POST_VARS)) {  
  $message .= "$key : $val\n";  
}  
mail($TO, $subject, $message, $h);  
header("Location:  [ Lien ]");  
?> 
et voici la correction indiquée par HyWaN les mails arrivent bien mais totalement vides :
<?php 
$to      = '[email protected]';  
$subject = 'Retour Formulaire RU';  
$message = null;  
foreach($_POST as $key => $value)  
    $message .= $key . ' : ' . $value . "\n";   
$headers = 'From: [email protected]' . "\r\n" .  
           'Reply-To: [email protected]' . "\r\n" .  
           'Content-Type: text/plain; charset=utf-8' . "\r\n";      
mail($TO, $subject, $message, $h); 
header("Location: http://www.monsite.fr/retour_form-ru.html"); 
?> 
Je dois avoir fait une petite erreur de syntaxe mais mon niveau m'empêche de la trouver. Merci.

par AB » 02 nov. 2008, 21:18

C'est la bonne façon de faire.
Une étape après l'autre et quand ça bug quelque part ne pas hésiter à tester les fonctions séparément dans un fichier isolé pour bien comprendre leur fonctionnement :wink:

Dans les pages php, n'hésites pas à inclure ce code :
header('Content-type: text/html; charset=UTF-8');
ça coute pas cher (gratuit), c'est pas compliqué et au moins cela indique le bon charset, sinon par défaut le serveur risque d'envoyer une entête au format iso qui prendra le pas sur l'entête que tu indiques dans le code HTML.

par LaurentLB » 31 oct. 2008, 05:12

Salut. j'ai pas répondu ces dernières heures car j'ai refait tout le site page par page en encodant directement en utf-8 pour être sur que celà soit bon même si j'ai trouvé le programme Charco très bien et...simple.

J'ai essayé de tester la version de PHP. Merci pour l'aide mais voyez dans mon ignorance lorsque l'on parlait de la version PHP utilisée je pensée la à une version éditée par mon Dreamweaver et non pas celle utilisée par le serveur. Il faut vraiment tout m'expliquer de a à z je suis désolé. Bref j'ai bien créé un fichier PHP appelé test.php appelé par une page html et j'obtiens ce résultat :

string(13) "4.4.4-8+etch6"
Warning: phpinfo() has been disabled for security reasons in /users/user106323/sites/monsite.fr/test.php on line 9

Les codes étaient faits comme celà :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans nom</title> </head> <body> <A href="test.php">Test</a> </body> </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>
<?php var_dump(phpversion()); phpinfo(); ?>
</body>
</html>
Voilà je vais finir vite la mise en page du site afin de le rendre fonctionnel très vite et pour continuer à m'atteler aux caractères russes.

par Hywan » 28 oct. 2008, 00:44

Je m'en doute, c'était plus une boutade :). Je ne lis pas non plus tous les postes, c'est normal.
Et ça fait un bon rappel pour notre ami en perdition :P.

par AB » 27 oct. 2008, 22:50

Je me cite :lol: :
Je suis allé sur iconv.org car il met en place une interface graphique Web pour faire ça au lieu de le faire en ligne de commande, et je suis tombé sur Charco. Je ne l'ai pas testé mais c'est un programme qui fait la même chose que ma ligne de commande sauf que c'est un programme avec une interface graphique et il existe sous Win, Mac et Linux. Je viens de le tester en fait, ça marche bien et c'est très simple à utiliser. Tu devrais t'y retrouver.
Faut lire attentivement ;-).
S'cuser votre honneur, y'a eu beaucoup de post depuis et je ne relis pas tout à chaque fois depuis le début :wink:

par Hywan » 27 oct. 2008, 22:06

Je me cite :lol: :
Je suis allé sur iconv.org car il met en place une interface graphique Web pour faire ça au lieu de le faire en ligne de commande, et je suis tombé sur Charco. Je ne l'ai pas testé mais c'est un programme qui fait la même chose que ma ligne de commande sauf que c'est un programme avec une interface graphique et il existe sous Win, Mac et Linux. Je viens de le tester en fait, ça marche bien et c'est très simple à utiliser. Tu devrais t'y retrouver.
Faut lire attentivement ;-).