8791 sujets

Développement web côté serveur, CMS

Pages :
bonjour,
j'ai un gros probleme !!!!
j'ai un formulaire qui envoie un mail a l'internaute et un autre au webmaster
le site est hebergé chez ovh - le formulaire marche tres bien sous firefox MAIS pas du tout sur IE
sous ie l'admin recoit un mail mais avec les variables vides et l'internaute ne recoit rien
je suis perdue et ne trouve pas mon erreur
please help me ca fait 3 jours que je suis dessus et je suis desespere
j'ai un hebergement chez free et tout marche tres bien mais pas sur ovh
voici le code mon fichier envoi.php qui utilise la fonction mail


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">

<head>
<title>Association</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="description" content="" />
<link href="../styles.css" rel="stylesheet" type="text/css"/>
</head>
<?php
/*---------------------------------------PARAMETRAGE FONCTION MAIL----------------------------------*/

// on parametre pour envoyer à admin les données saisies par l'internaute
$to = 'admin@wanadoo.fr';
$objet = 'demande de renseignement';
$message = 'Demande de renseignement emanant du site web ... '."\n\n".'
Coordonnées de l\'interessé :'."\n\n".'
- Sa civilite : '.$_SESSION['civilite'].' '."\n\n".'
- Son nom : '.$_SESSION['nom'].' '."\n\n".'
- Son prenom : '.$_SESSION['prenom'].' '."\n\n".'
- Son E-mail : '.$_SESSION['email'].' '."\n\n".'
- Message : '."\n".' '.$_SESSION['commentaire'].' '."\n\n".'';

mail($to,$objet,$message,"FROM: $email"); // avec la fonction protomail on envoie le mail à l'admin


// on parametre pour envoyer à l'internaute la reponse de l'admin
$to_rep = $_SESSION['email'];
$objet_rep = 'demande de renseignement';
$message_rep ='Bonjour '."\n\n".''.$_SESSION['civilite'].' '.$_SESSION['nom'].' ,'."\n\n".'
Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus rapidement possible.'."\n\n".'
- Votre E-mail : '.$_SESSION['email'].''."\n\n".'
- Votre message : \n '.$_SESSION['commentaire'].''."\n\n".'
Merci et à bientôt sur  http://..........  !';

// on envoie les 2 messages avec la fonction protomail

mail($to_rep,$objet_rep,$message_rep,"From: admin@wanadoo.fr"); // toujours avec la fonction protomail on envoie un mail de réponse à l'internaute*/

/*-------------------------------------FIN PARAMETRAGE FONCTION MAIL----------------------------------*/

