Bonjour,
Je développe actuellement un site en architecture MVC.
Localement, je développe sous MAC et avec une architecture MAMP PRO. J'ai activé l'option "output_buffering = 4096", dans le fichier php.ini.
Le problème étant que les redirections "header("Location:XXXX.XXX");" ne fonctionne pas lorsque le site est hébergé en ligne (mon hébergeur étant 1&1).
Je dispose d'un bref formulaire de login :
<img src="images/logologin.png"/><br><br>
<form class='login-form' action='index.php?page=connexion' method='POST'>
<input type="text" placeholder="Identifiant" id="login" name="login">
<input type="password" placeholder="Mot de passe" id="password" name="password">
<button>Se connecter</button>[]()
Et ma fonction "connexion.php" :
<?php /*connexion.php*/ ?>
<?php
if(isset($_GET['out'])){$_SESSION=array();
header('Location:index.php');
exit;
}
if(empty($_POST['login']) AND !empty($_POST['password'])) {
$password=$_POST['password'];
$_SESSION['__MESSAGE__'][] = "Identifiant manquant.";
header ("Location:index.php");
}
else if(!empty($_POST['login']) AND empty($_POST['password'])) {
$login=$_POST['login'];
$_SESSION['__MESSAGE__'][] = "Mot de passe manquant.";
header ("Location:index.php");
}
else if(empty($_POST['login']) AND empty($_POST['password'])) {
$_SESSION['__MESSAGE__'][] = "Identifiant et mot de passe manquant.";
header ("Location:index.php");
}
else {
if(!empty($_POST['login']) && !empty($_POST['password'])){
$login=$_POST['login'];
$password=$_POST['password'];
$sql = 'SELECT IdUtilisateur,Password,Nom,Prenom FROM utilisateur
WHERE Login= :login';
$stmt = $db->prepare($sql);
$stmt->execute(array(':login'=>$login));
//y a-t-il un utilisateur ayant ce login ?
if($stmt->rowCount()==1){
$utilisateur = $stmt->fetch(PDO::FETCH_ASSOC);
if(md5($password)==$utilisateur['Password']){
//stocke les valeurs dans la session
$_SESSION['id']=$utilisateur['IdUtilisateur'];
$_SESSION['nom_connexion']=$login;
$_SESSION['nom']=$utilisateur['Nom'];
$_SESSION['prenom']=$utilisateur['Prenom'];
//cherche les rôles attribués à l'utilisateur
$sql = 'SELECT * from role
JOIN attribution ON
attribution.idR = role.idRole
WHERE attribution.idU = :id';
$stmt=$db->prepare($sql);
$stmt->execute(array(':id'=>$_SESSION['id']));
//on attribue le role "connecté" par défaut
$_SESSION['roles'][]=1;
//on ajoute les rôles dans la session
while($r = $stmt->fetch(PDO::FETCH_ASSOC)){
$_SESSION['roles'][] = $r['idRole'];
}header("Location:index.php");
exit;
}//if mot de passe
}// if nom utilisateur
}//if paramètres passés
$_SESSION['__MESSAGE__'][] = "Identifiants incorrects...";
header("Location:index.php");
exit;
}
?>
Merci de votre aide.
@Jeremy60500
N'oublie pas de metter un exit;
après tes header
pour qu'il arête d'exécuter le reste du script.