Probleme de redirection de page en php

Résolu
betty - Modifié par ichiriac le 26/07/2013 à 20:59
ichiriac Messages postés 195 Date d'inscription lundi 28 janvier 2013 Statut Membre Dernière intervention 13 janvier 2017 - 3 août 2013 à 19:32
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

ichiriac Messages postés 195 Date d'inscription lundi 28 janvier 2013 Statut Membre Dernière intervention 13 janvier 2017 3
Modifié par ichiriac le 26/07/2013 à 21:02
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
1
betty366 Messages postés 1 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 27 juillet 2013
27 juil. 2013 à 00:36
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
0
ichiriac Messages postés 195 Date d'inscription lundi 28 janvier 2013 Statut Membre Dernière intervention 13 janvier 2017 3
3 août 2013 à 19:32
c'est éventuellement une erreur provenant header.php ?

Tu as un tuto sur les redirections ici

Bon courrage
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
Modifié par f0xi le 2/08/2013 à 14:58
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 ?]
1
nicotontige Messages postés 28 Date d'inscription mardi 25 octobre 2005 Statut Membre Dernière intervention 8 octobre 2013 2
30 juil. 2013 à 16:47
Bonjour,

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