Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1776 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  url dans code php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

url dans code php

n°1814083
seagull6
Posté le 20-11-2008 à 00:14:16  profilanswer
 

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

mood
Publicité
Posté le 20-11-2008 à 00:14:16  profilanswer
 

n°1814085
easyocas
Posté le 20-11-2008 à 00:18:51  profilanswer
 

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');

n°1814087
seagull6
Posté le 20-11-2008 à 00:30:38  profilanswer
 

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

n°1814092
seagull6
Posté le 20-11-2008 à 01:29:45  profilanswer
 

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

n°1814117
Profil sup​primé
Posté le 20-11-2008 à 08:27:45  answer
 

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

n°1814122
seagull6
Posté le 20-11-2008 à 09:04:08  profilanswer
 

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

n°1814124
Profil sup​primé
Posté le 20-11-2008 à 09:12:21  answer
 

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)

n°1814128
seagull6
Posté le 20-11-2008 à 09:19:49  profilanswer
 

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

n°1814129
Profil sup​primé
Posté le 20-11-2008 à 09:21:37  answer
 

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 ?

n°1814137
seagull6
Posté le 20-11-2008 à 09:27:05  profilanswer
 

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

mood
Publicité
Posté le 20-11-2008 à 09:27:05  profilanswer
 

n°1814145
Profil sup​primé
Posté le 20-11-2008 à 09:36:15  answer
 

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.

n°1814147
seagull6
Posté le 20-11-2008 à 09:38:33  profilanswer
 

merci à toi, j' essaye

n°1814158
seagull6
Posté le 20-11-2008 à 09:48:58  profilanswer
 

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

n°1814164
Profil sup​primé
Posté le 20-11-2008 à 10:01:33  answer
 

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.

n°1814167
nabbo
Posté le 20-11-2008 à 10:03:31  profilanswer
 

: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
n°1814168
seagull6
Posté le 20-11-2008 à 10:03:49  profilanswer
 

ok je persiste

n°1814171
seagull6
Posté le 20-11-2008 à 10:10:44  profilanswer
 

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}$!";

n°1814181
skeye
Posté le 20-11-2008 à 10:26:08  profilanswer
 

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 -
n°1814460
nabbo
Posté le 20-11-2008 à 14:56:04  profilanswer
 

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
n°1815184
seagull6
Posté le 22-11-2008 à 01:16:55  profilanswer
 

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

n°1815199
nabbo
Posté le 22-11-2008 à 04:06:46  profilanswer
 

: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:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  url dans code php

 

Sujets relatifs
Cherche code source pour afficher ip , etc ...Recherche de code dans le css
pb erreur dans mon codeinserer une classe dans du code php
Code ascii d'un motProblème morceau de code
problème code php (simple, mais difficile pr moi)Sécurisation du code source
Simplification de mon code et 2 questionscode vba protection feuille excel sauf userform
Plus de sujets relatifs à : url dans code php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR