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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<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" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?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 d'avance de votre aide.