8791 sujets

Développement web côté serveur, CMS

Bonsoir à tous,

Je m'arrache les cheveux depuis des heures sur un problème de header location.

Mon problème est que je passe mon temps à passer de WAMP à MAMP et que sur certains points MAMP est nettement plus capricieux, ce qui remet tout en question à chaque fois...

Je m'explique:
J'ai -entre autres- une page de Connexion pour les membres et une fois les identifiant/mot de passe entrés le membre doit être redirigé vers la page de Profil.
Sur WAMP ça fonctionne sans poser de questions. Sur MAMP le header n'est absolument pas pris en compte et je reste sur la page de Connexion (sans message d'erreur).

Voici le code en question :


require_once('functions/functions.php');
 
 
// RECUPERATION DU FORMULAIRE
if(isset($_POST['connection']))
{
	$nickname = trim($_POST['nickname']);
	$psswd = $_POST['psswd'];
	$nickname = htmlentities($nickname, ENT_QUOTES);
	$psswd = htmlentities($psswd, ENT_QUOTES);
	$rememberme = ($_POST['rememberme']);
 
	// Si la case "Se souvenir de moi" a été cochée
	if($rememberme)
	{
		$lap = 365*24*3600;
		setCookie("member_nickname",$nickname,time()+$lap);
	}
 
	$data = check_member($nickname);
	$num = mysql_num_rows($data);
 
	// Vérification de l'existence du pseudo et de la correspondance du mot de passe
	if($num != 0) 
	{
		$member = mysql_fetch_assoc($data);
		if($psswd == $member['mdp']) 
		{
			$_SESSION['member']['id'] = $member['id_membres'];
			$_SESSION['member']['nickname'] = $member['pseudo'];
			$_SESSION['member']['lastname'] = $member['nom'];
			$_SESSION['member']['firstname'] = $member['prenom'];
			$_SESSION['member']['email'] = $member['email'];
			$_SESSION['member']['gender'] = $member['sexe'];
			$_SESSION['member']['city'] = $member['ville'];
			$_SESSION['member']['zipcode'] = $member['cp'];
			$_SESSION['member']['address'] = $member['adresse'];
			$_SESSION['member']['status'] = $member['statut'];
			header("Location:profile.php");
		}
		else
		{
			echo "Mot de passe incorrect";
		}
	}
	else
	{
		echo "Pseudo incorrect";
	}
}	
 
 
// AFFICHAGE HEADER + MENU
include('includes/menu.php'); echo "\n";
 
...


J'ai bien sûr fait attention à ce qu'aucun code HTML ou echo/print n'apparaissent avant le header (comme vous pouvez le constater).

J'ai essayé de mettre un exit() après le header mais ça m'emmène sur une page blanche.

Je ne sais pas si c'est mon code ou un problème de configuration de MAMP (réglé par défaut, j'ai seulement désactivé les magic_quotes sur php.ini).

Si vous avez une idée... ou des pistes...
Modifié par wbnet (01 Apr 2011 - 23:54)
Salut,

Il semblerait que le problème se situe dans le fichier "php.ini" à la variable "output_buffering = Off" qu'il faudrait passer sur "on" sans oublier de relancer la machine après.

A tester..
Si tu rencontres régulièrement des problèmes en passant de WAMP à MAMP il serait avisé d'uniformiser la configuration PHP sur les deux postes.
En fait j'ai résolu mon problème...

J'ai d'abord activé l'affichage des erreurs dans php.ini dans MAMP ("display_errors = On") qui est sur Off par défaut (allez savoir pourquoi... ou peut-être sur Mac on ne fait jamais d'erreur de programmation Smiley lol ).

En refaisant un essai j'ai pu voir l'erreur "Headers already sent..." avec des informations dont celle qui me localisait la source du problème.

Dans mon code vous remarquerez que j'ai un include vers functions.php, et dans celui-ci il y a un include à l'intérieur vers database.php pour la connexion SQL. Dans ce dernier fichier il y avait simplement 2 lignes vides après mon ?> de fin de code PHP Smiley biggol

Tout ce temps perdu pour 2 lignes vides...