Vous n'êtes pas identifié(e).
Pages : 1
Bon sang mais c'est bien sûr !
avec une redirection header('location:form.php')
merci :-)
Gérard
Bonjour,
J'ai une page formulaire form.php qui appelle une autre page mail.php (en transmettant les variables par la fonction POST) , cette page (mail.php) affiche différentes information au demandeur et de plus m'envoi un mail.
Je voudrai afficher la page mail.php (et donc l'exécuter), uniquement si celle-ci est appelé par form.php, et renvoyer vers une autre page en cas d'appel direct de la page mail.php.
Comme je suis débutant et que j'ai déjà eu du mal à faire fonctionner tout cela , pourriez-vous me donner la fonction ou l'instruction qui me permettrai de faire cela ?
Merci à vous
Gérard
bonjour,
merci..ça fonctionne parfaitement
j'ai fait
Gérard
Bonjour,
j'utilise un formulaire qui envoi un mail après que la personne ait cliqué sur le bouton envoyer.
J'utilise la fonction mail de PHP. Le message est envoyé en html.
il y a une première étape qui consiste à afficher à l'écran ce que la personne a saisie.
ensuite je passe les variables au formulaire mail par des
ensuite, dans le fichier d'envoi du mail, je récupère par exemple la variable adresse $adresse et je l'inclue dans le message .
$message = "Livraison au nom de : <br>";
$message .= "{$prenom} ";
$message .= "{$nom_demandeur}<br>";
$message .= "{$adresse_2}<br>";
puis j'envoie
if (mail($destinataire, $objet, $message, $headers)) // Envoi du message
{
echo 'Votre message a bien été envoyé ';
}
else // Non envoyé
{
echo "Votre message n'a pas pu être envoyé";
}
imaginons que la personne saisisse : 39 "résidence toto".
dans le mail de réception, je ne vois que 39 - c'est à dire que tout ce qui était entre "" ne passe pas (a été supprimé).
j'ai essaye de mettre
mais ça ne résout pas le problème..l'adresse a disparu dans le mail...
Quel est le problème ?
merci
Gérard
Merci !
Gérard
Bonjour,
J'ai fait un formulaire qui fonctionne très bien chez moi et chez d'autres personnes...(il exécute le fichier commande.php lorsqu'on clique sur le bouton (image) envoyer) .
Mais quelques visiteurs (très peu) me disent qu'il ne se passe rien quand ils cliquent sur le bouton envoyer - ils restent sur la page - (bouton qui est donc une image)
Auriez-vous une idée d'où vient ce problème ?
merci
Gérard
voici le code (j'ai pas mis tous les champs...)
Ok Merci, donc c'est résolu...
bonjour,
merci pour toutes ces infos.
En fait j'avais un site sous Joomla, et je me suis fait "piraté" (en fait ils ont réussi à héberger un script de spam dans mes fichiers...)
conclusion, j'ai tout supprimé, et j'ai refait un site moi-même (en bon vieux php et html) mais en toute urgence...au moins, je connais mes fichiers (et ce qu'il y a dedans..)
et c'est pour cela que je n'ai pas pris le temps de bien tout penser..sans compter qu'effectivement, je ne suis pas au top en programmation...
mais votre explication est très claire - Merci
une dernière question, mon fichier commande_V2.php se trouve dans un répertoire juste sous la racine du site en dur cela donne
www.monsite.com/pratique/commande_v2.php
est-ce qu'il faut mettre un chemin dans la ligne rewrite ? (car dans mon exemple j'en ai pas mis).
du style :
merci
Gérard
Bonjour,
il y a plein de tuto sur l'URL Rewriting, et ça a l'air assez "simple" pour les choses basiques, mais j'ai pas dû tout comprendre car je n'arrive pas à faire la chose suivante :
j'ai un fichier commandeV2.php qui affiche un bon de commande
cette adresse : http://www.monsite.com/monrep/commandeV2.php est référencée par Google et aussi par d'autre sites en lien dur.
Mais cette adresse ne me plaît pas vraiment et j'aurai voulu que dans la barre adresse du navigateur ,
quand la personne clique sur un lien du menu (ou écrive l'adresse) qui amène sur la page http://www.monsite.com/monrep/commandeV2.php,
le navigateur affiche plutôt un truc du genre
http://www.monsite.com/bon-de-commande ou , si c'est pas possible sans extension, http://www.monsite.com/bon-de-commande.html
j'ai essayé ça dans mon htaccess , mais ça ne fonctionne pas...:(
donc comment écrire correctement la ligne du htaccess ?
merci aux spécialistes pour leur solution (si elle existe ?)
Gérard
Bonjour, et merci pour vos conseils et aides diverses.
merci
Gérard
Bonjour,
Concernant l'entête au niveau html la bonne écriture c'est
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="fr-fr" http-equiv="Content-Language" >
Cordialement,
Jc
Moi je veux bien, vu que je ne suis pas un spécialiste, mais alors que pensez de ça ?
Openclassroom Codage d'une page
au fait...la réponse oui, n'est pas claire...
Bonjour,
Pour répondre à votre première question oui.
En ce qui concerne la configuration de php, commentez (désactivez) les directives mbstring vous n'en avez pas besoin.
Relancez apache, et essayez à nouveau
oui je suis obligé de mettre é ou oui je dois mettre é ?
merci
merci.
oui effectivement j'ai remplacé par cette seule ligne (plus appropriée) dans le php.ini
j'ai aussi été voir cet excellent tuto (et suivi les préconisations à la lettre..)
OpenClassroom
Le problème n'est pas résolu, ....
car le fichier exécuté seul (donc sans aucune instruction html de codification) ça marche. le bazard c'est quand on commence à mettre les entêtes HTML
ça donne dans le mail
Gérard le 20.11.13 - 09:59:59
commentaire de réponse fichier gchtml.php
dans le tuto il y a comme "consigne"
"é", "î", "Ã" etc. => la chaine de caractères est encodée en UTF-8 mais le navigateur croit avoir affaire à de l'ISO-8859-1 (probablement parce que votre page dit au navigateur qu'elle utilise l'ISO-8859-1). Utilisez la fonction utf8_decode sur la chaine de caractères posant problème si elle est issue d'une variable PHP.
il faudrait pour cela que je code comme indiqué les variables destinées au mail..
bon je vais creuser...
Gérard
merci pour toutes ces infos.
Bonjour,
OK merci.
en fait c'est vrai qu'il y a un peu tout et n'importe quoi au niveau encodage des différents fichiers. Certains sont utf8, d'autres en ANSI...
il faut donc que je reprenne calmement mon code...:/
question 1
Bien qu'ayant lu pas mal de conseils sur l'encodage (ou le codage ?) des caractères, j'ai du mal à comprendre.:(
en supposant que le serveur interprète bien du utf8 (par exemple grâce à une instruction dans le php.ini)
pour un fichier "normal" en HTML5
Si je mets en en tête une instruction du genre
est-ce que je peux mettre directement des accents dans les balises et le texte mon fichier, par exemple
ou dois mettre ?
question 2
J'ai codé le script commentaires.php en utf8 sans BOM (via Notepad ++)
j'ai ajouté
.....et un peu plus bas
mail($adresse_mail,"Nouveau commentaire de ".$pseudo,$message,$provenance_mail,$headers);
J'ai codé (via notepad ++) le fichier php qui contient le script en utf8 sans BOM
avec en en-tête
J'ai mis à la racine du site un php.ini qui contient les infos suivantes (il est complet ci-dessous)
et bien c'est toujours pareil..voici l'en-tête du mail que je reçois
X-Amavis-Alert: BAD HEADER SECTION, Non-encoded 8-bit data (char C3 hex):
donc je ne vois pas....
merci
Gérard
bonjour,
oui depuis mon post j'ai essayé pas mal de choses pour coder le mail comme par exemple
et ensuite
ou "plus simple"
et ensuite
mais rien dans ces essais ne fonctionne (je veux dire que je reçois toujours le mail sans les caractères accentués... Gérard au lieu de Gérard.)
c'est vraiment bizarre, car si j'exécute ce script avec un include dans un fichier html/php classique (non codé en UTF8, ça fonctionne...
mais là je l'exécute à partir d'une page html/php dont l'entête précise
et c'est là que ça ne fonctionne plus...
histoire de fou ?
Gérard
Bonjour,
Je n'ai pas assez de connaissance en PHP pour résoudre mon problème.
J'ai un script qui permet de laisser un commentaire sur mon site. il est très simple et me convient parfaitement. Il utilise juste un fichier texte qui contient les commentaires.
Tout allait bien jusqu'à ce qu je décide de coder mes page en UFT8 donc dans l'entête de ma page html
le commentaire est parfaitement publié sur la page au niveau des accents. Le fichier texte qui contient les commentaires comporte les accents et non le caractères ascii du genre é.
Mon problème se situe au niveau du mail que je reçois. Les caractères accentués ne s'affichent pas correctement et sont donc remplacés par exemple pour Gérard par Gérard .
que devrais-je modifier pour que la mail affiche bien les caractères accentués ?
merci pour votre aide
Gérard
voici le code complet (en plus, ça peut servir à ceux qui cherche un script du genre)
//Extrait le nom de la page et l'utilise pour le nom du fichier de sauvegarde en ".txt"
$script_name = $_SERVER['SCRIPT_NAME'];
$pos = strrpos($script_name, "/");
$path = substr($script_name, $pos+1, strlen($script_name) - $pos - 5).'.txt';
//Affichage du formulaire
//Enregistre et affiche les commentaires
if(isset($_POST['submit']))
save_comment($path,$pseudo,$commentaire);
else
//Affiche les commentaires
if(file_exists($path))
echo affiche_commentaires($path);
//*********
//Fonctions
//*********
function affiche_commentaires($path)
{
global $debug;
$handletmp = fopen($path,"r");
$tableau_content = file($path);
fclose($handletmp);
//***************************
//Affichage des commmentaires
//***************************
// boucle sur tous les elements
$HTML = '<div class="title-com-wrapper">Vos commentaires</div>';
for($i=0; $i < count($tableau_content); $i++)
{
if($i%2==0)
{
$HTML .= '<div class="user-wrapper">';
$HTML .= $tableau_content[$i].'</div>';
}
else
{
$HTML .= '<div class="com-user-wrapper">';
$HTML .= $tableau_content[$i].'</div>';
}
}
$HTML .= '</div>';
return $HTML;
}
function save_comment($path,$pseudo,$commentaire)
{
//*****************************
//Enregistrement du commentaire
//*****************************
global $debug;
global $notification_mail;
global $adresse_mail;
global $provenance_mail;
if(file_exists($path))
{
$handle = fopen($path,"r");
$tableau_content = file($path);
fclose($handle);
}
//remplace le retour à la ligne par
et le \' par '
$commentaire=eregi_replace("\r\n","
",$commentaire);
$commentaire=eregi_replace("\\\'","'",$commentaire);
if(($commentaire != "")&&(($commentaire . "\r\n") != $tableau_content[count($tableau_content)-1]))
{
$handle = fopen($path,"w");
for($i=0;$i < count($tableau_content); $i++)
{
if(($tableau_content[$i] != "")&&($tableau_content[$i] != "\r\n"))
fwrite($handle,$tableau_content[$i]);
}
$str_out = '<span class="post-pseudo-style">' .$pseudo." </span> le ".date('d.m.y - H:i:s')."\r\n".$commentaire."\r\n";
fwrite($handle,$str_out);
fclose($handle);
if($notification_mail == 1)
{
$message = $pseudo." le ".date('d.m.y - H:i:s')."\r\n".$commentaire."\r\nhttp://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
mail($adresse_mail,"Nouveau commentaire de ".$pseudo,$message,$provenance_mail);
}
}
else
{
if($debug == 1)
echo "
Commentaire vide ou redondant!!!
";
}
echo Affiche_commentaires($path);
}
echo '
<div id="conteneur">
<div class="title-post-wrapper">Laisser un commentaire</div>
<form enctype="multipart/form-data" name="comment_form" action="'.$_SERVER['PHP_SELF'].'" method="POST">
<label class="pseudo-style" for="pseudo-box">Pseudo : </label>
<input type="text" name="pseudo" class="pseudo-box" value="'.$pseudo.'" placeholder="Entrez votre pseudo">
<label class="com-style">Votre commentaire :</label>
<textarea name="commentaire" cols="50" rows="5" class="com-box" placeholder="Entrez votre commentaire - 5 lignes maxi..."></textarea>
</textarea>
<input class="button-style" type="submit" name="submit" value="Poster" />
</form>
';
?>
Merci,
bon c'est encore un peu flou pour moi tout ça..
e script inscription.php ($_SERVER['PHP_SELF'] peut devenir ton amie
j'avais lu quelque part qu'avec cette fonction on pouvait tester le nom du fichier "appelant" et dans le cas contraire (le fichier appelant n'est pas le bon où n'existe pas..on arrête le script. Mais j'ai essayé..et je dois faire des erreurs de syntaxe...
En fait dans le fichier envoi_mail.php il faudrait dire que si le fichier appelant n'est pas inscription.php alors on arrête.
bref...
en essayant la dernière solution que tu proposes,
if (!defined('IS_VALID_INCLUDE')) {
header('Status: 412');
exit();
j'ai eu un message d'erreur en provenance du fichier envoi_mail.php qui disait en gros que Header était déjà défini....(il faut dire que j'utilise phpmailer dans le script..peut-être que ça vient de là ?...)
bref, je m'en suis tiré (on verra si c'est efficace à l'usage ) par le test du mail du demandeur...à priori ça marche. Si je mets l'adresse (www.toto.com/envoi_mail.php) directement dans le navigateur, il affiche bien le message d'erreur et ne m'envoi pas le mail de copie.
en effet, si un robot exécute directement le fichier envoi_mail.php, alors l'adresse mail du demandeur (qui provient du formulaire et qui est récupérée ici par un POST) est vide. dans ce cas le script s'arrête..
voilà l'instruction que j'ai mise en début du fichier envoi_email.php
j'ai mis une phrase, on sait jamais...(je précise que le formulaire inscription.php est testé en long en large et en travers..et qu'on ne peut pas le valider si on n'indique pas un mail demandeur "valide" (du moins dans la syntaxe xxxx@xxxx.xx)
merci
Gérard
Bonjour,
Je dirai qu'il y a semble-t-il tellement de solutions que je ne sais laquelle utiliser (et surtout comment l'utiliser !).
J'ai un formulaire (inscription.php) dont le bouton envoyer exécute un autre fichier PHP d'envoi de mail (envoi_mail.php) - dans ce mail je récapitule les infos données par la personne et lui souhaite la bienvenue...je précise que ce fichier m'envoie une copie de ce mail.
Je ne cherche pas une sécurité à toute épreuve, mais simplement une instruction qui éviterait qu'un robot ne lance directement le fichier envoi_mail.php.
En effet, je reçois de temps à autre le mail vide...ce qui laisse supposer que le fichier envoi_mail.php est exécuté directement...
J'ai vu des choses comme utiliser la variable $_SERVER - mais certains disent que ça ne marche pas avec tous les navigateurs ?
j'ai aussi trouvé une variable par define( '_VALID_MOS', 1 )
voir mettre une variable dans le fichier inscription.php et la tester (et la remettre à zéro) dans le fichier envoi_mail.php
mais dans un cas comme dans l'autre je ne sais pas comment utiliser cela ...
Alors certes, je présume que pour quelqu'un de compétent c'est facile, mais nous sommes ici sur un forum débutant (sur lequel j'espère traînent des experts ;-)
J'ai bien essayé de regarder des docs ici et là, et de faire des recherches via google (et ici même su rce forum) , mais à chaque fois ce sont des exemples précis sur un cas donné, que je n'arrive pas à transposer au mien...
alors si vous pouviez me donner un petit coup de pouce, je gagnerai beaucoup de temps...
merci
Gérard
Pages : 1