url dans code php

url dans code php - PHP - Programmation

Marsh Posté le 20-11-2008 à 00:14:16    

Bonjour,
voici un code php de formulaire que j'ai trouvé sur le net et je remercie au passage tout ceux qui mettent à disposition leur travail pour aider les moins connaisseur à concevoir leur site ;) .  
je voudrais juste, si possible, remplacer la  ligne 35 (echo "message envoyé"; ), par une instruction visant vers un lien url d'une autre page de mon site (j'ai parcouru le web en vein pour trouver la soluce  et pourtant je suis sûr que vous ne ferez qu'une bouchée de ma question ;) ).
merci d'avance  :hello:  
 

Code :
  1. <?php
  2. // La variable $verif, va nous permettre d'analyser si la sémantique de l'email est bonne
  3. $verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
  4. // On protége nos variables
  5. $votremail=$_POST["votremail"];
  6. $from=htmlspecialchars("From: ".$votremail);
  7. $message=stripslashes(htmlspecialchars($_POST["message"]));
  8. // On met ici notre email
  9. $destinataire="monemail@blabla.fr";
  10. /* On place le sujet du message qui ici sera toujour le même
  11. puisque dans la partie Html on la mis en caché avec comme valeur
  12. "Vous avez un nouveau message"  */
  13. $objet=$_POST['objet'];
  14. // C'est bon on est OK, vérifion si l'email est valide, grâce à notre chtite REGEX
  15. if(!preg_match($verif,$votremail))
  16. {
  17.         echo "Voter email n'est pas valide";
  18. }
  19. // On verifie si il y a un message   
  20. elseif (trim($message)=="" )
  21. {
  22. echo "Vous n'avez mis aucun message!";
  23. }
  24. // Si tout est OK on envoie l'email   
  25. else
  26. {
  27.        
  28. echo "message envoyé";
  29. }
  30. ?>

Reply

Marsh Posté le 20-11-2008 à 00:14:16   

Reply

Marsh Posté le 20-11-2008 à 00:18:51    

simple si ya aucun affichage avac la ligne 35 : tu remplace echo message par :
header('Location: tapge.php');
avec variable si tu veut  
header('Location: tapge.php?var1=1&var2=2');

Reply

Marsh Posté le 20-11-2008 à 00:30:38    

merci pour ta réponse mais je viens d'essayer ton code mais il ne fonctionne pas. J'ai oublié de préciser que le lien vise vers une page en htm

Reply

Marsh Posté le 20-11-2008 à 01:29:45    

seagull6 a écrit :

merci pour ta réponse mais je viens d'essayer ton code mais il ne fonctionne pas. J'ai oublié de préciser que le lien vise vers une page en htm


j' ai appliqué ton code comme ceci (avec le lien du forum) mais ça ne fonctionne pas :pfff: pourquoi?
 
merci
 

Code :
  1. <?php
  2. // La variable $verif, va nous permettre d'analyser si la sémantique de l'email est bonne
  3. $verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
  4. // On protége nos variables
  5. $votremail=$_POST["votremail"];
  6. $from=htmlspecialchars("From: ".$votremail);
  7. $message=stripslashes(htmlspecialchars($_POST["message"]));
  8. // On met ici notre email
  9. $destinataire="fouleescampagnardes@free.fr";
  10. /* On place le sujet du message qui ici sera toujour le même
  11. puisque dans la partie Html on la mis en caché avec comme valeur
  12. "Vous avez un nouveau message"  */
  13. $objet=$_POST['objet'];
  14. // C'est bon on est OK, vérifion si l'email est valide, grâce à notre chtite REGEX
  15. if(!preg_match($verif,$votremail))
  16. {
  17.         echo "Voter email n'est pas valide";
  18. }
  19. // On verifie si il y a un message   
  20. elseif (trim($message)=="" )
  21. {
  22. echo "Vous n'avez mis aucun message!";
  23. }
  24. // Si tout est OK on envoie l'email   
  25. else
  26. {
  27.        
  28. header('Location: http://forum.hardware.fr/hfr/Progr [...] t-1.htm');
  29. }
  30. ?>

