Page 1 sur 1

header non fonctionnel sur l'hébergeur

Posté : 05 juin 2013, 16:48
par dali0807
bonjour,
j'utilise une page php qui permet de vérifier les paramètres de connexion et faire une redirection vers la dernière page. Le problème est que la redirection fonctionne correctement en local mais pas sur le site web. le code est exécuté correctement mais sans redirection, le résultat est une page vide.

voici le code de la page valid_connection.php
<?php
	//On démarre la session
  session_start();

	include('inc/connexion_db.inc.php');
	
	if (isset($_POST['login_con']) || !empty($_POST['login_con']))
	{
		$login=$_POST['login_con'];
		$password=$_POST['password_con'];
	}
	else
	{
		$login=$_POST['login_con2'];
		$password=$_POST['password_con2'];
	}
	
	$req = $bdd->prepare('SELECT user_id,user_name,user_firstname,user_mail,user_validregister FROM user WHERE user_login = :login_con AND user_password = :password ');
	$req->execute(array('login_con' => $login, 'password' => $password));
	
	$donnees = $req->fetch();
	if ($donnees)
	{

		$_SESSION['mr_uid'] = $donnees['user_id'];
		$_SESSION['mr_ulogin'] = $login;
		$_SESSION['mr_umail'] = $donnees['user_mail'];
		
		$_SESSION['mr_ufirstname'] = $donnees['user_firstname'];
		$_SESSION['mr_uname'] = $donnees['user_name'];					

		($donnees['user_validregister']==1) ? $_SESSION['mr_validconnexion']=1 : $_SESSION['mr_validconnexion']=2;
	}
	else	
	{
		unset	($_SESSION['mr_uid']);
		unset ($_SESSION['mr_ulogin']);
		unset ($_SESSION['mr_umail']);
		unset ($_SESSION['mr_ufirstname']);
		unset ($_SESSION['mr_uname']);				
				
		$_SESSION['mr_validconnexion'] = 0;
		$_SESSION['mr_errormsg']= 1;				
	}
		
	$req->closeCursor();
	
	unset ($login);
	unset ($password);
	$bdd = NULL;  //Fermeture de la connexion
	
	header("Location: ".$_SERVER['HTTP_REFERER']."", true, 303); //redirection vers la page precédente
?>


merci pour votre aide.

Re: header non fonctionnel sur l'hébergeur

Posté : 05 juin 2013, 17:27
par dali0807
j'ai pu remarqué que le problème provient du fichier inclus connexion_db.inc car lorsque j'enlève la ligne include('inc/connexion_db.inc.php'); la redirection fonctionne mais la connexion est indispensable dans mon cas.
voici le code du fichier connexion_db.inc
<?php	
		try
		{
			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$bdd = new PDO('mysql:host=localhost;dbname=nom_base', 'user', 'password', $pdo_options);
		}	
  	catch (Exception $e)
		{
			die('Erreur : ' . $e->getMessage());
		}
?>	
malheureusement aucune idée sur la cause de cette erreur !

Re: header non fonctionnel sur l'hébergeur

Posté : 05 juin 2013, 20:54
par moogli
salut,


vue le code je dirais que tu as une (ou plusieurs) ligne(s) vide à la ficn du fichier connexion_db.inc.

il ne rien avoir après le ?> de tout les fichier inclus sinon c'est considéré comme un affichage et donc un envoie au navigateur.

si tu veux éviter ce genre de chose enlève le dernier ?> du fichier (si et seulement si c'est la dernière chose du fichier comme dans ton cas), dans ce cas cette balise est facultative et permet d'éviter bien des problèmes.

ceci est surement indiqué dans le message d'erreur que tu devrais avoir ;)


@+

Re: header non fonctionnel sur l'hébergeur

Posté : 05 juin 2013, 21:40
par dali0807
merci bcp pour ta réponse,
je ne pense pas qu'il y a des lignes vide car j'ai déjà placé le code de connexion directement dans la page de validation sans passer par un include mais ça n'as pas marché.
j'ai eu une réponse dans un autre forum qui me parle du paramètre output_buffering dans le fichier php.ini que je dois positionner à off, je ne sais pas si tu as une idée ?

Re: header non fonctionnel sur l'hébergeur

Posté : 05 juin 2013, 22:01
par moogli
nan mais sans message d'erreur on ne peux pas aller plus loin.

Il n'y pas 50 façon de faire en sorte qu'un header ne fonctionne pas et celle ci en est une très classique.

ton code indique une ligne vide avec le ?>, ce qui me conforte dans l'idée que j'ai énoncé.

regarde dans les logs il doit y avoir une erreur, passe l'error_reporting à E_ALL afin d'être certain d'avoir le message d'erreur.

@+

Re: header non fonctionnel sur l'hébergeur

Posté : 05 juin 2013, 22:19
par dali0807
je modifie ce paramètre dans le fichier php.ini local ou du serveur ? car dans le serveur je n'arrive pas à le modifié, il parait qu'il ne donnent pas l'accès à ce fichier

Re: header non fonctionnel sur l'hébergeur

Posté : 05 juin 2013, 22:41
par dali0807
c'est bizarre mais le problème est résolu !!
comment ? ça c'est une question que je ne peux as répondre car j'ai supprimé tout les lignes vides et tout les espaces et ça n'as pas marché et maintenant sans le savoir comment la redirection est faite.
je vais marquer ce sujet comme résolu mais dès que je trouve la méthode qui a abouti à ce résultat je l'ajoute à la discussion.

Re: header non fonctionnel sur l'hébergeur

Posté : 05 juin 2013, 22:57
par moogli
sur mutualisé tu ne peux pas modifier la conf, regarde dans la doc la portée du paramètre.

après comme déja dit sans erreur on ne peu t'aider.

La gestion du buffer n'est pas forcément un bonne idée, trouve plutot la solution à ton problème et tu peu nous aider à t'aider en nous indiquant le message d'erreur.

une autre possibilité d'erreur est le fait d'utiliser un encodage utf-8 avec bom.

la doc :http://fr2.php.net/manual/fr/outcontrol ... -buffering


@+

Re: [RESOLU] header non fonctionnel sur l'hébergeur

Posté : 05 juin 2013, 23:26
par dali0807
merci beaucoup pour ton aide moogli.
j'ai trouvé la cause de cette erreur puisque j'avais le même problème avec une autre page. il parait qu'il y a quelques espaces que je n'ai pas remarqué après le ?> du fichier connexion_db.inc.php
merci une autre fois

Re: [RESOLU] header non fonctionnel sur l'hébergeur

Posté : 06 juin 2013, 11:35
par moogli
de rien,

du coup essayer ma solution de supprimer le ?> est plutôt bonne ^^

une habitude a prendre ;)

@+