PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » vérification de l'appel d'une page » 25-05-2017 15:33:52

Bon sang mais c'est bien sûr !
avec une redirection header('location:form.php') 

merci :-)
Gérard

#2 Forum Général PHP » vérification de l'appel d'une page » 25-05-2017 15:33:52

Gaeil28
Réponses : 3

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

#3 Re : Forum Général PHP » fonction mail et "" » 20-03-2015 14:31:59

bonjour,
merci..ça fonctionne parfaitement
j'ai fait

str_replace('"','_',$adresse)

Gérard

#4 Forum Général PHP » fonction mail et "" » 20-03-2015 14:31:59

Gaeil28
Réponses : 3

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

<input type="hidden" name="adresse" value="<?php echo $adresse ; ?>" />

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 .


$adresse_2 = $_POST['adresse'];
etc.....

$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

$adresse_2 = htmlspecialchars($_POST["adresse"],ENT_QUOTES);

mais ça ne résout pas le problème..l'adresse a disparu dans le mail...
Quel est le problème ?
merci
Gérard

#6 HTML, xHTML CSS » formulaire, une image à la place d'un bouton » 28-10-2014 04:54:55

Gaeil28
Réponses : 3

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


<form name ="commande"  action = "email_commande.php" method="post" enctype="application/x-www-form-urlencoded">
<table   cellpadding="5" cellspacing="5" >
<tr>
 <td><input name="prenom" type="text" size="30" /></td>
 </tr>
 <tr>
<td><input name="nom" type="text" size="50" /></td>
</tr>
<tr>
<td>
<input src="bouton_commander.gif" alt="tirage" width="142" height="57" border=0 type="image"  name="envoyer"  >
</td>
</tr>
</table>
</form>

 

#8 Re : Forum Général PHP » [Résolu]URLREWRITING (encore !?) » 06-12-2013 18:12:24

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 :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^bon-de-commande\.html$ /pratique/commandeV2.php  [L]

merci
Gérard

#9 Forum Général PHP » [Résolu]URLREWRITING (encore !?) » 06-12-2013 18:12:24

Gaeil28
Réponses : 4

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  big_smile
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...:(


Options +FollowSymlinks
RewriteEngine on
RewriteRule ^bon-de-commande\.html$ commandeV2.php  [L]

donc comment écrire correctement la ligne du htaccess ?
merci aux spécialistes pour leur solution (si elle existe ?)   wink
Gérard

#11 Re : Forum Général PHP » [Résolu] codage UTF-8 entre le formulaire et le mail de réception » 23-11-2013 03:32:01

Jc a écrit :

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

#12 Re : Forum Général PHP » [Résolu] codage UTF-8 entre le formulaire et le mail de réception » 23-11-2013 03:32:01

au fait...la réponse oui, n'est pas claire...

Jc a écrit :

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 wink


oui je suis obligé de mettre &eacute; ou oui je dois mettre é  ?
merci

#13 Re : Forum Général PHP » [Résolu] codage UTF-8 entre le formulaire et le mail de réception » 23-11-2013 03:32:01

merci.
oui effectivement j'ai remplacé par cette seule ligne (plus appropriée) dans le php.ini

default_charset = "utf-8"

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

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8" />  <title>Mon titre</title>
</head>
<body>
// ici le code du script php seul
<?php ......?>
</body>
</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.

#14 Re : Forum Général PHP » [Résolu] codage UTF-8 entre le formulaire et le mail de réception » 23-11-2013 03:32:01

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

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8" />
  <title>Mon titre</title>

est-ce que je peux mettre directement des accents dans les balises et le texte mon fichier, par exemple

<title> Mon été à la campagne</title>

ou dois mettre  ?

<title> Mon &eacute;t&eacute; &agrave; la campagne</title>

question 2
J'ai codé le script commentaires.php en utf8 sans BOM (via Notepad ++)
j'ai ajouté

 $headers = "De : MonSite";
 $headers.="Content-type:text/html; charset=\"utf-8\"\r\n";
$headers.= "Content-Transfert-Encoding:8bit\r\n";

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

!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8" />  <title>Mon titre</title>
.....
puis
<?php include("commentaires.php"); ?>
.....
</html>

 

J'ai mis à la racine du site un php.ini qui contient les infos suivantes (il est complet ci-dessous)

mbstring.language=UTF-8
mbstring.internal_encoding= UTF-8
mbstring.http_input=UTF-8
mbstring.http_output=UTF-8
mbstring.detect_order= auto
mbstring.func_overload = 1

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

#15 Re : Forum Général PHP » [Résolu] codage UTF-8 entre le formulaire et le mail de réception » 23-11-2013 03:32:01

bonjour,

oui depuis mon post j'ai essayé pas mal de choses pour coder le mail comme par exemple

$headers = "From:  <contact@monsite.com> \r\n";
$headers ;= 'Content-Type: text/plain; charset=UTF-8; format=flowed;';
$headers . = 'MIME-Version: 1.0';
$headers .= 'Content-Transfer-Encoding: 8bit';

et ensuite

mail($adresse_mail,"Nouveau commentaire de ".$pseudo,$message,$provenance_mail,$headers);

ou "plus simple"

$entete = 'MIME-Version: 1.0' . "\r\n";
$entete .= 'Content-type: text/plain; charset=utf-8' . "\r\n";

et ensuite

mail($adresse_mail,"Nouveau commentaire de ".$pseudo,$message,$provenance_mail,$entete);

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

<meta charset="utf-8">

et c'est là que ça ne fonctionne plus...
histoire de fou ? roll


Gérard

#16 Forum Général PHP » [Résolu] codage UTF-8 entre le formulaire et le mail de réception » 23-11-2013 03:32:01

Gaeil28
Réponses : 12

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


<meta charset="utf-8">

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 &eacute;.
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)


<?php
//*************************
 //Définitions des variables
 //*************************
 
 $debug = 1; //0=off / 1=on
 $notification_mail = 1; //0=non / 1=oui
 $adresse_mail = "monmail@moi.com";
 $provenance_mail = "From: mon site";
 
 
 // Recupere le pseudo
 $pseudo = $_POST['pseudo'];
 //Récupère le commentaire
 $commentaire = $_POST['commentaire'];

 //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>
 ';
?>
 

#17 Re : Forum Général PHP » empêcher l'exécution directe d'un fichier » 01-01-2012 12:48:18

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

if (!isset($_POST['email'])) {echo "désolé nous n'avons pas récupéré votre mail - merci de nous contacter via la page contact du site et nous signaler ce problème";exit;}

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

#18 Forum Général PHP » empêcher l'exécution directe d'un fichier » 01-01-2012 12:48:18

Gaeil28
Réponses : 3

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

Pied de page des forums

Propulsé par FluxBB