Probleme de redirection de page en php [Résolu]

Signaler
-
Messages postés
195
Date d'inscription
lundi 28 janvier 2013
Statut
Membre
Dernière intervention
13 janvier 2017
-
Bonjour,
j'essaye de réaliser une application en php, seulement le soucis que j'ai c'est que une fois l'utilisateur est authentifier une page que j'ai nome menu_principale doit s'afficher seulement c'est pas le cas, j'ai une page blanche qui s'affiche et j'arrive pas a trouver au ça ne marche pas :(.
Mon code est le suivant:

<?php include ('header.php'); ?>
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
 if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

  $base = mysql_connect ('localhost', 'root', 'root');
  mysql_select_db ('Gestion_de_Courrier', $base);

  // on teste si une entrée de la base contient ce couple login / pass
  $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
  $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  $data = mysql_fetch_array($req);

  mysql_free_result($req);
  mysql_close();

  // si on obtient une réponse, alors l'utilisateur est un membre
  if ($data[0] == 1) {
   session_start();
   $_SESSION['login'] = $_POST['login'];
   header('Location: menu_principal.php');
   exit();
  }
  // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
  elseif ($data[0] == 0) {
   $erreur = 'Compte non reconnu.';
  }
  // sinon, alors la, il y a un gros problème :)
  else {
   $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
  }
 }
 else {
  $erreur = 'Au moins un des champs est vide.';
 }
}
?>
<html>
<head>
<title>Accueil</title>
</head>

<body>
Identification :<br />
<form action="index.php" method="post">
Utilisateur: <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="Ajout_utilisateur.php">Vous inscrire</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>


Merci d'avance pour vos réponses.

3 réponses

Messages postés
195
Date d'inscription
lundi 28 janvier 2013
Statut
Membre
Dernière intervention
13 janvier 2017
3
Pour faire une redirection il ne faut pas faire d'affichage, or il se trouve qu'en début de script tu utilises deux balises, du coup la page affiche un retour à la ligne :

Plutôt que de faire ceci :

<?php include ('header.php'); ?>
<?php
...


Écris directement :

<?php include ('header.php');
...


aKhEnAtHoN
Messages postés
1
Date d'inscription
vendredi 26 juillet 2013
Statut
Membre
Dernière intervention
27 juillet 2013

Merci pour votre réponse ichiriac,
j'ai essaye ce que vous m'avez proposer mais malheureusement ca marche toujours pas, au lieu d'afficher la page souhaiter à savoir menu principal j'ai une page blanche ou il n'y a rien :(.
Merci
Messages postés
195
Date d'inscription
lundi 28 janvier 2013
Statut
Membre
Dernière intervention
13 janvier 2017
3
c'est éventuellement une erreur provenant header.php ?

Tu as un tuto sur les redirections ici

Bon courrage
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
31
Enleve l'espace qu'il y a entre "location:" et "menu_principal.php" dans la fonction header...

<?php 
include('header.php'); 
session_start();

function getParam($paramName, $default){
  /* a modifier selon les besoins */
  return  htmlentities(
            isset($_GET[$paramName]) ? $_GET[$paramName] : ( 
                isset($_POST[$paramName]) ? $_POST[$paramName] : $default 
              )
          );
}

define('_REMOTEIP', $_SERVER['REMOTE_ADDR']);

/* déjà logué */
if(isset($_SESSION['loggedIn'])){
  if(!isset($_SESSION['remoteIp']) || !isset($_SESSION['logtime']) || !isset($_SESSION['login'])){
    /* SESSION INVALIDE */
    exit;
  }
  if($_SESSION['remoteIp'] !== _REMOTEIP){
    /* MAN IN THE MIDDLE SUSPECT */
    exit;
  } 
  if($_SESSION['logtime'] < time()){
    /* SESSION EXPIRE */
  }
  
  /* SESSION OK POUR CONTINUER */
  
} 
/* pas logué */
else {
  // on teste si le visiteur a soumis le formulaire de connexion

  define("_CONNEXION", getParam('connexion', false));
  define("_LOGIN", getParam('login', false));
  define("_PASS", getParam('pass', false));

  if(_CONNEXION && _LOGIN && _PASS){

      $base = mysql_connect ('localhost', 'root', 'root');
      mysql_select_db ('Gestion_de_Courrier', $base);

      // on teste si une entrée de la base contient ce couple login / pass
      $query = "SELECT * ".
               "FROM membre ".
               "WHERE ".
               " login='".mysql_real_escape_string(strtolower(_LOGIN))."' AND ".
               " pass_md5='".md5(mysql_real_escape_string(_PASS))."' LIMIT 1";
             
      $result = mysql_query($query);/* or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());*/
      if(is_resource($result)){
        if( mysql_num_rows($result) == 1){
          $data = mysql_fetch_array($result);
          $data = $data[0];
        } else {
          $data = null;
        }
        mysql_free_result($result);
      } else {
        $data = null;
      }
      mysql_close();
    

      // si on obtient une réponse, alors l'utilisateur est un membre
      if($data !== null) {
        $_SESSION['loggedIn'] = true;
        $_SESSION['login']    = _LOGIN;
        $_SESSION['logtime']  = time();
        $_SESSION['remoteIp'] = _REMOTEIP;
        
        header('Location:menu_principal.php');
        
        exit();
      }
      // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
      else{
       $erreur = 'Compte non reconnu, probleme de mot de passe ou de login.';
      }
    }
    else {
      $erreur = 'Au moins un des champs est vide.';
    }
  }
}
?>
<html>
<head>
<title>Accueil</title>
</head>

<body>
Identification :<br />
<form action="index.php" method="post">
Utilisateur: <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="Ajout_utilisateur.php">Vous inscrire</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>


________________________________________________________
[ besoin de câbles audio, vidèo, informatique pas cher ?]
Messages postés
28
Date d'inscription
mardi 25 octobre 2005
Statut
Membre
Dernière intervention
8 octobre 2013
1
Bonjour,

Un petit message d'erreur serait plus pratique à trouver le problème.
Pouvez-vous nous envoyez les logs de votre serveur web ?