IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sessions qui ne fonctionnent pas [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Points : 77
    Points
    77
    Par défaut Sessions qui ne fonctionnent pas
    Bonjour à tous,

    J'ai un serveur Windows que je viens de mettre à jour de Apache 2/PHP 4.4/MySQL 5.0 à Apache 2.2/PHP 5.2.17/MySQL 5.1.

    J'utilise une configuration dans le php.ini standard et tout semble fonctionner correctement. Le seul truc c'est que sur mon site j'ai un problème particulier : Les sessions disparaissent !!

    J'ai fait une page simple de test comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <? 
    session_start();
     
    $_SESSION["test"] = $_SESSION["test"] . "-";
    echo $_SESSION["test"];
    ?>
    Normalement, ma sortie devrait être une série de tiret de plus en plus longue à chaque chargement de la page (sans fermer le navigateur).
    Or là, je me retrouve à chaque fois avec un seul et unique -
    J'ai aussi essayé de faire une incrémentation... genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <? 
    session_start();
     
    if ( !isset($_SESSION["number"]) ) {
      $_SESSION["number"] = 0;
    }
    $_SESSION["number"] = int_val($_SESSION["number"]) + 1;
    echo $_SESSION["number"];
    ?>
    Idem... j'ai toujours un désespérant 1

    (Info : J'ai testé ces codes sur un autre serveur avec succès )

    En cherchant un peu, beaucoup, désespérément... j'ai rien trouvé
    Merci à ceux qui auraient une idée/piste à me soumettre

    Configuration partiel du php.ini (Commentaires en moins...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    [PHP]
    engine = On
    short_open_tag = On
    asp_tags = Off
    precision = 14
    y2k_compliance = On
    output_buffering = 4096
    zlib.output_compression = Off
    implicit_flush = Off
    unserialize_callback_func =
    serialize_precision = 17
    allow_call_time_pass_reference = Off
    safe_mode = Off
    safe_mode_gid = Off
    safe_mode_include_dir =
    safe_mode_exec_dir =
    safe_mode_allowed_env_vars = PHP_
    safe_mode_protected_env_vars = LD_LIBRARY_PATH
    disable_functions =
    disable_classes =
    expose_php = On
    max_execution_time = 30
    max_input_time = 60
    memory_limit = 128M
    error_reporting = E_ALL & ~E_NOTICE
    display_errors = On
    display_startup_errors = Off
    log_errors = On
    log_errors_max_len = 1024
    ignore_repeated_errors = Off
    ignore_repeated_source = Off
    report_memleaks = On
    track_errors = Off
    html_errors = Off
    variables_order = "GPCS"
    request_order = "GP"
    register_globals = Off
    register_long_arrays = Off
    register_argc_argv = Off
    auto_globals_jit = On
    post_max_size = 8M
    magic_quotes_gpc = Off
    magic_quotes_runtime = Off
    magic_quotes_sybase = Off
    auto_prepend_file =
    auto_append_file =
    default_mimetype = "text/html"
    doc_root =
    user_dir =
    extension_dir = "D:/Apache_PHP/PHP5.2/ext"
    enable_dl = On
    file_uploads = On
    upload_max_filesize = 32M
    max_file_uploads = 20
    allow_url_fopen = On
    allow_url_include = Off
    default_socket_timeout = 60
    extension=php_gd2.dll
    extension=php_gettext.dll
    extension=php_mysql.dll
    extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
    extension=php_pdo_mysql.dll
    extension=php_zip.dll
     
    [Session]
    session.save_handler = files
    session.save_path = "D:/Apache_PHP/PHP5.2/sessions"
    session.use_cookies = 1
    session.use_only_cookies = 1
    session.name = PHPSESSID
    session.auto_start = 0
    session.cookie_lifetime = 0
    session.cookie_path = /
    session.cookie_domain =
    session.cookie_httponly =
    session.serialize_handler = php
    session.gc_probability = 1
    session.gc_divisor = 1000
    session.gc_maxlifetime = 1440
    session.bug_compat_42 = Off
    session.bug_compat_warn = Off
    session.referer_check =
    session.entropy_length = 0
    session.cache_limiter = nocache
    session.cache_expire = 180
    session.use_trans_sid = 0
    session.hash_function = 0
    session.hash_bits_per_character = 5

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    avec firebug ou consort est ce que tu vois passer les entete set-cookie qui servent à apprendre à ton navigateur quelle est la valeur du coockie...

    ensuite il est possible de voir le fichier log ?

    Code ini : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    error_reporting = E_ALL & ~E_NOTICE ; grave erreur à mon avis.;   Development Value: E_ALL | E_STRICT recommandation php 5.3
    display_errors = On
    display_startup_errors = Off ; tu devrais essayer aussi.
    log_errors = On 
    session.save_path = "D:/Apache_PHP/PHP5.2/sessions" ; un petit dir sur ce repertoire donne quoi?
    ; je vois pas ceci ... à la sauce windows
    ; error_log = /var/log/php/errors.log

    php déteste qu'on emette des caractères "invisibles" (au mieux des retours à la ligne, des espaces ... ) avant un session_start. regarder tes erreurs avec les avertissements au max t'apprendra bcp de choses.

    au fait, je veux pas être méchant metre a jour une version obsolete par une autre version obsolette de php... quitte a changer de langage... (php 4 != php 5.x )

    astuce: ceci est inutile dans bien des cas ...
    et ceci est déprécié
    en faveur de
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Points : 77
    Points
    77
    Par défaut
    Salut et merci pour ton message,

    Citation Envoyé par gene69 Voir le message
    avec firebug ou consort est ce que tu vois passer les entete set-cookie qui servent à apprendre à ton navigateur quelle est la valeur du coockie...
    Alors dans Firebug, j'ai le plugin pour les Cookies et j'ai bien un cookie avec ceci :
    PHPSESSID=fr3i7tl6jf278f0c9dsnlt55d3; path=/; domain=www.mondomaine.fr
    Je navigue sur le site et le cookie reste bien avec la même valeur alors même que les variables de session ne sont pas conservées/transmises lors de la navigation.
    J'ai vérifié sur le serveur (dans le répertoire de stockage des cookies) et le fichier de session existe bien (sess_fr3i7tl6jf278f0c9dsnlt55d3).

    Citation Envoyé par gene69 Voir le message
    ensuite il est possible de voir le fichier log ?
    Le fichier de log ne se remplit pas... j'ai essayé de modifié error_log mais si je mets une valeur pour ce paramètres, le serveur ne démarre plus

    J'ai modifié les paramètres du php.ini pour avoir les retours d'erreurs (E_ALL | E_STRICT) mais aucune erreur ne remonte depuis la page de test sans que cela ne fonctionne pour autant.

    Citation Envoyé par gene69 Voir le message
    au fait, je veux pas être méchant metre a jour une version obsolete par une autre version obsolette de php... quitte a changer de langage... (php 4 != php 5.x )
    Je suis d'accord avec toi mais PHP 5.3 ne fonctionne pas avec Apache sur Windows. Il faut installer Apache Lounge pour que cela fonctionne et je n'ai pas la volonté de le faire tout de suite et je ne suis pas sur que cela résolve mon soucis...

    Sinon concernant les balises d'ouvertures/fermetures de code PHP (<?, <?php, ?>) on chipote un peu mais tu as tout a fait raison... comme j'ai tapé ce code manuellement lors de la rédaction de mon post, je n'avais pas Eclipse pour automatiquement ajouté le php à la suite du <?. Les mauvaises habitudes ont un bel avenir avec de tels outils

    Si vous avez d'autres piste... je suis preneur...

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    bonjour

    on m'a donc menti... http://www.apachefriends.org/en/xampp-windows.html

    si tu developpes avec eclipse, j'imagine que tu n'as pas de caractères "affiché" avant session_start()

    tu as fait des tests de fonctionnement de $_SESSION avec uniquement ton code dans un fichier test complètement décorélé de tout le reste?
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Si tu détruits le cookie sur le serveur, ton fichier de log devrait obligatoirement s’incrémenter d'une Notice sur le thème $_SESSION['blablabla'] non initialisée... et la notice y sera quelque soit la version de php.

    tant qu'on n'a pas ça, tu peux avoir un objet serialisé dans $_SESSION qui hérite de ArrayObject ou qui implemente ArrayAccess avec une surcharge de __toString().

    là je passe en mode complot
    fait des var_dump($_SESSION); au lieu de echo $_SESSION["test"];
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    au fait j'ai une explication pour ta session ne fonctionnant pas pour ton incrémentation. Suit les conseils prodigués lors du 1ere commentaire, active les log à fond et tu verras.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Points : 77
    Points
    77
    Par défaut
    Salut,

    J'ai été interpellé par cette remarque :
    Citation Envoyé par gene69 Voir le message
    tu as fait des tests de fonctionnement de $_SESSION avec uniquement ton code dans un fichier test complètement décorélé de tout le reste?
    Si je vire le reste du site (Agora-Project) et que je garde uniquement test.php, les sessions fonctionnent alors correctement !
    Si je remet le site en place, les sessions sont immédiatement perdues

    Je vais donc tout virer et remettre les dossiers/fichiers 1 à 1 afin de trouver qui pose problème.

    Je n'arrive pas à faire fonctionner les logs !? Ca empeche Apache de démarrer... Je commence à me demander si je ne devrai pas ré-installer le serveur "from scratch".

    Merci à toi

    PS : Concernant Xampp, j'avoue ne pas avoir d'explication... J'ai lu un peu partout qu'Apache pour Windows n'était compatible qu'avec PHP VC6 et non VC9... Comme je n'arrivais pas à configurer PHP 5.3 VC9 sur Apache 2.2, je me suis reporté sur PHP¨5.2 et là miracle ça a fonctionné du premier coup.

  8. #8
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    c'est des allemands qui font ça ... ça se trouvent ils recompilent chez eux.

    un fichier independant, sans ref à un autre ou au bootstrap devrait fonctionner tout seul meme si le reste du code est présent

    sauf si ya des includes "magiques"...

    pour voir la magie à l'oeuvre
    http://us2.php.net/manual/en/functio...nned-files.php
    http://us2.php.net/manual/en/function.ini-get-all.php
    http://us2.php.net/manual/en/functio...uded-files.php
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  9. #9
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    mais t'a raison la priorité numéro 1 c'est d'avoir des logs qui fonctionnent pour voir la belle fonction inconnue "int_val()"
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Points : 77
    Points
    77
    Par défaut
    Re,

    Bon, j'ai avancé sur l'origine de mon problème... voici ce qui se passe : Lorsque je charge une page sur mon site, le fichier index.php (à la racine du site) est automatiquement appelée et c'est ce fichier qui réinitialise la session !

    Les fonction que tu cites me renvoient :
    - get_icluded_files() : D:\Site_Web\wwwroot\agora\test.php (Mon fichier de test)
    - php_ini_scanned_files() : Rien (Chaine vide)
    - ini_get_all() : Ma configuration php.ini

    J'avance... merci encore à toi pour ton aide

    PS : Oui, c'est pas int_val() mais intval()

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Points : 77
    Points
    77
    Par défaut
    Bon... Ok... Honte sur moi

    Le soucis provient de la configuration vhost d'Apache... il faisait de la réécriture d'URL dynamique.

    J'ai trop trop honte de vous avoir fait perdre du temps sur une annerie pareil

    Merci beaucoup pour votre aide qui m'a permis d'avancer car j'étais à 10000Km de la solution !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Variable SESSION qui ne fonctionne pas sous IE et FF
    Par tardmonkey dans le forum Langage
    Réponses: 7
    Dernier message: 13/06/2013, 10h07
  2. Variable session qui ne fonctionne pas
    Par sheira dans le forum Langage
    Réponses: 2
    Dernier message: 21/01/2009, 19h04
  3. [MySQL] Session php qui ne fonctionne pas
    Par tiph02 dans le forum PHP & Base de données
    Réponses: 42
    Dernier message: 04/06/2008, 11h49
  4. Réponses: 5
    Dernier message: 08/08/2007, 12h35
  5. [Sécurité] Session qui ne fonctionne pas!!!!
    Par philippef dans le forum Langage
    Réponses: 5
    Dernier message: 27/10/2005, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo