8797 sujets

Développement web côté serveur, CMS

Bonjour,

Je souhaite faire en sorte que les internautes puissent envoyer le lien d'un article à un ami.

Sur la page de l'article, je récupère l'URL avec
$pageaenvoyer = $_SERVER['REQUEST_URI'];

Ensuite le lien "envoyer à un ami" ouvre un thickbox à l'aide de la variable
envoyer-article.php?pageaenvoyer='.$pageaenvoyer.'width=600&height=300"

Une fois dans le thickbox, j'ai mis un petit formulaire, et j'ai placé en plus dans l'action :
method="post" action="envoyer-article-mail.php?pageaenvoyer=<?php $_GET['pageaenvoyer']?>"


Quand on clique sur "submit", on appelle la page d'envoi avec ce code :

<?php
		$lapage = $_GET['pageaenvoyer'];
		
		$expnom = htmlentities($_POST['expnom']);
		$expemail = htmlentities($_POST['expemail']);
		
		if (eregi("\r",$expemail) || eregi("\n",$expemail)){die("Why ??  [decu]");}
		
		$destemail = htmlentities($_POST['destemail']);
		if (eregi("\r",$destemail) || eregi("\n",$destemail)){die("Why ??  [decu]");}
		
		$msg = "Tu peux consulter cet article interessant :  http://egypte.webou.net".$lapage."\n".utf8_encode(stripslashes($_POST['msg']));
 
		
		$from_email = $expemail;
		$entetedate = date("D, j M Y H:i:s -0600"); // avec offset horaire
		$entetemail = "From: $from_email \n"; // Adresse expéditeur
		$entetemail .= "Cc: \n";
		$entetemail .= "Bcc: \n"; // Copies cachées
		$entetemail .= "Reply-To: $from_email \n"; // Adresse de retour
		$entetemail .= "Date: $entetedate"; 
		$entetemail .= "Content-type: text/html; charset=utf-8\n";
		
		mail($destemail,"Je te conseille la lecture de cet article du site Egypte",$msg,$entetemail);
		
		echo 'L\'article a bien &eacute;t&eacute; envoy&eacute; par e-mail &agrave; l\'adresse : '.$destemail.'.';
		echo '<a href="index.php?'.$lapage.'" title="Retour">Retour</a>';
		
	?>




Or :
1. l'email n'est pas envoyé,
2. le lien de la page ne passe pas...

J'ai essayé aussi avec un <input type="hidden" name="pageaenvoyer" id="pageaenvoyer" value="<?php $_GET['pageaenvoyer']; ?>" /> dans le formulaire, mais rien à faire...

Quelqu'un a-t-il une idée ?
Modifié par montoumes (17 Jul 2008 - 17:09)
Salut,

personnellement j'aurais récupéré directement $_SERVER['SCRIPT_URI'].

Et sinon, sans aller plus loin, ce ne serait pas mieux de rajouter un echo dans
<?php $_GET['pageaenvoyer']?>
Smiley murf !

A+
Oula... je pense que mon futur pseudo ce sera "le boulet"... effectivement avec un écho, le paramètre passe mieux...

Bon maintenant il faut que je creuse pourquoi l'email n'est pas envoyé...

@+ et merci encore !
J'ai tout de même encore une petite question qui en découle...

J'envoie "/index.php?section=ter&article=1" et je ne récupère que "/index.php?section=ter".

Y'a-t-il un moyen de dynamiquement accepter la chaine avec le "&article=1" en plus ?

J'ai tenté $pageaenvoyer = htmlspecialchars($_SERVER['REQUEST_URI']);
et puis $pageaenvoyer = str_replace("&", "&amp;", $pageaenvoyer);

mais je me demande si ce que je veux faire est possible ?
montoumes a écrit :
mais je me demande si ce que je veux faire est possible ?
Euh... j'ai du louper un truc car le test suivant fonctionne :

test1.php
<body>
<?php
$pageaenvoyer = "/index.php?section=ter&article=1";
?>
<form action="test2.php" method="get">
<input type="hidden" name="pageaenvoyer" value="<?php echo $pageaenvoyer; ?>" />
<input type="submit" />
</form>
</body>

test2.php
<?php
$var = $_GET['pageaenvoyer'];
echo $var;
?>
Étrange...

Sur ma page article (/index.php?section=ter&article=1):

$pageaenvoyer = htmlspecialchars($_SERVER['REQUEST_URI']);
echo '<li><a href="envoyer-article.php?pageaenvoyer='.$pageaenvoyer.'&width=600&height=300" class="thickbox" title="Envoyer l\'adresse de l\'article par email">envoyer cet article &agrave; un ami</a></li>' ;					


