Page 1 sur 2

Code newletters

Posté : 18 sept. 2014, 16:44
par gametime
bonjour ,

J'essaie d'installer sur mon site un système d'inscription à une newsletter.

J'ai crée ce code dans mon fichier html
<form action="envoi.php" method="post" enctype="application/x-www-form-urlencoded" name="formulaire">
			  <input type="text" name="mail" placeholder="votremail.com" class="cform-text" size="40" title="votre email">
              <input type="submit" value="Je commence" class="cform-submit">
			  </form>
Puis celui-ci dans une page envoi.php
<?php 
$nom=$HTTP_POST_VARS['nom']; 
$mail=$HTTP_POST_VARS['mail']; 
$objet=$HTTP_POST_VARS['objet']; 
$message=$HTTP_POST_VARS['message']; 

/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 

//////ici on détermine le mail en format text 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 

////ici on détermine l'expediteur et l'adresse de réponse 
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; 

$subject="$objet"; 
$destinataire="[email protected]"; //remplacez "[email protected]" par votre adresse e-mail
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "Votre mail a ete envoye<br>"; 
} else { 
echo "Une erreur s'est produite"; 
} 
?></p>
<p align="center">Vous allez bientot etre redirige vers la page d'acceuil<br>
Si vous n'etes pas redirige au bout de 5 secondes cliquez <a href="http://www.xxx.fr">ici 
</a></p>
Je reçois bien les mails mais ils sont vide , je n'ai pas l'adresse.. il doit y avoir des choses inutiles dans mon code et manquer quelques trucs...

Merci à vous tous

Re: Code newletters

Posté : 18 sept. 2014, 17:24
par Nestecha
D'une, utilise $_POST, pas $HTTP_POST_VARS.

De deux, tes variables $nom, $objet, $message n'existent absolument pas. Elles viennent d'où ? Je veux dire, y'a pas d'input name = 'message', donc forcément ta page ne reçoit rien à part $_POST['mail'].

Re: Code newletters

Posté : 18 sept. 2014, 19:02
par gametime
D'une, utilise $_POST, pas $HTTP_POST_VARS.
J'ai modifié , pour les variables c'est un code que j'ai récupérer sur le net , je voulais l'adapter sur mon site.

En fait je viens de voir que je récupérer bien les mails...

maintenant j'ai juste un soucis au moment de l'envoi , il ne me redirige pas sur ma page d'accueil.
Merci

Re: Code newletters

Posté : 18 sept. 2014, 19:34
par Nestecha
Ajoute :
<?php
header('Location: index.html');
?>
Après ton dernière paragraphe.
Et enlève ta balise </p> après ton echo "Une erreur s'est produite", elle ne ferme rien ;)

Re: Code newletters

Posté : 18 sept. 2014, 20:48
par gametime
Merci :D

J'ai ajouté le header mais j'ai cette erreur maintenant :
Warning: Cannot modify header information - headers already sent by (output started at /mnt/153/sda/7/0/benpi/envoi.php:20) in /mnt/153/sda/7/0/benpi/envoi.php on line 26

Re: Code newletters

Posté : 18 sept. 2014, 21:00
par Nestecha
Mets plutôt cette ligne : header('Location: index.html');

Après ton echo "Votre mail a été envoyé", dans le if, comme ça :
if (mail($destinataire,$subject,$body,$headers)) {
    echo "Votre mail a ete envoye<br>";
    header('Location: index.html');
} else {
    echo "Une erreur s'est produite";
}

Re: Code newletters

Posté : 18 sept. 2014, 21:07
par gametime
nouvelle erreur :
Warning: Cannot modify header information - headers already sent by (output started at /mnt/153/sda/7/0/benpi/envoi.php:20) in /mnt/153/sda/7/0/benpi/envoi.php on line 21

Re: Code newletters

Posté : 18 sept. 2014, 21:08
par moogli
salut,
Mets plutôt cette ligne : header('Location: index.html');

