Rechercher : dans
Par :

PHP problème session start ()

Dernière réponse le 17 mar 2009 à 09:41:05 zatox, le 17 mar 2009 à 00:09:22 
 Signaler ce message aux modérateurs

Bonjour, sur toutes les pages de mon site je commence par un session start comme ceci:
<?php
session_start();
?>
Sur index.php l'utilisateur a le choix de plusieurs thèmes. J'ai écris plusieurs fichiers css et en fonction du choix de l'utilisateur on utilise tel ou tel theme.
<style type="text/css">
<?php
include "css/" . $choix_theme . ".css";
?>

Une fois que l'utilisateur a choisi son thème il peut aller sur n'importe quelle page, il utilise sur toutes les pages le thème choisi au départ. Quand il revient sur la page de départ (index.php) il utilise le thème choisi précédemment et peut s'il le désire changer de thème. Tout ceci marche très bien en local, je récupère le choix du thèeme par $_SESSION['choix_theme'] sur n'importe quelle page. Par contre sur mon hébergeur (free espace perso) tout marche bien également sauf quand je reviens sur index.php là j'ai perdu le thème choisi au départ, il réagit comme si $_SESSION['choix_theme'] n'exixtait plus et comme par défault je positionne le choix numéro 1 lorsque je retourne de n'importe quelle page à index.php, ça ne marche pas $_SESSION['choix_theme'] n'est plus présent et j'utilise le theme par défault. Quelqu'un aurait-il une idée ? le start session étant décleché sur chaque page, je devrais pouvoir récupérer toutes les variables $_SESSION et en l'occurence $_SESSION['choix_theme'], comment expliquer que ça marche en local sur mon disque et pas chez mon hébergeur ? uniquement le passage d'une page quelconque vers index.php ne fonctionne pas. Merci pour vos réponses.

Configuration: Windows XP
Firefox 3.0.7

Meilleures réponses pour « PHP problème session start () » dans :
[PHP] Headers already sent by..... VoirLorsque vous utilisez une fonction PHP qui manipule les en-têtes HTTP comme par exemple: header() setcookie() session_start() Il est important d'utiliser ces fonctions avant d'avoir généré le moindre flux vers le client. A partir du moment où...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...

1

IpIpIpIpOne, le 17 mar 2009 à 00:14:38

Ami Terrien, tente peut-être de mettre " session_name('nom_de_ton_site'); " avant tes " session_start(); " ?

C'est juste une suggestion, ça ne changera ptet rien !

Répondre à IpIpIpIpOne

2

 zatox, le 17 mar 2009 à 09:41:05

Bonjour et merci pour ta réponse, j'ai essayé de mettre session_name comme tu me le dis mais ça ne change rien. Par contre j'ai un autre élément à savoir que j'ai transféré mon site chez un autre hébergeur (en l'occurrence sur les pages perso de mon FAI qui est neuf) et là ça marche !!!!! j'en conclu donc qu'il s'agit d'un problème au niveau de l'hébergeur, chez free quand je reviens sur ma page index.php je pense que je dois me retrouver dans une nouvelle session et je repars avec le thème par défault. Par contre j'aurai bien aimé résoudre ce problème quel que soit l'hébergeur car pour le moment mon site se trouve chez des hébergeur gratuits afin de le tester mais si on doit coder du php en fonction de l'hébergeur chez qui on met le site, ça devient un peu compliqué. Qu'en pensez-vous ?
De plus, hier soir après avoir monté mon site sur les pages perso de neuf, je me suis aperçu d'un autre problème concernant l'accès aux bases de données. En effet, dans mon php voici ce que j'avais codé:

if ($_SERVER["SERVER_NAME"] == "localhost")
{
mysql_connect("localhost", "root", "");
}
else
{
mysql_connect("localhost", "nom_de_ma_base_sur_free", "mot_de_passe");
}
mysql_select_db("nom_de_ma_base_sur_free");

Comme à priori sur neuf je ne peux pas donner le nom de ma base, j'ai un nom imposé donc là aussi ça plante, et je dois faire un codage particulier pour chaque hébergeur. Quand je vais monter mon site chez un hébergeur (disons définitif), je vais encore peut-être devoir recoder si toutefois le nom de la base est imposé. Qu'en pensez-vous ? y-a-t-il un moyen plus souple ? peut-on coder avec une variable dans
mysql_connect("localhost", variable_contenant_nom_de_la_base , "mot_de_passe"); et dans ce cas il faut récupérer le sever_name afin de mettre ce qu'il faut dans cette variable suivant qu'on est sur free sur neuf ou autre !!!!
Merci pour vosréponses.

Répondre à zatox