Sur ma page de formulaire (envoyer-article.php, qui reçoit ?pageaenvoyer=) :

<?php
    			$pageaenvoyer = $_GET['pageaenvoyer'];
    		?>
        <form method="post" action="envoyer-article-mail.php" name="envoyerarticle" id="envoyerarticle" enctype="text/plain">
        
        <table cellpadding="0" cellspacing="0">
            <tbody>
                <tr>
                    <td>Votre nom ou pseudo:yme :</td>
                    <td><input type="text" name="expnom" id="expnom" /></td>
                </tr>
                <tr>
                    <td>Votre email :</td>
                    <td><input type="text" name="expemail" id="expemail" /></td>
                </tr>
                <tr>
                    <td>L'email du destinataire :</td>
                    <td><input type="text" name="destemail" id="destemail" /></td>
                </tr>
                <tr>
                    <td>Message :</td>
                    <td><input type="text" name="msg" id="msg" /></td>
                </tr>
                <tr>
                	<input type="hidden" name="pageaenvoyer" value="<?php echo $pageaenvoyer; ?>" />
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" name="envoyer" id="envoyer" class="thickbox" /></td>
                </tr>
            </tbody>
        </table>
        
        </form>


Sur ma page d'envoi (envoi-article-mail.php) :

<?php
		$lapage = $_GET['pageaenvoyer'];
		
		echo $lapage;
		
		$expnom = htmlentities($_POST['expnom']);
		$expemail = htmlentities($_POST['expemail']);
		
		if (eregi("\r",$expemail) || eregi("\n",$expemail)){die("Why ??  [decu]");}
		
		$destemail = htmlentities($_POST['destemail']);
		if (eregi("\r",$destemail) || eregi("\n",$destemail)){die("Why ??  [decu]");}
		
		$msg = "Tu peux consulter cet article interessant :  http://egypte.webou.net".$lapage."\n".utf8_encode(stripslashes($_POST['msg']));
 
		
		$from_email = $expemail;
		$entetedate = date("D, j M Y H:i:s -0600"); // avec offset horaire
		$entetemail = "From: $from_email \n"; // Adresse expéditeur
		$entetemail .= "Cc: \n";
		$entetemail .= "Bcc: \n"; // Copies cachées
		$entetemail .= "Reply-To: $from_email \n"; // Adresse de retour
		$entetemail .= "Date: $entetedate"; 
		$entetemail .= "Content-type: text/html; charset=utf-8\n";
		
		mail($destemail,"Je te conseille la lecture de cet article du site Egypte",$msg,$entetemail);
		
		echo 'L\'article a bien &eacute;t&eacute; envoy&eacute; par e-mail &agrave; l\'adresse : '.$destemail.'.';
		echo '<a href="http://egypte.webou.net'.$lapage.'" title="Retour">Retour</a>';
		
	?>


Sur cette dernière page, rien ne ressort dans les echo de $lapage...

Ca va être plus compliqué que prévu... Smiley biggol
montoumes a écrit :
Sur ma page article (/index.php?section=ter&article=1):

$pageaenvoyer = htmlspecialchars($_SERVER['REQUEST_URI']);
echo '<li><a href="envoyer-article.php?pageaenvoyer='.$pageaenvoyer.'&width=600&height=300" class="thickbox" title="Envoyer l\'adresse de l\'article par email">envoyer cet article à un ami</a></li>' ;					
Ah ben c'est sûr que ça ne peut pas marcher Smiley murf !

Tu pourrais essayer quelque chose comme :
<?php
$pageaenvoyer = htmlspecialchars($_SERVER['REQUEST_URI']);
$pageaenvoyer .= '&width=600&height=300';
echo '<li><a href="envoyer-article.php?pageaenvoyer='.urlencode($pageaenvoyer).'" class="thickbox" title="Envoyer l\'adresse de l\'article par email">envoyer cet article à un ami</a></li>' ;
?>

Modifié par Heyoan (17 Jul 2008 - 18:42)
J'ai du plomber un truc quelque part, parce qu'avant l'envoi de mail marchait (sans le lien), et la plus rien... ni le mail, ni le lien... snif... cruel PHP...
Hello,

Tu peux aussi jeter un oeil du coté de base64_encode etbase64_decode pour passer certains variables par une url.
Attention toute fois, certains caracteres (=/+) risquent de poser problème.
Regarde les commentaires des pages sur php.net, j'y ai vu des exemples.

Cela dit, je n'ai pas regardé le détail de ton code et ma remarque était juste sur l'idée de passer des caractères spéciaux par une url.