Mailer probleme d'un lien ...

Mammouth du PHP | 1353 Messages

27 juin 2006, 13:46

J'ai fait ça mais toujours pas :

Code : Tout sélectionner

echo "<a href="".$_SERVER["PHP_SELF"]."?page=test".">Envoyer un autre message...</a>n";
La tu touches vraiment le but... N'oublie juste pas que tu dois fermer les " du lien... <a href="www.mapage.php"> en html... De la meme manière que celle pour les ouvrir :D
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 juin 2006, 13:48

Il y a effectivement une différence entre " et ', qui est qu'entre guillemets les variables sont interprétées, mais pas entre apostrophes :
$var = "toto";
echo "mon nom est $var"; // affiche : mon nom est toto
echo 'mon nom est $var'; // affiche : mon nom est $var 
Bon aller, un p'tit indice pour te mettre sur la voie, mais c'est le dernier hein ?! ;)
// la chaine : 
echo '<a href="http://.../index.php?page=test">Envoyer un autre message...</a>'; 

// peut aussi s'écrire sous la forme de 3 chaines concaténées :
echo '<a href="' . 'http://.../index.php' . '?page=test">Envoyer un autre message...</a>'; 

Eléphanteau du PHP | 31 Messages

27 juin 2006, 13:50

oui oui ok pour la concaténation :D j'ai bien compris ce que c'était, je viens de relire un tuto pour me le remettre dans la tête ...

Eléphanteau du PHP | 31 Messages

27 juin 2006, 14:03

Merçi de m'aider comme ça en tout cas !

C'est vraiment un truc de fou le php :lol: même si au bout de quelques douleurs "mentales" on comprend un petit peu ...

bon j'ai essayé ça :

Code : Tout sélectionner

echo '<a href="' . '$_SERVER["PHP_SELF"]' . '?page=test"\">Envoyer un autre message...</a>';
Ca :

Code : Tout sélectionner

echo "<a href=\"".$_SERVER["PHP_SELF"]."?page=test".">Envoyer un autre message...</a>n";
Et encore ça :

Code : Tout sélectionner

echo "<a href=\"".$_SERVER["PHP_SELF"]."?page=test".">Envoyer un autre message...</a>"n";
celle ci etant la moins correcte ... les autres fonctionne au niveau de l'envoi et affiche ma page suivante avec le lien sauf que le lien pointe sur :
je cherche je sais que c'est tout prêt , à un guillemet ou virgules prêt ... :roll: :roll:

Mammouth du PHP | 1353 Messages

27 juin 2006, 14:08

echo '<a href="' . '$_SERVER["PHP_SELF"]' . '?page=test"\">Envoyer un autre message...</a>';
lol effectivement c'est tout près...

Tu as pris la syntaxe de Ryle, qui est très bien, mais tu as laissé un élément de l ancienne syntaxe donc il y a un peu trop de ".

Aussi tu n as pas besoin de mettre les ' ' autour de $_SERVER["PHP_SELF"] car c'est une variable.

Aussi sur le forum mets ton code entre les balises php ca sera plus lisible stp... :)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 31 Messages

27 juin 2006, 14:13

petite question à part... à quoi sert le
'n;
? à la fin ... ça ne vient pas de la ?

Mammouth du PHP | 1353 Messages

27 juin 2006, 14:16

Effectivement le n n a rien a faire ici mais il ne serait pas source d'erreur puisque c apres la fermeture du lien cela afficherai juste un n dans ta page...

J'avais regardé la seule des 3 propositions où il n y etait pas... Essaye de te rendre compte de ce que ca donnerai sans le php, autrement dit de ce qu'il va afficher pour le code html et tu verras tes erreurs...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 31 Messages

27 juin 2006, 14:28

Non définitivement je ne trouve pas, désolé de vous avoir fait perdre un peu votre temps...

Pour info voila ou j'ai récuperé le script : mailer

et que j'ai essayé de comprendre pour pouvoir l'inserer dans mes pseudo frame tout en n'oubliant pas le :
<?php
 $pageOK = array('accueil' => 'pages/accueil.htm', 'test' => 'test.php',
     );

if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
   include($pageOK[$_GET['page']]);  
 } else {
   include('pages/accueil.htm');  
 }

