non .... Notice définitivement chiante ! - PHP - Programmation
Marsh Posté le 02-06-2005 à 16:45:00
mais c'est fait...
Je les ai récupérer de la page d'avant...
En fait la page où cela bug est une page intermédiaire (car je veux envoyer un mail avec les données du formulaire)...
Sans cette page l'affichage de
"Merci <nom> d'avoir recommandé notre site.
Votre ami <sonnom> a bien reçu votre e-mail" marchait incroyablement bien...
Le problème c'est que pour envoyer un e-mail j'ai besoin de la page intermédiaire et que là tout plante....
Sinon je crois bien que mes variables sont définies !
Y'a pas autre chose qui pourrait être à l'origine du fait que ça m'affiche toutes ces erreurs ???
Merci.
Marsh Posté le 02-06-2005 à 16:49:34
Code :
|
t'as oublié les guillemets
Marsh Posté le 02-06-2005 à 16:53:09
au début tu utilises bien les variables de $_POST, mais après non, c'est de la que viennes tes erreurs
essaies avec ca :
<html>
<head>
<title>Vérification & Redirection de la Recommandation</title>
</head>
<body>
<?
$MailTo = $_POST['sonemail'];
$MailSubject = "Recommandation de ".$_POST['name']." pour ".$_POST['sonnom'];
$MailHeader = "From: ".$_POST['email'];
$Envoi = 1;
$name=$_POST['name'];
$email=$_POST['email'];
$sonemail=$_POST['sonemail'];
$sonnom=$_POST['sonnom'];
$messageperso=$_POST["messageperso"];
if ($_POST['name'] == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Vous devez remplir tous les champs !\n";
echo "// -->";
echo "</script>\n";
$Envoi = 0;
}
else {
$MailBody .= "Votre ami(e) : $name\n";
}
if ($email == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Vous devez remplir tous les champs !\n";
echo "// -->";
echo "</script>\n";
$Envoi = 0;
}
else {
$MailBody .= "(adresse email : $email)\n";
}
if ($sonemail == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Vous devez remplir tous les champs !\n";
echo "// -->";
echo "</script>\n";
$Envoi = 0;
}
else {
$MailBody .= "Vous envoi sur l'adresse : $sonemail une recommandation pour venir visiter notre site...\n";
}
if ($sonnom == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Vous devez remplir tous les champs !\n";
echo "// -->";
echo "</script>\n";
$Envoi = 0;
}
else {
$MailBody .= "Bonjour $sonnom !\n Venez nous voir sur 'http//www.copra-slanet.net' !!";
}
if ($messageperso == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Aucun message personnel ne sera transmis à votre ami(e) dans le mil de recommandation !\n";
echo "// -->";
echo "</script>\n";
$MailBody .= "\n";
}
else {
$MailBody .= "Voici le message perso de votre ami : $messageperso\n";
}
if ($Envoi == 1) {
mail($MailTo, $MailSubject, $MailBody, $MailHeader);
echo ("Patientez pendant l'envoi du mail svp... Vous allez être redirigé" );
header('Location: afterreco5.php');
}
?>
</body>
</html>
Marsh Posté le 02-06-2005 à 16:56:00
Code :
|
On n'envoie rien avant le header
Marsh Posté le 02-06-2005 à 16:58:28
c vrai.. du coup c'est utile d'avoir une petite fonction :
function Redirection($url){
// Effectue une redirection
if (headers_sent()){
echo "<script type=\"text/javascript\">\n";
echo"window.location.href = \"".$url."\"\n";
echo"</script>\n";
} else {
$ok=header("Location:$url" );
if (!$ok) {;
echo "<script type=\"text/javascript\">\n";
echo"window.location.href = \"".$url."\"\n";
echo"</script>\n";
}
}
}
et de taper ensuite :
Redirection("afterreco5.php" );
Marsh Posté le 02-06-2005 à 17:44:57
Sachant que cela n'est pas vraiment une solution, le javascript pouvant être désactivé.
Marsh Posté le 02-06-2005 à 17:51:10
La seul solution est de bien concevoir son site pour insérer les headers en premier.
No javascript
No meta refresh
Only header()
Marsh Posté le 02-06-2005 à 18:01:09
yoyo354 a écrit : La seul solution est de bien concevoir son site pour insérer les headers en premier. |
on peut aussi utiliser l'output buffer
Marsh Posté le 03-06-2005 à 09:05:39
masklinn a écrit : on peut aussi utiliser l'output buffer |
Oui mais l'output buffer c'est la solution des "petits joueurs" qui ont mal concu leur site et qui ne veulent pas le refaire en mieux
(Dit-il alors qu'il utilise des templates dont le resultat n'est affiche a la fin, ce qui en fin de compte revient un peu au meme que l'output buffer, mais chuuuut, faut pas le dire )
Marsh Posté le 03-06-2005 à 09:18:32
oulà tout ça ! ^^''
y'a pas faut vraiment que j'apprennes encore des taaaas de choses !
Merci pour toutes ses réponses.
J'essai tout ça et je réponds plus amplement après, j'espère que ça va marcher !
En tout cas vraiment merci de pas me laisser toute seule avec mes erreurs !
Marsh Posté le 03-06-2005 à 09:45:22
Bon alors en gros :
1°) la page qui appelle mon script :
Citation : <html> |
2°) Pourquoi je passe par du javascript ?
Bonne question : parce que je m'y connais pas trop bien en site web et que j'essai toutes les solutions proposées sur internet... J'ai vu qu'il était conseillé sur un des nombreux sites visités d'utiliser du javascript dans du php ou du php dans du javascript pour avoir des résultats "simple et dynamique" (on s'en souviendra !)...Donc ben j'ai essayé...
Mais j'ai essayé tellement de truc...je galère depuis deux semaines là dessus !
3°) J'ai essayé la solution de "el_gaucho", j'ai une nouvelle erreur :
Citation : |
4°) Yoyo354 : J'ai pas compris ton truc de rien envoyer avant header : ça veut dire ue je dois mettre le reste du code après ?? Mais à ce moment là, le mail partira jamais si ?
5°) Le coup de la fonction non plus j'ai rien compris... Elle sert à me rediriger ?
Mais dans ce cas...elle change quoi par rapport à un autre code ? Y'a moins d'erreurs ?
...He oui je suis un sacré bleu ! Désolée
6°) Output buffer ? Je suppose que ça se mange pas...mais je connais pas du tout... c'est quoi ?
Bon voilà...toute façon je continue,
si vous voulez bien m'aider jusqu'à ce que celà marche...
Merci beaucoup !
Marsh Posté le 03-06-2005 à 10:03:41
recherche ob_start(), ob_flush() et ob_end() dans la doc PHP
Marsh Posté le 03-06-2005 à 10:16:18
Citation : recherche ob_start(), ob_flush() et ob_end() dans la doc PHP |
Heu oui ?
C'est le php.ini c'est ça ?
J'en ai un dans easyphp\php et un dans easyphp\conf_files
Si c'est de ça que tu parles (j'y connais rien...) moi j'ai ça :
dans le dossier php :
Citation : ;Note : People who wrote portable scripts should not depend on this ini |
Pour "ob_start()" et rien pour les 2 autres; rien de plus,
et exactement la même chose dans le dossier conf_files....
Sinon, je ne vois pas de quelle doc PHP tu me parles ... Si tu peux me dire où elle est ??
Et surtout à quoi ça sert par rapport au reste de mon code et ce que je voudrais faire avec ??
Marsh Posté le 03-06-2005 à 10:25:03
Ryana a écrit : Bon alors en gros :
|
la l'erreur n'est plus forcement dans ton script, mais dans ta config de easy-php comme indiqué :
in c:\easyphp\easyphp1-8\www\doc\page.php on line 77
en fait tu n'as pas de serveur SMTP de préciser (genre "smtp.free.fr" "mail.wanadoo.fr" ) en fonction de ta configuration de connexion internet. Du coup il ne peut pas envoyer le mail correctement.
Je sais pas si tu me suis?
Ryana a écrit : |
en fait les headers sont les en-têtes envoyés en premier dans un echange web, les headers ne sont pas affichés par le navigateurs et permettent de donner des informations, par exemple " redirection sur :
location : ma redirection.php
ou
erreur 404
etc...
Dés que tu fais un echo"mon texte", celui ci est affiché à l'ecran et termine implicitement l'envoi des headers.
donc tu ne peux pas faire echo "mon texte" et ensuite Headers("Location : ma redirection.php" );
c'est pourquoi moi j'utilise le javscript, puisque le site pour lequel je travaille force d'emblée l'utilisation du javascript...
La solution par ob_flush() consiste à mettre implicitement en memoire ce que tu veux ecrire sur l'ecran (voila la definition de ob_start() :
"ob_start démarre la bufferisation de sortie. Tant qu'elle est enclenchée, aucune donnée, hormis les en-têtes, n'est envoyée au navigateur, mais temporairement mise en buffer."
En fait la fonction ne gère pas la desactivation potentielle du javascript (et pour cause), mais utilise soit les en-tete (headers) soit le javascript pour te rediriger vers la page que tu désires, sans utiliser la methode ob_flush().
Mais globalement, un fonction te permet de faire appel en de multiple endroit à un ensemble de code sans avoir a tout taper à chaque fois.
Ce qui veut dire que si tu testais 5 ou 6 fois quelque chose dans ton script et qu'a chaque fois tu rediriges vers une page si le test est faux, tu tapes justes : Redirection("ma redirection.php" );
Ryana a écrit : |
de rien
Marsh Posté le 03-06-2005 à 10:26:41
Ryana a écrit :
|
Non
php.ini c'est la configuration de php
moi je te parle de la documentation de php
sur http://www.php.net
Marsh Posté le 03-06-2005 à 10:28:52
Ryana a écrit :
|
rahhh la la....
quand on parle de la doc, c'est de la doc php...
l'officielle est sur :
http://www.php.net/
et la version francaise notamment sur :
http://www.php.net/manual/fr/
la liste des fonction php dispo est la :
http://www.php.net/manual/fr/index.functions.php
et notamment sur ob_start() :
http://www.php.net/manual/fr/function.ob-start.php
Marsh Posté le 03-06-2005 à 10:33:42
el_gaucho a écrit : rahhh la la.... |
Tu veux pas aussi lui coder sa page, lui offrir un mars, lui faire un massage et lui filer 100 balles non plus?
Marsh Posté le 03-06-2005 à 10:50:38
J'ai pas de serveur SMTP ?
Mais je fais comment alors quand je vais sur ma boite mail ça envoit...
(oui oui faut être patient avec moi... )
Citation : el_gaucho a écrit : |
A la limite ça je serais pas contre le mars et le massage, 100 balles c'est en plus mais pour la page, je veux bien de l'aide, mais je compte finir et faire le maximum seule ! Pas pour rien que j'ai galeré deux semaines avant de dire à l'aide !! non mais. lol.
Bon pour la doc PHP j'avais pas compris, je croyais que ct des sites commes les autres quant je suis passée dessus... j'ai pas pensé que ça pouvait etre un truc "officiel" va-t-on dire...Jme coucherais un peu moins bete ce soir ça me changera !!
Je vous remercie bcp, je vais essayer avec la doc et puis si jamais j'ai encore un problème je reviendrais crier au secours;...
Merki tout le monde
et surtout el_gaucho qui prend la peine de tenter de m'expliquer comme il faut !!
J'avouerais : J'ai pas tout suivi quand même
mais en relisant après avoir lu la doc PHP ça devrait aller je pense.
Arigato mina!!!!
Marsh Posté le 03-06-2005 à 10:55:08
Ryana a écrit : Je vous remercie bcp, je vais essayer avec la doc et puis si jamais j'ai encore un problème je reviendrais crier au secours;... |
Citation : Arigato !!!! |
do itashimashite
Marsh Posté le 03-06-2005 à 11:22:29
Ryana a écrit : J'ai pas de serveur SMTP ? |
ben regarde dans la configuration de ton compte de messagerie!
tu devrais la trouver ton adresse de serveur SMTP....
tu utilises quel programme de messagerie?
Marsh Posté le 03-06-2005 à 11:29:34
Citation : do itashimashite |
héhé
Citation : tu utilises quel programme de messagerie? |
outlook pour ma messagerie principale...
pour l'autre j'utilise le web directement.
Je vais chercher l'adresse de mon serveur, j'en ferais quoi quand je l'aurais trouvé ??
(ps: chais pas vous mais vivement le week end j'ai les neuronnes en ébullition !!! lol )
Marsh Posté le 03-06-2005 à 11:37:46
ben alors autre question...
outlook, ok, mais tu es chez quel FAI?
sinon, si tu trouves l'adresse de ton serveur SMTP....
il te faut modifier ta configuration de easyphp..
et là, je peux pas t'aider , je préfère installer directement un apache avec php, donc connais pas trop easyphp....)
Marsh Posté le 03-06-2005 à 13:16:17
Moi je dis que les gens qui font du PHP sans installer un petit linux, je comprend pas.
Marsh Posté le 03-06-2005 à 13:32:12
Hermes le Messager a écrit : Moi je dis que les gens qui font du PHP sans installer un petit linux, je comprend pas. |
avec reconstruction du rpm a partir du php.spec pour qu'il prennent en compte le mod CLI et non le mode CGI en ligne de commande sous une feroda core 3???
Marsh Posté le 03-06-2005 à 16:00:53
Destampy a écrit :
|
+1
Marsh Posté le 04-06-2005 à 17:36:02
MERCI A TOUT LE MONDE CA MARCHEEEEEEEEEEEEEEEE !!!!!!!!!
Bon j'ai utilisé la fonction de "el_gaucho".
Pour le serveur SMTP j'ai demandé à quelqu'un qui m'a tout bien expliqué ^^
A bientot peut - être !
Encore merci pour tout ! ^^
Marsh Posté le 02-06-2005 à 16:30:37
Bonjour, voilà j'ai un problème...
J'ai lu des tas de sujets auxquels j'ai rien compris
fais des tas de recherches qui n'ont pas abouties à grand chose
et piqué une sacrée crise de nerf, alors je vais crier mon désespoir ici
en espérant obtenir de l'aide ! (plizzzz)
Voilà mon script (C'est bien long , je mets toute la page):
<html>
<head>
<title>Vérification & Redirection de la Recommandation</title>
</head>
<body>
<?
$MailTo = $_POST['sonemail'];
$MailSubject = "Recommandation de ".$_POST[name]." pour ".$_POST[sonnom];
$MailHeader = "From: ".$_POST['email'];
$Envoi = 1;
if ($name == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Vous devez remplir tous les champs !\n";
echo "// -->";
echo "</script>\n";
$Envoi = 0;
}
else {
$MailBody .= "Votre ami(e) : $name\n";
}
if ($email == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Vous devez remplir tous les champs !\n";
echo "// -->";
echo "</script>\n";
$Envoi = 0;
}
else {
$MailBody .= "(adresse email : $email)\n";
}
if ($sonemail == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Vous devez remplir tous les champs !\n";
echo "// -->";
echo "</script>\n";
$Envoi = 0;
}
else {
$MailBody .= "Vous envoi sur l'adresse : $sonemail une recommandation pour venir visiter notre site...\n";
}
if ($sonnom == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Vous devez remplir tous les champs !\n";
echo "// -->";
echo "</script>\n";
$Envoi = 0;
}
else {
$MailBody .= "Bonjour $sonnom !\n Venez nous voir sur 'http//www.copra-slanet.net' !!";
}
if ($messageperso == "" ){
echo "<script language='Javascript'>";
echo "<!--\n";
echo "Aucun message personnel ne sera transmis à votre ami(e) dans le mil de recommandation !\n";
echo "// -->";
echo "</script>\n";
$MailBody .= "\n";
}
else {
$MailBody .= "Voici le message perso de votre ami : $messageperso\n";
}
if ($Envoi == 1) {
mail($MailTo, $MailSubject, $MailBody, $MailHeader);
echo ("Patientez pendant l'envoi du mail svp... Vous allez être redirigé" );
header('Location: afterreco5.php');
}
?>
</body>
</html>
j'ai trouvé la plus grande partie de mon script sur un site puis je l'ai largement modifié à ma convenance.
Dans tous les cas il m'affiche la même chose...
Je comprends pas l'erreur, mais je comprends relativement le code, ce n'est pas du bête copier-coller !!
Voilà le joli petit tas de notices ...toutes concernant mes variables :
Notice: Use of undefined constant name - assumed 'name' in c:\easyphp\easyphp1-8\www\doc\news3c.php on line 9
Notice: Use of undefined constant sonnom - assumed 'sonnom' in c:\easyphp\easyphp1-8\www\doc\news3c.php on line 9
Notice: Undefined variable: name in c:\easyphp\easyphp1-8\www\doc\news3c.php on line 20
Notice: Undefined variable: email in c:\easyphp\easyphp1-8\www\doc\news3c.php on line 32
Notice: Undefined variable: sonemail in c:\easyphp\easyphp1-8\www\doc\news3c.php on line 44
Notice: Undefined variable: sonnom in c:\easyphp\easyphp1-8\www\doc\news3c.php on line 56
Notice: Undefined variable: messageperso in c:\easyphp\easyphp1-8\www\doc\news3c.php on line 68
Notice: Undefined variable: MailBody in c:\easyphp\easyphp1-8\www\doc\news3c.php on line 75
Je ne cherche pas à les masquer mais à les corriger...
quelqu'un peut me dire d'où vient le problème ??
D'avance merci pour votre aide précieuse...