[PHP]-SESSION erreur incomprehensible. urgent

Résolu/Fermé
LP80 Messages postés 42 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 25 août 2011 - 18 juil. 2009 à 17:28
LP80 Messages postés 42 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 25 août 2011 - 19 juil. 2009 à 01:00
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 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
18 juil. 2009 à 20:26
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 samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
18 juil. 2009 à 17:37
On pourrait voir ton fichier connexions.php ?
L'erreur vient peut être de là ^^
0
LP80 Messages postés 42 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 25 août 2011 11
18 juil. 2009 à 17:48
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 samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
18 juil. 2009 à 18:00
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 samedi 26 janvier 2008 Statut Membre Dernière intervention 25 août 2011 11
18 juil. 2009 à 18:18
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 lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
18 juil. 2009 à 18:25
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 samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
18 juil. 2009 à 18:25
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 lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
18 juil. 2009 à 18:29
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 samedi 26 janvier 2008 Statut Membre Dernière intervention 25 août 2011 11
18 juil. 2009 à 18:55
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 samedi 26 janvier 2008 Statut Membre Dernière intervention 25 août 2011 11
18 juil. 2009 à 21:07
Merci,
j'ai essayer et ça n'a pas fonctionné... hélas.
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
18 juil. 2009 à 22:45
Et sur un autre hébergeur ?
0
PMax-57 Messages postés 195 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 12 février 2017 40
18 juil. 2009 à 23:10
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 samedi 26 janvier 2008 Statut Membre Dernière intervention 25 août 2011 11
19 juil. 2009 à 01:00
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