Après ton echo "Votre mail a été envoyé", dans le if, comme ça :
if (mail($destinataire,$subject,$body,$headers)) {
    echo "Votre mail a ete envoye<br>";
    header('Location: index.html');
} else {
    echo "Une erreur s'est produite";
}
non c'est justement ce qu'indique le message d'erreur
Warning: Cannot modify header information - headers already sent by (output started at /xxx/envoi.php:20) in /xxx/envoi.php on line 26
la documentation de la fonction header indique bien qu'il ne faut aucun affichage avant sont utilisation.

c'est d'ailleurs logique de ne envoyer quelque chose au navigateur tant que l'entête n'est pas envoyée (on envoie pas une lettre sans mettre la lettre dans l'enveloppe ;) ).

@+

Re: Code newletters

Posté : 18 sept. 2014, 21:16
par Nestecha
Bon, histoire d'en finir une bonne fois pour toute ! Moogli a raison !

Tu peux faire ça en javascript !
<p align="center">Vous allez bientot etre redirige vers la page d'acceuil<br>
    Si vous n'etes pas redirige au bout de 5 secondes cliquez <a href="http://www.benpi.free.fr">ici
    </a></p>
<script>window.location = "index.html";</script>
Là au moins, t'es sûr d'être redirigé !

Moogli, comment on fait du coup quand on veut quand même utiliser header() ? Ou est-ce que c'est juste stupide comme idée ?

Re: Code newletters

Posté : 18 sept. 2014, 21:18
par gametime
Super , merci beaucoup :wink:

c'est ultra rapide , du coup on a même pas le temps de voir qu'il a été envoyé :) , il y a possibilité de le laisser 4 sec à l'écran par exemple ?

Re: Code newletters

Posté : 18 sept. 2014, 21:32
par moogli
@gametime : oui avec un timer (ce qui est fait sur ce forum) setTimeOut

@Nestecha : c'est une bonne idée d'utilisée header mais à bonne escient :)
par exemple si tu veux afficher un message c'est pas possible.

si tu veux envoyer des infos comme le type mime, le charset ou une redirection alors oui c'est utile mais avant tout envois.

La redirection JS est liée au navigateur donc pas forcément faite (oui je sais il y a peux de gens qui désactive le js mais on ne sais jamais) et suivant l'utilisation certain navigateur ne réagisse pas pareil (par exemple dans l'event unload de la page).


@+

Re: Code newletters

Posté : 18 sept. 2014, 21:34
par Nestecha
<p align="center">Vous allez bientot etre redirige vers la page d'acceuil<br>
    Si vous n'etes pas redirige au bout de 5 secondes cliquez <a href="http://www.benpi.free.fr">ici
    </a></p>
<script>setTimeout(function() { 
window.location = "index.html"
}, 3000);</script>
Voilà !

Re: Code newletters

Posté : 18 sept. 2014, 21:43
par gametime
Merci encore =D>

Re: Code newletters

Posté : 18 sept. 2014, 21:52
par arnaud69
Salut,

je viens de regarder ton site.
En fait, ce header est pas top du tout ! Il fait assez tâche.

Déjà, dans l'en-tête de ta page web, tu vas changer <html lang="en"> par <html lang="fr"> et vu que tu inclus du jquery, je ferais plutôt une inscription via ajax comme suit :
1/ test que c'est bien un email en javascript
2/ si ok, tu envoies l'email en ajax
3/ tu testes dans le script cible que tu as bien un nouveau mail, que c'est bien un mail
4/ tu envoies par retour en json un ok ou false.
5/ si ok, tu effaces le formulaire (methode hide() de jquery) et mets un beau message "on vous écrit à l'ouverture" ou "mail déjà inscrit" ou "erreur"... etc.

C'est une critique gratuite, profites en :mrgreen: :mrgreen: :lol:

Re: Code newletters

Posté : 18 sept. 2014, 22:04
par moogli
C'est une critique gratuite, profites en
effectivement autant laisser faire php qui fait la chose plutôt que d'ajouter un tas de merdier javascript histoire de faire "beau" et in ^^


@+