session_destroy();
?>
<body>
<div id="conteneur">
<div id="gauche_logo"> </div>
<div id="menu">
<ul>
<li><a href="../index.html" accesskey="1" title="">Accueil</a></li>
<li><a href="../activites.html" accesskey="2" title="">Nos activites</a></li>
<li><a href="../en_cours.html" accesskey="3" title="">Nos engagements, Notre
charte</a></li>
<li><a href="../en_cours.html" accesskey="5" title="">Bibliographie</a></li>
<li><a href="../contacts.html" accesskey="5" title="">L'équipe</a></li>
</ul>
</div>
<div id="gauche">
<ul>
<li><a href="../en_cours.html" accesskey="3" title="">Nos projets, Notre
actualite</a></li>
<li><a href="../liens.html" accesskey="5" title="">Nos liens, nos partenaires</a></li>
<li><a href="../adhesions.html" accesskey="5" title="">Adhésions</a></li>
<li><a href="index.php" accesskey="5" title="">Nous Contacter</a></li>
</ul>
</div>
<div id="centre">
<h2>DEMANDE DE RENSEIGNEMENT</h2>
<p>- Vous allez recevoir un mail confirmant que votre demande de renseignement
a bien été prise en compte -</p>
<br />
<p>Dans le cas contraire, cela signifie que vous avez renseign&eacute; une
mauvaise adresse de messagerie. </p>
<br />
<p>Merci de recommencer votre demande de renseignement</p>
<br>
<br>
<font> <strong>[ <a href="../index.html">Retour &agrave; l'accueil</a> ]</strong></font></span></font> </font> </p> </center>
</div>
<div id="pied" align="center">

</div>
</div>
</body>
</html>
Salut, salut !
sand a écrit :

le formulaire marche tres bien sous firefox MAIS pas du tout sur IE
sous ie l'admin recoit un mail mais avec les variables vides et l'internaute ne recoit rien

Cela veut dire que pour une raison ou pour une autre, les variables de session ne sont pas récupérées... ce qui semble assez logique si ton code ne commence pas par :
<?php
session_start();
?>
<!DOCTYPE...

D'ailleurs je ne comprends pas pourquoi ça fonctionne avec FF !

A+ Smiley smile
bonjour
j'ai une page index.php avec un session start()
si je teste mon formu sur free ca marche
mais sur ovh bug !!!! ca marche pas avec ie
sand a écrit :

j'ai une page index.php avec un session start()

Le session_start doit être au début de toutes les pages qui utilisent les sessions Smiley cligne !

Edit: pour plus d'infos voir cette page et cette autre.
Modifié par Heyoan (29 Mar 2008 - 22:32)
j'ai bien un session start() sur toutes mes pages

j'ai fait un test pour afficher mes variables de sessions avant l'envoi
ca marche sous ff
et sous ie ma page affiche_variable est vide
????????????
bingo !!
mais alors j'ai 2 questions :
1/ comment faire pour activer les cookies automatiquements car
par defaut ie desactive les cookies donc pour l'utilisateur lamba ca ne marchera pas
2/ pourquoi ca marche sur free
sand a écrit :


1/ comment faire pour activer les cookies automatiquements car
par defaut ie desactive les cookies donc pour l'utilisateur lamba ca ne marchera pas
Ben c'est à chaque visiteur de décider s'il accepte ou non les cookies Smiley murf ! Et il me semble au contraire que par défaut les cookies sont activés...

sand a écrit :


2/ pourquoi ca marche sur free
Parce que le paramétrage de php ne doit pas être le même sur OVH et sur free : on peut dire que si les cookies sont désactivés il faut passer l'identifiant de session par l'url (voir à ce sujet le 2ème lien que je t'ai donné plus haut et ce post).

Et sinon sur OVH (en tout cas en 90 plan) on peut modifier ce paramétrage avec la fonction SetEnv dans un fichier .htaccess à la racine du site. Par exemple :
SetEnv SESSION_USE_TRANS_SID 1


Edit: ah oui j'oubliais... pour des raisons de sécurité, il vaut mieux laisser/passer ce paramètre à OFF car mettre l'identifiant dans l'URL facilite grandement le jeu préféré des hackers fous Smiley lol (ce qui ne semble pas nécessaire dans ton cas)
Modifié par Heyoan (29 Mar 2008 - 23:44)
merci beaucoup de ton aide
mais puis je profiter encore de tes connaissances
je n'ai pas tout suivi concernant les cookies
et la maniere pour faire en sorte qu'ils soient activer malgré la configuration d'ie

car apparement je peux faire un set cookies mais il doit etre place avant tout code
comme session start
mais dans mon cas j'ai un sessions start ET un set cookies
comment faire
d'avance merci
Modifié par sand (30 Mar 2008 - 00:14)
sand a écrit :


je n'ai pas tout suivi concernant les cookies et la maniere pour faire en sorte qu'ils soient activer malgré la configuration d'ie

C'est vrai que ce n'est pas évident Smiley murf ...

Pour résumer :

1) c'est impossible de forcer l'activation des cookies puisque c'est lié au paramétrage du navigateur (que ce soit IE / FF / Opera / etc...). A priori par défaut c'est activé mais si le visiteur de ton site a décidé de les désactiver il n'y a rien à faire pour les réactiver à sa place (et c'est heureux !)

2) les sessions PHP utilisent un identifiant transmis de page en page à partir duquel on peut récupérer les variables $_SESSION. Par défaut cet identifiant est écrit dans un cookie (nommé PHPSESSID).

3) Si les cookies sont désactivés la fonction session_start ne pourra pas fonctionner en écrivant un cookie mais on peut paramétrer PHP (voir les liens ci-dessus) pour que l'identifiant soit automatiquement rajouté dans l'URL de tous les liens (sous la forme ...PHPSESSID=1234567890123456)

4) on peut également gérer soi-même le passage dans l'URL en rajoutant dans les liens : echo 'monlien.php?'.session_name().'='.session_id();

5) une particularité de certaines fonctions (setcookie, header, session_start...) est qu'elles doivent être utilisées avant toute écriture de code html (ou d'un echo) mais c'est valable que les cookies soient désactivés ou non.
j'ai rajouter ca et du coup tout remarche meme si ie n'est pas configurer
<?php ini_set('session.use_only_cookies', "1");?>

merci beaucoup pour votre aide
sand a écrit :


j'ai rajouter ca et du coup tout remarche meme si ie n'est pas configurer
<?php ini_set('session.use_only_cookies', "1");?>

En fait je suppose que cela fonctionnait déjà avant car ce paramètre signifie justement que si les cookies sont désactivés il ne faut pas passer l'identifiant par l'URL (ceci pour des raisons de sécurité).

Pour faire un test avec les cookies désactivés, tu pourrais essayer :

<?php 
ini_set('session.use_only_cookies', '0');
ini_set('session.use_trans_sid', '1');
?>


