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

PHP & Base de données Discussion :

Message d'erreur "Warning: session_start()" [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 28
    Points
    28
    Par défaut Message d'erreur "Warning: session_start()"
    Bonjour à tous,
    J'ai un gro souci avec mon code php qui fonctionne très bien en local mais signale ceci en ligne:

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /homez.34/koumalo/www/login.php:9) in /homez.34/koumalo/www/login.php on line 28

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homez.34/koumalo/www/login.php:9) in /homez.34/koumalo/www/login.php on line 28

    Warning: Cannot modify header information - headers already sent by (output started at /homez.34/koumalo/www/login.php:9) in /homez.34/koumalo/www/login.php on line 30

    Voici le code de la page login.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
    <?php
    include("connexion.php");
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']) ) {
    	extract($_POST);
    	// on recupère le password de la table qui correspond au login du visiteur
    	$sql = "select pass_md5 from admin where login='".$login."'";
    	$req = mysql_query($sql) or die('error');
    	$data = mysql_fetch_assoc($req);
    	if($data['pass_md5'] != $pass) 
    	{
    	?>
    	<script language="JavaScript">
    	alert("Le login ou le mot de passe que vous avez saisie est erroné. Merci de recommencer");
    	window.location.replace("index.php");// On inclut le formulaire d'identification
    	</script>
    	<?php
    	//Une fenêtre d'alerte s'affiche lorsque le login ou le mot de passe est invalide et renvoit vers la page pour se logger
    	}
    	else {
    	session_start(); //on démarre une session
    	$_SESSION['login'] = $login; //la variable de session $_SESSION['login'] récupère le login saisi
    	header("Location: accueil.php");// lien vers la page d'accueil de l'espace privé 
    	}
    }
    else {
    	?>
    	<script language="JavaScript">
    	alert("Vous avez oublié de remplir un champ. Merci de recommencer");
    	window.location.replace("index.php");
    	</script>
    	<?php
    //Une fenêtre d'alerte s'affiche lorsque le login ou le mot de passe est vide et renvoit vers la page pour se logger	
    }
    ?>
    Espérant avoir bien posé mon problème, mervi pour votre contibution

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    C'est encore moi
    Bon j'ai reussi à reoudre le premier souci du "warning:session_start()". mais cette erreur s'affiche encore et m'apêche d'allé à la page accueil.php.
    Ce message est le suivant:

    Warning: Cannot modify header information - headers already sent by (output started at /homez.34/koumalo/www/login.php:10) in /homez.34/koumalo/www/login.php on line 31
    Il me demande de modifier le header mais que je ne sais comment m 'y prendre.

    votre intervantion sera la bien vennue.

  3. #3
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    oui car tu appelles 2 fois session_start();
    une premiere fois dans login.php
    et une deuxieme fois dans accueil.php je suppose.
    ou alors tu laisses un vide avant d´appeler
    session_start().
    comme on ne voit pas la ou tu appelles session_start() c´est pas facile d´apporter une reponse adequate.
    essaies ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if( session_id() == "")
     session_start();
    sinon enoies les codes qui sont soumis a l´erreur.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il me demande de modifier le header mais que je ne sais comment m 'y prendre.
    Pour developper il faut connaitre un peu d'anglais
    Le message dit :

    "Les en-tête ne peuvent pas être modifiés - les en-tête ont déjà été envoyées (l'envoi a commencé dans login.php ligne 10)"

    En effet ligne 10 de ton code tu inseres des lignes de javascript, tu ne peux donc pas apres modifier les en-têtes.

  5. #5
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    je rectifie, la session doit etre appeler comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    session_start();
    include("connexion.php");
    -----
    ?>
    et non a l´endroit ou tu l´appelles actuellement.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Tout dabord un grand merci pour votre intervention qui n'a su tarder

    "warnin: seesion_start est resolut mon ami jeffray03 si votre reponse visait à corriger cet erreur.

    Reste celui de "header" d'où Sabotage fait allusion à javascript qui est comme l'anglais des terrains vierge pour le programmeur en herbe que je suis. pour sortir de ce problème maintenant je vais vous mettre la totalité de mon code pour que vous me dites exactement où il faut mettre quoi!!!

    Voici le code
    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
    <?php
    session_start();
    include("connexion.php");
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title></title>
    </head>
    <body><?php
    include("connexion.php");
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']) ) {
    	extract($_POST);
    	// on recupère le password de la table qui correspond au login du visiteur
    	$sql = "select pass_md5 from admin where login='".$login."'";
    	$req = mysql_query($sql) or die('error');
    	$data = mysql_fetch_assoc($req);
    	if($data['pass_md5'] != $pass) 
    	{
    	?>
    	<script language="JavaScript">
    	alert("Le login ou le mot de passe que vous avez saisie est erroné. Merci de recommencer");
    	window.location.replace("index.php");// On inclut le formulaire d'identification
    	</script>
    	<?php
    	//Une fenêtre d'alerte s'affiche lorsque le login ou le mot de passe est invalide et renvoit vers la page pour se logger
    	}
    	else {
    		session_start(); //on démarre une session
    		$_SESSION['login'] = $login; //la variable de session $_SESSION['login'] récupère le login saisi
    	header("Location: accueil.php");// lien vers la page d'accueil de l'espace privé 
    	}
    }
    else {
    	?>
    	<script language="JavaScript">
    	alert("Vous avez oublié de remplir un champ. Merci de recommencer");
    	window.location.replace("index.php");
    	</script>
    	<?php
    //Une fenêtre d'alerte s'affiche lorsque le login ou le mot de passe est vide et renvoit vers la page pour se logger	
    }
    ?>
    </body>
    </html>
    Merci d'avance

  7. #7
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    En gros tu dois te débrouiller pour avoir les header location la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start();
    include("connexion.php");
    header("location:accueil.php");
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    Donc faire les test en haut

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sabotage fait allusion à javascript qui est comme l'anglais des terrains vierge pour le programmeur en herbe que je suis
    La ce n'est pas un probleme de javascript.
    Pour etre plus clair : une fois que tu as commencé a ecrire ta page, que ce soit du javascript, une balise HTML, ou meme un simple espace, tu ne peux plus faire de redirection.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (condition) {
       echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ......';
    } else {
       header('location: .....');
    }

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Il faut dire que je suis vraiment nul car jy comprend vraiment rien
    Pouvez vous me faire une explication plus explicite de ce que je peux faire exactement ??

    Je suis débutant au niveau plus proche de - l'infini

    Je compte sur vous et merci pour tout ce que vous avez fais jusqu'ici

  10. #10
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    En résumé, tu n'as pas le droit de placer un header("location:index.php"); n'importe où sur la page, il ne faut qu'aucune information ne soit envoyé avant pas même un espace donc :

    N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
    Source : Php.net

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    toujours dans brouillard .

    J'ai l'ai deja placé partout dans mon code mais pour le meme resultat. je l'ai mis en commenaire et plus de message mais je n'atteind pas mapage accueil.php

    un tuto ou un lien pouvant me dire exactement comment je peux faire mon lien sans être obligé de passer par ce Mr grand monsier "Header"

  12. #12
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Ben par exemple dans ton code :

    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
    <?php
    session_start();
    if (isset($_SESSION['login'])){
        header("Location: accueil.php");// lien vers la page d'accueil de l'espace privé 
     
    }
    include("connexion.php");
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title></title>
    </head>
    <body><?php
    include("connexion.php");
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']) ) {
    	extract($_POST);
    	// on recupère le password de la table qui correspond au login du visiteur
    	$sql = "select pass_md5 from admin where login='".$login."'";
    	$req = mysql_query($sql) or die('error');
    	$data = mysql_fetch_assoc($req);
    	if($data['pass_md5'] != $pass) 
    	{
    	?>
    	<script language="JavaScript">
    	alert("Le login ou le mot de passe que vous avez saisie est erroné. Merci de recommencer");
    	window.location.replace("index.php");// On inclut le formulaire d'identification
    	</script>
    	<?php
    	//Une fenêtre d'alerte s'affiche lorsque le login ou le mot de passe est invalide et renvoit vers la page pour se logger
    	}
    	else {
    		$_SESSION['login'] = $login; //la variable de session $_SESSION['login'] récupère le login saisi
     
     
    	}
    }
    else {
    	?>
    	<script language="JavaScript">
    	alert("Vous avez oublié de remplir un champ. Merci de recommencer");
    	window.location.replace("index.php");
    	</script>
    	<?php
    //Une fenêtre d'alerte s'affiche lorsque le login ou le mot de passe est vide et renvoit vers la page pour se logger	
    }
    ?>
    </body>
    </html>
    Le truc c'est que tu peux faire des redirection javascript mais c'est vraiment pas propre et à éviter

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Merci Obito

    ça marche sauf que ça ne renvois pas directement à la page accueil.php car il faut actualiser dabors.

    Une fois de plus merci pour le mement je vais mettre resolut tout en sachant que je vais personnaliser à mes souhaits.

    En passant Obito la redirection avec javascript sera tjr la bienvenue

    Merci à tous

  14. #14
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Ben en fait je viens de voir que tu l'as déjà utilisé ^^

    A savoir :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<script language='Javascript'>document.location='index.php'</script>";

    Mais comme je dis à éviter^^

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/05/2007, 14h36
  2. Réponses: 3
    Dernier message: 18/05/2006, 11h17
  3. [FTP] Warning avec ftp_get, mais pas de message d'erreur
    Par NomUtilisateurDejaPris dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2006, 18h12
  4. Rediriger les warnings et messages d'erreur
    Par biggir dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2005, 15h20

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