[PHP]-SESSION erreur incomprehensible. urgent

Résolu
LP80 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
LP80 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
voilà je suis désespéré depuis un moment je rencontre tout le temps des problemes avec les sessions.

Je comprend pas sur les tutos et les manuels le fonctionnement est a peu prés toujours le même.
Mais malgré pleins de réécriture de mon script, je rencontre toujours un problème...

Sans compter que ça fonctionne parfaitement en LOCAL.
ps: je suis hebergé sur ovh...


il s'agit d'une page classique avec un formulaire ou je récupère les infos et si tout est ok on initialise la session et ensuite je redirige ver l'index.
Je vous laisse mon code ici:

<?
//////////////////////////////////////////////////LOGIN///////////////////////////////////////////////////////
if(isset($_POST['luser']) && $_POST['luser']!="" && $_POST['lepass']!=""){ // si on a cliqué sur le formulaire
	require("../process/connexions.php");
	//1.RECUPERATION DES CHAMPS//////////////////////////////////////////////
	$lelogin = $_POST['luser'];
	$lepass = $_POST['lepass'];
	$erreur = "Champs incomplets";
	//2.OPEN CONNEXION///////////////////////////////////////////////////////
	$loginConnect = mysql_connect($host, $login, $pass);
	mysql_select_db($chDB, $loginConnect);
	//3.VERIFICATION DES DONNEES DU FORMULAIRE///////////////////////////////
	$infoUser = mysql_query("SELECT * FROM $adminTB WHERE pseudo ='$lelogin' AND  psw='$lepass' " )or die(mysql_error());
	$result = mysql_num_rows($infoUser);									//Si il n'y a pas de resultats c'est que l'uns des champs est incorrect (au miniùum)
	//4.USER ADMIN CONNEXION/////////////////////////////////////////////////
	if($result == 1) {
		session_start();
		//a.VARIABLES//////////////////////////////////////////
		$_SESSION["login"] = $lelogin;
		$_SESSION['identification'] = session_id();
		$_SESSION['id_user'] = mysql_result($infoUser,0,'id');
		$_SESSION['pseudo'] = mysql_result($infoUser,0,'pseudo');  				//meme valeur que $lelogin
		$_SESSION['psw'] = mysql_result($infoUser,0,'psw');						//a encoder de preference (md5)
		$_SESSION['mail'] = mysql_result($infoUser,0,'mail');
		$_SESSION['last_connect'] = mysql_result($infoUser,0,'d_lastCon');
		$der_connexion=date("Y-m-d H:i:s");
		//b.UPDATE: Derniere connection////////////////////////
		mysql_query ("UPDATE $adminTB SET d_lastCon='$der_connexion' WHERE id=".$_SESSION['id_user']." LIMIT 1") or die (mysql_error());
		mysql_close($loginConnect);
		//c.REDIRECTION////////////////////////////////////////
		header("Location: adm_index.php?p=1");
	}else{
		include("adm_login_2.php");
		//header("Location: adm_login.php");
	}
}else{
	include("adm_login_2.php");
	//header("Location: adm_login.php");										//genere une boucle infinie
}
?>




voici mon erreur:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homez.68/catherin2/www/admin/adm_login.php:1) in /homez.68/catherin2/www/admin/adm_login.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at /homez.68/catherin2/www/admin/adm_login.php:1) in /homez.68/catherin2/www/admin/adm_login.php on line 31



J'avoue que je suis dérouté car je ne vois pas a quel moment le header en envoyé avant l'initialisation de la session.


enfin si quelqu'un pouvait me dire pourquoi j'ai cette erreur et ce que je pourrais faire.
Et le pire c'est que je doit le montrer le site demain a mon pote et ca risque de foiré.. vous comprenez l'urgence.

En remerciant d'avance toute âme charitable qui m'aiderais.
merci donc.

13 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Peut-être une erreur d'encodage ...
Il se peut qu'il y ai un caractère invisible avant <?php
Pour l'effacer, efface complétement la première ligne (dés que la ligne est vide visuellement, presse la touche effacer encore une fois). Ensuite, tu peux réinscrire <?php
1
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
On pourrait voir ton fichier connexions.php ?
L'erreur vient peut être de là ^^
0
LP80 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   11
 
Biensur...
//=== CONNECTION DB SETTING ///////////////
$host 				= "localhost";
$login 				= "root"; 
$pass 				= "mysql";

//=== DB NAMES //////////////////////////
$chDB 			= "ladb";
$adminTB 			= "admin";



Voila
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
Heu tu n'as rien d'affiché avant ton <?php
?

et t'as pas d'espace non plus (un espace en trop ca peut foutre la m**** ^^)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LP80 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   11
 
