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 :

Erreur Warning session_start() [PHP 4]


Sujet :

Langage PHP

  1. #1
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 025
    Points : 244
    Points
    244
    Par défaut Erreur Warning session_start()
    Bonjour à tous,

    Comme il fallait que je protège l'accès de mon site, étant chez Free, avec htaccess et .htpasswd il y a eu trop de prb, donc, je me suis rabattu sur du php.

    J'ai essayé en local et tout était parfait, donc, j'ai transféré !
    Et c'est là le hic !
    En effet, lorsque j'appelle le site, j'ai bien la demande du login et du pwd, mais quand je valide voilà ce que j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Warning: session_start() [function.session-start]: open(/mnt/102/sda/0/2/sabrimi/sessions/sess_c0d9c45888d719dc639a23358d642b10, O_RDWR) failed: No such file or directory (2) in /mnt/102/sda/0/2/sabrimi/templates/auth.php on line 30
     
    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/102/sda/0/2/sabrimi/templates/auth.php:30) in /mnt/102/sda/0/2/sabrimi/templates/auth.php on line 30
     
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/102/sda/0/2/sabrimi/templates/auth.php:30) in /mnt/102/sda/0/2/sabrimi/templates/auth.php on line 30
     
    Warning: Cannot modify header information - headers already sent by (output started at /mnt/102/sda/0/2/sabrimi/templates/auth.php:30) in /mnt/102/sda/0/2/sabrimi/templates/auth.php on line 36
     
    Warning: Unknown(): open(/mnt/102/sda/0/2/sabrimi/sessions/sess_c0d9c45888d719dc639a23358d642b10, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
     
    Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/102/sda/0/2/sabrimi/sessions) in Unknown on line 0
    A tout hasard voici le code :
    index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <table>
    <tr>
    <td>Login :</td><td><input name="login" /></td>
    </tr>
    <tr>
    <td>Mot de passe :</td><td><input type="password" name="passwd" /></td>
    </tr>
     
    <tr><td colspan="2" align="center"><input type="submit" value="Login !"></td></tr>
     
    </table>
    Et celui des scripts des répertoires :
    Config :Templates "auth.php" :
    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
    <?php
    function CheckUser($login,$md5)
    {
      if($login=="xxxxxxxxxxxxi" && $md5=="xxxxxxxxxxxxxxxxxxxxx") // MD5 de xxxxxxx
        return true;
      return false;
    }
    ?>
    <?php
    if(!isset($_POST['md5']))
    {
      header("Location: ../index.html");
      die();
    }
    $md5=$_POST['md5'];
     
    if(!isset($_POST['login']))
    {
      header("Location: ../index.html");
      die();
    }
    $login=$_POST['login'];
     
    if(!CheckUser($login,$md5))
    {
      header("Location: ../index.html");
      die();
    }
     
    session_start();
     
    $_SESSION['last_access']=time();
    $_SESSION['ipaddr']=$_SERVER['REMOTE_ADDR'];
    $_SESSION['user']=$login;
     
    header("Location: ../index.php");
    ?>
    Templates "auth.php" :
    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
    <?php
    include "config/auth-config.php";
     
    session_start();
     
    if(!isset($_SESSION['last_access']) || !isset($_SESSION['ipaddr']) || !isset($_SESSION['user']))
    {
      header("Location: index.html");
      die();
    }
     
    if(time()-$_SESSION['last_access']>$session_timeout)
    {
      unset($_SESSION['last_access']);
      unset($_SESSION['user']);
      unset($_SESSION['ipaddr']);
      header("Location: index.html");
      die();
    }
    if($_SERVER['REMOTE_ADDR']!=$_SESSION['ipaddr'])
    {
      unset($_SESSION['last_access']);
      unset($_SESSION['user']);
      unset($_SESSION['ipaddr']);
      header("Location: index.html");
      die();
    }
    $_SESSION['last_access']=time();
    ?>
    Et celui dans config :auth-config.php !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    // Configuration du site
     
    // Timeout pour 5 min d'inactivite
    $session_timeout=300;
    ?>
    Apparemment, c'est pas le dernier qui gène !

    Je vous remercie de votre aide pour me dire ce que je dois faire.

    Ah oui, il faut que je précise.
    Pour que ça marche bien, j'ai du renommer "login.php" en 'index.html" et pour le site "index.html" en "index.php", pour que la page du login/pwd s'affiche en premier.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Il ne faut RIEN faire avant le session_start. PHP doit envoyer un header spécifique et il ne peut pas le faire s'il à déjà commencé à servir du HTML par exemple.

    Ne pas faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <html>
      <head>...</head>
      <body><?php session_start(); ?></body>
    </html>
    Faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php session_start(); ?>
    <html>
      <head>...</head>
      <body>...</body>
    </html>
    Celà vaut également dans le cadre des include: le session_start toujours en premier !

  3. #3
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 025
    Points : 244
    Points
    244
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Hello

    Il ne faut RIEN faire avant le session_start. PHP doit envoyer un header spécifique et il ne peut pas le faire s'il à déjà commencé à servir du HTML par exemple.

    Ne pas faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <html>
      <head>...</head>
      <body><?php session_start(); ?></body>
    </html>
    Faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php session_start(); ?>
    <html>
      <head>...</head>
      <body>...</body>
    </html>
    Celà vaut également dans le cadre des include: le session_start toujours en premier !
    C'est retenu, mais je n'ai pas vu ça !
    Parce que le seul script en html est : index.html et pas de session_start en vue !

    Pour infos, pour que ça marche, j'ai donc créé un dossiers "sessions" qui lui-même a le fichier .thaccess" (deny from all).
    Apparemment, c'est bon ! Je verrais bien avec le temps.

    Une petite question quand même, est-ce que c'est obligatoire cette session_start ?

  4. #4
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Salut,

    la création du dossier sessions est une spécificité de Free Sur d'autres hébergeurs (OVH, 1and1 pour ne citer qu'eux), tu n'a pas besoin de le faire.

    Sinon, oui session_start est obligatoire, sinon la session n'est pas créée

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Je l'avais oublié celle là

    Les comptes perso free sont très loin d'être une solution d'hébergement fiable.

  6. #6
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Je l'avais oublié celle là

    Les comptes perso free sont très loin d'être une solution d'hébergement fiable.
    Oulà oui surtout que Free se réserve le droit de déclarer le site en tant qu'espace de stockage et donc de le virer.

    Et puis de nos jours, on a des packs hébergement avec nom de domaine à 30€ par an, c'est vraiment pas excessif ...

  7. #7
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 025
    Points : 244
    Points
    244
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Je l'avais oublié celle là

    Les comptes perso free sont très loin d'être une solution d'hébergement fiable.
    Je suppose que tu as raison en disant ça, mais faute de mieux !!!!

    Comme je suis chez Free depuis 1998, je n'ai pas cherché d'autres hébergeurs.

    Quoiqu'il en soit, tu m'avais donné des explications sur la session_start, je pense que la fin serait "<?php session_end_flush();?>" si le début est "<?php session_start(); ?>", tu veux me dire si c'est ça ?

    Merci d'avance.

  8. #8
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Pour mettre fin à une session : session_destroy() : http://php.net/manual/fr/function.session-destroy.php

  9. #9
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 025
    Points : 244
    Points
    244
    Par défaut
    Citation Envoyé par Finality Voir le message
    Pour mettre fin à une session : session_destroy() : http://php.net/manual/fr/function.session-destroy.php
    Merci beaucoup de cette précision Finality.
    A+

  10. #10
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Quoiqu'il en soit, tu m'avais donné des explications sur la session_start, je pense que la fin serait "<?php session_end_flush();?>" si le début est "<?php session_start(); ?>", tu veux me dire si c'est ça ?
    On dirais que tu as confondu session et output buffering

    Pour manipuler les sessions, on fait session_start / session_stop
    Pour capturer les buffers de sortie on fait ob_start / ob_end_*

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

Discussions similaires

  1. [MySQL] Message d'erreur "Warning: session_start()"
    Par paolo129 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 04/03/2009, 16h13
  2. erreur sur session_start()
    Par marcel marie dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2006, 16h58
  3. Réponses: 16
    Dernier message: 29/05/2006, 17h52
  4. Réponses: 3
    Dernier message: 18/05/2006, 11h17
  5. [PHP5 APACH2 WIN32]Erreurs sur "session_start();"
    Par Jean_Benoit dans le forum Langage
    Réponses: 3
    Dernier message: 17/02/2006, 14h36

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