Reply

Marsh Posté le 20-11-2008 à 08:27:45    

comment çà "çà ne fonctionne pas ?" ?
message d'erreur ? si oui lequel ??

Reply

Marsh Posté le 20-11-2008 à 09:04:08    

Bonjour,
voici le message d'erreur
Warning: Cannot modify header information - headers already sent by (output started at /mnt/107/sdb/c/c/lien vers page/envoi.php:8) in /mnt/107/sdb/c/c/lien vers page/envoi.php on line 43
désolé pour mon niveau de connaissance en la matière, merci

Reply

Marsh Posté le 20-11-2008 à 09:12:21    

et bien avant une modification des headers (ici pour une redirection) il ne faut aucune sortie de texte (pas le moindre echo, saut de ligne ou html avant l'appel de la fonction)

Reply

Marsh Posté le 20-11-2008 à 09:19:49    

ok mais j'ai besoin de mes echo ? comment puis-je modifier le code pour que ça fonctionne stp  
merci encore

Reply

Marsh Posté le 20-11-2008 à 09:21:37    

si tu veux rediriger directement la personne alors tu n'en as pas besoin. Qu'est ce que tu veux faire alors ?
rediriger vers ta page, ou alors rester sur celle ci et afficher un lien ?

Reply

Marsh Posté le 20-11-2008 à 09:27:05    

en fait, une fois le formulaire rempli, sur clic sur "envoyer", si les champs ne sont pas corrects(mail, message), alors = message d'erreur correspondant, sinon c'est ok, alors renvoie vers ma page d'accueil
merci

Reply

Marsh Posté le 20-11-2008 à 09:27:05   

Reply

Marsh Posté le 20-11-2008 à 09:36:15    

Code :
  1. if($ok) {
  2.    $mail = mail(...);
  3.    if($mail) {
  4.        header('location: success.php');
  5.    }
  6. } else {
  7.    echo $error;
  8. }


 
Si il n'y a aucun soucis, $ok vaut true, on envoit le mail et si tout fonctionne on redirige.
Sinon, on affiche les différentes erreurs stockées dans $error.
 
C'est un exemple, tu peux très bien procéder différemment.

Reply

Marsh Posté le 20-11-2008 à 09:38:33    

merci à toi, j' essaye

Reply

Marsh Posté le 20-11-2008 à 09:48:58    

est ce que tu pourrais incérer ton code dans le mien stp en indiquant ou je dois mettre le lien vers ma page .htm car je suis vraiment à la ramasse sur le sujet.
merci encore pour ton attention

Reply

Marsh Posté le 20-11-2008 à 10:01:33    

non, c'est très simple ! s'il y a eu des erreurs tu les stockes puis les affiche, sinon, tu envoi le mail et tu rediriges.

Reply

Marsh Posté le 20-11-2008 à 10:03:31    

:hello:

 

le 2eme code que tu as fourni est correct.

 

Il faut simplement que, avant la ligne 1 (qui commence par "<?php..." ), il n'y ait rien d'envoyé au client.
pour vérifier ca, quand tu reçois

Code :
  1. Warning: Cannot modify header information - headers already sent by


tu regardes tout ce qu'il y a affiché avant, et que tu fasses en sorte que ça ne soit pas envoyé (c'est à dire que ca ne s'affiche pas)

 

:jap:


Message édité par nabbo le 20-11-2008 à 10:04:11
Reply

Marsh Posté le 20-11-2008 à 10:03:49    

ok je persiste

Reply

Marsh Posté le 20-11-2008 à 10:10:44    

seagull6 a écrit :

ok je persiste


 mais il n'y a rien avant si ce n'est l'entête de la page?

Code :
  1. <html>
  2. <head>
  3. <title>envoi</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. </head>
  6. <body>
  7. <?php
  8. // La variable $verif, va nous permettre d'analyser si la sémantique de l'email est bonne
  9. $verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";

Reply

Marsh Posté le 20-11-2008 à 10:26:08    

seagull6 a écrit :


 mais il n'y a rien avant si ce n'est l'entête de la page?


TIP : l'entête ce n'est pas "rien", c'est l'entête.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-11-2008 à 14:56:04    

ton

Code :
  1. <?php


doit précéder le <html> et n'importe quoi d'autre avant (si ton truc est bien fait, il ne devrait rien avoir avant le <html> (sauf le doctype, mais passons)

 

et rien, c'est rien. ni un espace ni un retour à la ligne. La première ligne de ton script doit être :

Code :
  1. <?php
 

c'est pas toujours simple à faire, surtout après coup. mais c'est comme ça ;-)

 

Note que tu as d'autres moyens de faire des redirection que des redirections coté serveur : tu peux faire des redirections en html (bof) ou encore en javascript (bof bof).

 

:jap:


Message édité par nabbo le 20-11-2008 à 14:56:23
Reply

Marsh Posté le 22-11-2008 à 01:16:55    

Bonsoir,
je suis enfin arrivé à ce que j'attendais et je voulais vraiment remercier tout ceux qui m'on aidé dans ce post, merci à nabbo  
pour sa précision apportée (il a compris mon niveau mais je compte bien progresser...)
ci-dessous, ma page php telle qu'elle est (si ça peut servir à quelqu'un..)sauf les adresse bien sûr
 :hello:  
 

Code :
  1. <?php
  2. // La variable $verif, va nous permettre d'analyser si la sémantique de l'email est bonne
  3. $verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
  4. // On protége nos variables
  5. $votremail=$_POST["votremail"];
  6. $from=htmlspecialchars("From: ".$votremail);
  7. $message=stripslashes(htmlspecialchars($_POST["message"]));
  8. $nom=$HTTP_POST_VARS['nom'];
  9. $mail=$HTTP_POST_VARS['mail'];
  10. $objet=$HTTP_POST_VARS['objet'];
  11. $message=$HTTP_POST_VARS['message'];
  12. /////voici la version Mine  
  13. $headers = "MIME-Version: 1.0\r\n";
  14. //////ici on détermine le mail en format text  
  15. $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
  16. ////ici on détermine l'expediteur et l'adresse de réponse  
  17. $headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";
  18. $subject="$objet";
  19. $destinataire="monadresse@monserveur.fr"; //remplacez "monadresse@monserveur.fr" par votre adresse e-mail
  20. $body="$message";
  21. // C'est bon on est OK, vérifion si l'email est valide, grâce à notre chtite REGEX
  22. if(!preg_match($verif,$mail))
  23. {
  24. echo "Voter email n'est pas valide";
  25. }
  26. // On verifie si il y a un message   
  27. elseif (trim($message)=="" )
  28. {
  29. echo "Vous n'avez mis aucun message!";
  30. }
  31. elseif (trim($objet)=="" )
  32. {
  33. echo "Merci de mettre un sujet à votre message!";
  34. }
  35. // et là, la redirection  
  36. elseif (mail($destinataire,$subject,$body,$headers))
  37. {
  38. header('Location: http://site/dossier/fichier.htm'); 
  39. else
  40. {
  41. echo "Une erreur s'est produite";
  42. }
  43. ?>

Reply

Marsh Posté le 22-11-2008 à 04:06:46    

:hello:
 
pour info (les puristes me corrigeront si c'est pas le cas),

Code :
  1. $HTTP_POST_VARS['nom']


s'écrit plutôt

Code :
  1. $_POST['nom']


 
et surtout (encore une fois les puristes me corrigeront...)
 
tu ne sembles pas filtrer les variables postées (en dehors du mail)
notamment les variables nom, message, etc (en gros, tout ce qui apparait dans tes headers.
 
Du coup, quelqu'un de mal intentionné (un mec parano, et il en faut, te dirait : c'est le prochain visiteur de ton site) peut injecter des caractères spéciaux dans ces champs, et transformer ton script en boite à spam.
 
Mais là, je n'ai pas les corrections exactes à apporter.
Je t'invite à demander à ton ami google  des infos sur les "headers injections" en php, avec la fonction mail.
 
:jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed