5546 sujets

Sémantique web et HTML

Bonjour,
Smiley help
je viens de passer mon site de free à un hébergeur payant, mieux sur plein de points de vue mais là où certaines choses fonctionnaient avant c'est plus toujours le cas...
Comme ce formulaire d'envoi
<form  name="formsaisie"  method="get" enctype="text/plain"  action="envoi.php" onsubmit="return validation() && verifmail();">
<p><label>Nom*:</label><br>
<input name="nom" class="formulaire" maxlength='30'></p>
<p><label>Prénom:</label><br>
<input name="prenom" class="formulaire" maxlength='30'></p>
<p><label>Mail*:</label><br>
<input name="mail" class="formulaire" maxlength='40'></p>
<p><label>Adresse:</label><br>
<textarea name="adresse" class="formulaire2" maxlength='120'></textarea></p>
<p><label>Sujet*:</label><br>
<input name="sujet" class="formulaire" maxlength='30'></p>
<p><label>Message*:</label><br>
<textarea name="message" class="formulaire2" maxlength='500'></textarea></p>
<input  value="Envoyer" class="formulaire3" type="submit">
<input value="Effacer" class="formulaire4" type="reset">
</form>

et ce code php de récupération des infos sur la page envoi.php de confirmation
<?php 
$to='machin@yahoo.fr'; 
$subject=$_GET['sujet']; 
$headers=$_GET['nom']."\r\n"; 
$headers.=$_GET['prenom']."\r\n"; 
$headers.=$_GET['mail']."\r\n"; 
$headers.=$_GET['adresse']; 
$content='de:'.$_GET['nom'].'(email: '.$_GET['mail'].' )\r\n '.$_GET['comment']; 
mail($to, $subject, $message, $headers); 
?>

Ce code a été glâné sur internet il y a longtemps, je ne comprends vraiment rien au PHP... déjà de visu j'ai l'impression qu'il y a des irrégularités (genre des points manquants) mais bon. Le résultat: là où avant j'avais tout qui arrivait nickel sur mon mail, maintenant il y a un message sur deux de perdu, et quand ça marche je reçois tout sauf... le message lui-même.
Alors voilà quelqu'un saurait-il me guider un peu sur les erreurs (bien obscures pour moi) de ce code PHP, voire comment éclaircir un peu tout ça s'il y a des choses inutiles? Pour le sécuriser un minimum peut-être aussi (je lis des trucs bizarres sur GET ou POST)...
Un gros merci par avance... Smiley smile
Modifié par Mbira35 (10 Jan 2016 - 17:33)
Je suis déjà arrivé à un meilleur résultat comme çà:
<?php 
	$to='machin@yahoo.fr'; 
	$subject=$_GET['sujet']; 
	$headers='From: formulaire@truc.com'."\r\n";
	$headers.=$_GET['nom']."\r\n";
	$headers.=$_GET['prenom']."\r\n"; 
	$headers.=$_GET['mail']."\r\n"; 
	$headers.=$_GET['adresse'];	
	$content=$_GET['message']; 
	mail($to, $subject, $content, $headers); 
	?>


J'ai essayé avec POST à la place de GET, sur le php et dans le form method, ça me renvoie des messages entièrement vides. Smiley decu
Modifié par Mbira35 (10 Jan 2016 - 23:37)
Si tu method="POST" dans la balise <form> il faut bien mettre $_POST['nom'] au niveau PHP.

Si tu fais un
var_dump($_GET);
ou suivant ce que tu choisie
var_dump($_POST);

avant la methot to()
as-tu des résultats probant ?
Modifié par JENCAL (11 Jan 2016 - 16:10)
Alors... c'est là qu'il y a un petit problème je crois. Smiley confused
Plus ça va, plus je pense en regardant à droite à gauche que j'ai jadis fait les choses un peu à l'envers...

La page du formulaire n'est pas une page php, mais html.
Qui envoie par la suite sur une autre page de confirmation.php, qui elle, contient le code php de récupération et de mailing des données vers la messagerie de destination.
Mais pourtant la méthode GET fonctionne parfaitement, donc ça ne devrait pas être si gênant...

Sinon oui, j'avais bien mis $_POST à la place de tous les $_GET dans le php, et method="post" pour le formulaire.
Modifié par Mbira35 (11 Jan 2016 - 16:56)
tu veux dire que quand tu fais un var_dump tu vois les résultats ? mais le mail est vide ?