Ben non,
et c'est ca le plus dingue. si je pouvait t'envoyer le fichier tu verrais.
j'ai mon ouverture <?php , passage a la ligne et direct session_star()

faudrais p-etre que je fasse un test sur un autre hebergeur pour voir si ca vien pas de eux...
mais c'est assez fastidieux.

je sais pas...
0
PMax-57 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention   40
 
Salut !

Ton erreur : session start doit TOUJOURS être placé avant n'importe quel code php, même si tu n'utilise pas les sessions !!!

Là, il est à la ligne 17. Pour ma part et pour éviter de me tromper, je le met toujours après les lignes <?php.
Il ne doit être activé qu'une fois par page, c'est d'autant mieux si tu as un seul index.php avec plein de includes.


Bonne chance !
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
Donc le code que t'as filé au début c'est tout ton fichier ?
t'as rien du tout avant ?


Ce que dis le Mr du dessus est possible, je met tjs mes session_start en debut de page, mais je croyais que c'était avant tout code généré, et pas avant tout code interprété ...
mais c'est possible ^^
0
PMax-57 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention   40
 
Ben enfait il m'est arrivé la même chose, je ne voulais un session_start() qu'à partir d'une fonction if.

De là, php avec if et session_start en résultat. L'erreur était là.
J'éspère que c'est là même chose pour ici !

Ce que je fais tout le temps maintenant c'est session_start() sur mon index.php, et je défini un session_start.php qui place les variables initiales de sessions. Ce fichier est cependant chargé qu'une fois à chaque session d'ouverte.
0
LP80 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   11
 
salut a vous et merci pour vos réponses,
et désolé pour le rendu pourri du code... pourtant j'ai mit les balises, boh!

En effet la session_start() TJRS au début... apparement.
<?php
session_start();
if(isset($_POST['luser']) && $_POST['luser']!="" && $_POST['lepass']!=""){ ...


cependant là j'ai cette erreur.

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homez.68/catherin2/www/admin/adm_login.php:1) in /homez.68/catherin2/www/admin/adm_login.php on line 2


Du coup je l'ai retiré, puisque de toute façon la session est initialisée a l' index.php.
MAIS lors de la redirection: header("Location: adm_index.php?p=1");

voici l'erreur:

Warning: Cannot modify header information - headers already sent by (output started at /homez.68/catherin2/www/admin/adm_login.php:1) in /homez.68/catherin2/www/admin/adm_login.php on line 30

Et là, je ne vois vraiment pas pourquoi... puisqu'il n'y a rien qui est affiché avant.


pour jeangilles:
Oui c'est tout mon fichier (adm_login.php)... le formulaire ce trouve dans "adm_login_2.php" et il est inclus dans "adm_login.php".
J'ai fai ça pour etre sûr que le contenu soit bien généré avant ma session... mais si j'avais mis un <doctype/> après mon code ça fonctionnerais tout aussi bien... enfin presque.

Pour PMax-57,
tu peux p-être détaillé un peux plus ton idée?
mois j'utilise une page login ou je cree mes variable de session et ensuite je redirige vers l'index... tu ferais comment selont ce shema?

merci encore
0
LP80 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   11
 
Merci,
j'ai essayer et ça n'a pas fonctionné... hélas.
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Et sur un autre hébergeur ?
0
PMax-57 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention   40
 
Re !

Hé bien enfait tous mes sites sont encodés sous le même schéma :

Index.php // Dans lequel j'insère toutes mes fonctions

=> if ( empty($_SESSION['auth']) == true ) { require_once(session_start.php) //Include du session_start
=> require_once(connect.php) // Connection à la BDD
=> require_once(theme.php) // Elements visuels

dans le session_start() on insère tous les paramètres d'origine de la session, par exemple :

$_SESSION['lang'] == 'fr'; //Langage : francais
$_SESSION['memberid'] == '0'; //On défini l'ID du membre à 0, à modifier dans un fichier auth.php
$_SESSION['auth'] == '1'; //Le visiteur est passé par session_start, plus besoin de recharger le fichier (cf la ligne avec la fonction if empty)

ensuite dans ton fichier auth.php tu met tes parametres de login et tu modifie le $_SESSION['memberid'] == '0'; en suivant l'enregistrement.

J'espere que ça t'as aidé
0
LP80 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   11
 
bon apparemment ça fonctionne maintenant...

en fin de compte j'ai l'impression de l'hypothèse émise par avion-f16 était la bonne.
J'ai simplement recréé un fichier login.php et j'ai fait un copier/coller. et ça à marché!! youpii...

Enfin on va voire apparemment ça fonctionne mais on sait jamais...


Merci en tout cas a vous tous pour vos conseils.


pour PMax-57,
je vais essayer ta méthode, merci en tout cas ;)


LP80
0