?>
dans mon index.php pour que le formulaire soit autorisé... quel travail ! :lol:

Merçi à vous

:wink:


En attendant j'ai toujours mon vieux script qui fonctionne mais il est moins bien :
<h2>Contact</h2>
<?php
if($_POST)
{
    //Email de la personne qui reçoit l'email
    $destinataire = "[email protected]";
                    
    if(empty($_POST['nom']) OR empty($_POST['email']) OR empty($_POST['titre']) OR empty($_POST['contenu']))
    {
        echo "<p style='color: red;'>Veuillez remplir tous les champs.</p>";
    }
    else
    {
        mail($destinataire, stripslashes($_POST['titre']), stripslashes($_POST['contenu']), "From: ".$_POST['email']."\nReply-To: ".$_POST['email']);
        echo "<p style='color: #ffffff;'>Votre message a bien été envoyé.</p>";
        
    }    
}
?>
<form action='<?php echo $PHP_SELF; ?>?page=contact' method='post'>
<fieldset>
<p>
  <label for="nom">Votre nom : </label>
  <span style="color: red;">*</span><br />
<input type='text' name='nom' size='20' maxlength="50" />
<br />
<label for="email">Votre mail : </label>
<span style="color: red;">*</span><br />
<input type='text' name='email' size='20' maxlength="50" />
<br />
<label for="email">Titre du mail : </label>
<span style="color: red;">*</span><br />
<input type='text' name='titre' size='20' maxlength="50" />
<br />
<label for="contenu">Contenu : </label>
<span style="color: red;">*</span><br />
<textarea name="contenu" cols="50" rows="5"></textarea><br />
<span style="color: red;">* : <label for="obligatoire">Informations obligatoire</label></span></p>
<p><input type="submit" value="Envoyer" /></p>
</fieldset>
</form>
a +

Eléphanteau du PHP | 31 Messages

27 juin 2006, 14:34

Derniere chose, que pensez vous de ça : sécurité formulaire

Code : Tout sélectionner

.htmlentities
par exemple je devrais le mettre comme ça si j'ai bien compris :

Code : Tout sélectionner

"From: ".htmlentities.$_POST['email']."\nReply-To: ".$_POST['email']);
Merçi :wink: [/php]

Mammouth du PHP | 1353 Messages

27 juin 2006, 14:41

htmlentities est une fonction, il faut donc l appliquer sur une variable que tu mets dans les parenthèses.

Regarde bien dans le tutoriel dont tu as donné le lien :
<?php
echo "Vous venez d'écrire : ".htmlentities($_POST['Description'])."";
?>
ta syntaxe n est pas tout a fait exacte mais encore une fois ca n est pas loin.... ;)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 31 Messages

27 juin 2006, 14:50

héhé pas loin pas loin c'est sur mais je n'y arrive pas en attendant :lol:

Mais bon comme qui dirait c'est en galérant qu'on apprend ... :shock: si seulement ... :lol:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 juin 2006, 10:55

Dommage, tu n'étais pas loin.. bon aller voici la syntaxe avec les guillemets:
echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?page=test\">Envoyer un autre message...</a>\n";
Tu concatènes une première chaine en protégeant la guillemet qu'elle contient avec un antislash, la valeur contenue par $_SERVER["PHP_SELF"] (qui est déjà une chaine également, pas besoin de lui coller de guillemets) et ta dernière chaine en échappant de même la guillemet qu'elle contient :)