sinon oui, le formulaire PEUT être dans une page .html, (sauf si tu le génère via du code php), et oui le fichier "envoi.php est un fichier à part, à ce niveau là pas de problème.
D'accord, ça me rassure.
Je vais faire un essai avec var_dump du coup (sur la page .php de confirmation, donc), avant le to(), et... qu'est-ce qui devrait se passer ensuite au fait? Smiley lol
Mbira35 a écrit :
D'accord, ça me rassure.
Je vais faire un essai avec var_dump du coup (sur la page .php de confirmation, donc), avant le to(), et... qu'est-ce qui devrait se passer ensuite au fait? Smiley lol


en faite, var dump c'est pour voir le contenu d'une variable. Ici c'est pour voir le contenu du tableau $_POST ou $_GET selon ton choix.
c'est surtout pour tester, tu devrais faire un exit aussi, pour eviter que le mail s'envoi

et dit moi le résultat.
<?php 
        var_dump($_POST); // ou var_dump($_GET);
        exit();
	$to='machin@yahoo.fr'; 
	$subject=$_GET['sujet']; 
	$headers='From: formulaire@truc.com'."\r\n";
	$headers.=$_GET['nom']."\r\n";
	$headers.=$_GET['prenom']."\r\n"; 
	$headers.=$_GET['mail']."\r\n"; 
	$headers.=$_GET['adresse'];	
	$content=$_GET['message']; 
	mail($to, $subject, $content, $headers); 
?>

Modifié par JENCAL (11 Jan 2016 - 17:15)
Voilà, tout a été remplacé comme il faut,
résultat du test:
array(0) { }

Modifié par Mbira35 (11 Jan 2016 - 17:36)
ce qui veut dire que aucune information est envoyer dans ton fichier php. donc cela ne vient pas de ta fonction mail, mais avant. réecrit ton code html / php tel quel Smiley smile


je suis pas sûr que "enctype="text/plain" dans la balise <form> sert à quelque chose... peut etre que je me trompe hein.
Modifié par JENCAL (11 Jan 2016 - 17:53)
Le formulaire:
<form  method="post" action="envoi.php" name="formsaisie"  enctype="text/plain" onsubmit="return validation() && verifmail();">
        <p><label>Nom*:</label><br>
        <input name="nom" class="formulaire" maxlength='30'></p>
        <p><label>Prénom:</label><br>
        <input name="prenom" class="formulaire" maxlength='30'></p>
        <p><label>Mail*:</label><br>
        <input name="mail" class="formulaire" maxlength='40'></p>
        <p><label>Adresse:</label><br>
        <textarea name="adresse" class="formulaire2" maxlength='120'></textarea></p>
        <p><label>Sujet*:</label><br>
        <input name="sujet" class="formulaire" maxlength='30'></p>
        <p><label>Message*:</label><br>
        <textarea name="message" class="formulaire2" maxlength='500'></textarea></p>
        <input  value="Envoyer" class="formulaire3" type="submit">
		<input value="Effacer" class="formulaire4" type="reset">
</form>


Le php de la page envoi.php:
<?php 
	var_dump($_POST);
    exit();
	$to='machin@yahoo.fr'; 
	$subject=$_POST['sujet']; 
	$headers='From: formulaire@truc.com'."\r\n";
	$headers.=$_POST['nom']."\r\n";
	$headers.=$_POST['prenom']."\r\n"; 
	$headers.=$_POST['mail']."\r\n"; 
	$headers.=$_POST['adresse'];	
	$content=$_POST['message']; 
	mail($to, $subject, $content, $headers, '-f formulaire@truc.com'); 
	?>

Modifié par Mbira35 (11 Jan 2016 - 18:07)
Je pense fortement que cela vient de
enctype="text/plain"

essaye avec
enctype="application/x-www-form-urlencoded"

Si le résultat n'est plus 0 mais tes résultat (nom, prenom, etc...) alors tu peux enlever les lignes var_dump() et exit(); et tester ta fonction mail.
Modifié par JENCAL (11 Jan 2016 - 18:11)
Bien vu Smiley smile
array(6) { ["nom"]=> string(4) "jose" ["prenom"]=> string(7) "laboule" ["mail"]=> string(12) "jlb@yahoo.fr" ["adresse"]=> string(10) "fbcvbcwvbw" ["sujet"]=> string(9) "cbcvbcvbc" ["message"]=> string(9) "fbhfdbhfb" }