Et sinon, une question subsidiaire : pourquoi utilises-tu les sessions plutôt que de récupérer simplement les variables POST de ton formulaire ? Smiley cligne
Modifié par Heyoan (30 Mar 2008 - 21:31)
bonjour

ben parce que j'ai pris l'habitude d'utiliser les $_SESSIONS pour faire mes formulaires
ca evite de faire une boucle si $_post existe alors sur chaque page
mais quel est la meilleure solution pour faire des formulaires???

erratum
le pb est le meme si ie est mal configurer
comment fais je????????
j'en peux plus de ce php!!!!!!!!!!!! Smiley bawling Smiley decu
Modifié par sand (03 Apr 2008 - 21:53)
sand a écrit :


ben parce que j'ai pris l'habitude d'utiliser les $_SESSIONS pour faire mes formulaires
ca evite de faire une boucle si $_post existe alors sur chaque page
mais quel est la meilleure solution pour faire des formulaires???
Quelles que soient les variables ($_SESSION, $_POST, $_GET, etc...) il faut toujours vérifier leur existence avant de les utiliser Smiley murf !

Les $_SESSION ne sont utiles que si tu as besoin de sauvegarder tes variables de page en page (typiquement après s'être connecté avec un login / mot de passe) mais sinon autant les éviter car comme tu le vois cela complique un peu le traitement.

C'est beaucoup plus simple avec les $_POST ou $_GET qui ne serviront qu'une fois (après la soumission du formulaire). Un petit exemple dans ce post.

A+ Smiley smile


PS : le PHP, comme le (x)HTML, le CSS, etc... demande du temps avant de bien intégrer son fonctionnement (et d'ailleurs on continue d'apprendre même des années après avoir commencé -en tout cas c'est mon cas Smiley lol -)... alors la patience est de mise Smiley langue !
Modifié par Heyoan (03 Apr 2008 - 22:14)
bon alors effectivement pourquoi se compliquer la vie quand on peut faire simple
j'ai refais mon formulaire avec $_POST et le tout sur une seule page et du coup
ben ca marche beaucoup mieux
Smiley langue Smiley langue

Merci de ton aide
Modifié par sand (04 Apr 2008 - 19:51)
bonjour,

j'ai le meme probleme avec mon espace membre
je suis allee sur le site de ovh et comme preconisé j'ai cree un fichier .htaccess
ou j'ai mis :
SetEnv session_use_only_cookies 0
SetEnv session_use_trans_sid 1

mais ca ne change rien
mon architecture fichier est la suivante :
www/espace_membres/mes fichiers dont le .htaccess

qqun a t il une idée?????

d'avance merci
Re',
sand a écrit :

je suis allee sur le site de ovh et comme preconisé j'ai cree un fichier .htaccess
ou j'ai mis :
SetEnv session_use_only_cookies 0
SetEnv session_use_trans_sid 1

D'après la doc d'OVH sur le SetEnv seules quelques variables sont modifiables... De toutes façons le session_use_only_cookies doit déjà être à Off (pour le vérifier il suffit d'uploader un fichier avec l'extension .php qui contient <?php phpinfo(); ?> et d'appeler l'URL. La partie session te donnera tous les paramètres - à noter qu'il faudra ensuite supprimer cette page de ton serveur Smiley cligne -).

Je crois aussi que les majuscules sont importantes donc plutôt
SetEnv SESSION_USE_TRANS_SID 1

Pour finir, je précise que personnellement pour les espaces membres je l'ai paramétré à 0 (pour des raisons de sécurité) et que si les cookies sont désactivés je mets juste un message indiquant que pour se connecter il faut les activer. Pour faire ça je fais un setcookie("test_cookie","1"); sur ma page login.php et je vérifie ensuite qu'il existe bien dans ma page verif_login.php
<?php
// Test gestion des cookies
if ( !isset($_COOKIE["test_cookie"]) )
{
header("Location: login.php?erreur_cookie=O");
exit(); 
}
...

A+
bonjour,

en fait sous ie le site est directement mis dans 'les sites bloques'?????
comment faire pour y remedier
j'ai creer un util test mdp 123456 pour vous permettre de tester l'espace membres
je vous donne l'adresse du site :

http://www.psychos-santepublique.org/

j'ai fait un test et si je passe par l'adresse suivante :
http://start5g.ovh.net/~psychoss surprise ca marche ??????????

je suis perdue !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Smiley bawling
alors c'est a y perdre son latin
aujourd'hui j'ai les erreurs suivantes :

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home.41/p/s/y/psychoss/www/espmembres/index.php:1) in /home.41/p/s/y/psychoss/www/espmembres/index.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home.41/p/s/y/psychoss/www/espmembres/index.php:1) in /home.41/p/s/y/psychoss/www/espmembres/index.php on line 1

alors qu'hier non !!!!!

pourtant mon index.php comment par session_start() et rien d'autre
je suis perdue
Pages :