le "\n" va ajouter un retour à la ligne dans le code source de la page générée (autant dire qu'au niveau de l'affichage, ca ne change absolument rien, c'est plus pour toi pour pouvoir relire plus facilement le code générer :))
par exemple :

echo "<tr><td>...</td><td>...</td><td>...</td></tr>";
// génère dans le source de ta page :
<tr><td>...</td><td>...</td><td>...</td></tr>

echo "<tr>\n<td>...</td>\n<td>...</td>\n<td>...</td>\n</tr>";
// génère dans le source de ta page :
<tr>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>

Eléphanteau du PHP | 31 Messages

28 juin 2006, 11:45

:lol: Merçi pour la solution , je ne pensais pas que je l'aurais, en tout cas ce n'est pas que je n'ai pas cherché ! :?

Je vais tester ça cette apres midi et merci pour les explications en tout cas :wink:

yan

Eléphanteau du PHP | 31 Messages

28 juin 2006, 13:00

Merçi bien de m'avoir aider ! apres coup je comprends mieux la syntaxe à present, c'est vrai que je n'étais pas loin ! :wink:

Je voulais savoir votre avis si possible entre mes 2 codes justement, lequel vous parait le mieux et le plus sur... :
<?php
$email_webmaster = "[email protected]";
// === traitement des données du formulaire ============================================================
if (isset($_POST["envoyer"])){
// le formulaire a été soumis
        $etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
        if (isset($_POST["email_expediteur"])) {
                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
        }
        if (isset($_POST["titre"])) {
                 $_POST["titre"]=trim(stripslashes($_POST["titre"]));
        }
        if (isset($_POST["message"])) {
                 $_POST["message"]=trim(stripslashes($_POST["message"]));
        }
        // --- test de la validité des champs saisis ---
        if (empty($_POST["email_expediteur"])) {
// il manque l'email de l'expéditeur
                 $erreur="Saisissez votre adresse email...";
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
                 $erreur="Votre adresse e-mail n'est pas valide...";
        }
        elseif (empty($_POST["message"])) {
// le message est vide
                 $erreur="Saisissez un message...";
        }
        else {
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
                 $etat="ok";
        }
}
else {
// --- le formulaire n'a pas été soumis ---
           $etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>
<h2>Contacter le webmaster</h2>
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
         if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
                         echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
         }
?>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>?page=test">
        <p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br />
        <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
        if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
        }
        ?>" />
        </p>
        <p><label for="titre">Titre de message (facultatif):</label><br />
        <input type="text" size="40" name="titre" id="titre" value="<?php
        if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
                echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
        }
        ?>" />
        </p>
        <p><label for="message">Message (obligatoire):</label><br />
        <textarea name="message" id="message" cols="40" rows="5"><?php
        if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
                echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?></textarea>
        </p>
        <p><input type="submit" name="envoyer" value="Envoyer" />
        </p>
        </form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
                echo "Votre message a été envoyé.<br />\n";
                echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?page=test\">Envoyer un autre message...</a>\n";
        }
        else {
// erreur lors de l'envoi du mail
                echo "Un problème s'est produit lors de l'envoi du message.\n";
                echo "<a href=\"" . $_SERVER["PHP_SELF"] . "?page=test\">Envoyer un autre message...</a>\n";
        }
}
?>
Ou mon "ancien" :
<h2>Contacter yan.k</h2>
<?php
if($_POST)
{
    //Email de la personne qui reçoit l'email
    $destinataire = "[email protected]";
                    
    if(empty($_POST['nom']) OR empty($_POST['email']) OR empty($_POST['titre']) OR empty($_POST['contenu']))
    {
        echo "<p style='color: red;'>Veuillez remplir tous les champs.</p>";
    }
    else
    {
        mail($destinataire, stripslashes($_POST['titre']), stripslashes($_POST['contenu']), "From: ".$_POST['email']."\nReply-To: ".$_POST['email']);
        echo "<p style='color: #ffffff;'>Votre message a bien été envoyé.</p>";
        
    }    
}
?>
<form action='<?php echo $PHP_SELF; ?>?page=test' method='post'>
<fieldset>
<p>
  <label for="nom">Votre nom : </label>
  <span style="color: red;">*</span><br />
<input type='text' name='nom' size='20' maxlength="50" />
<br />
<label for="email">Votre mail : </label>
<span style="color: red;">*</span><br />
<input type='text' name='email' size='20' maxlength="50" />
<br />
<label for="email">Titre du mail : </label>
<span style="color: red;">*</span><br />
<input type='text' name='titre' size='20' maxlength="50" />
<br />
<label for="contenu">Contenu : </label>
<span style="color: red;">*</span><br />
<textarea name="contenu" cols="50" rows="5"></textarea><br />
<span style="color: red;">* : <label for="obligatoire">Informations obligatoire</label></span></p>
<p><input type="submit" value="Envoyer" /></p>
</fieldset>
</form>
Merçi :D