[PHP] Header() affichant une page blanche

Fermé
Giao - 29 avril 2010 à 17:03
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 29 avril 2010 à 19:10
Bonjour à tous,

Je suis encore plutôt novice en PHP et je me lance dans quelque chose de tout nouveau pour moi : la mise en place d'un système d'espace membre.

Pour le moment, j'ai enregistré manuellement dans la BDD un utilisateur pour simplement tester le système de connexion.

Le principe :

1) J'ai une page index2.php qui me sert de page test. Sur cette page se trouve le formulaire de connexion.

2) Le formulaire renvoie à une page login.php sur laquelle se trouve le fameux header() : c'est une page uniquement php teste le formulaire et permet ou non de se connecter.

3) Si l'identifiant et le mot de passe sont bons, le header() est censé renvoyer à une page valid_login.php qui confirme à l'utilisateur sa connexion.
Sinon, il renvoie à index2.php pour que l'utilisateur recommence, en affichant un message d'erreur.

Ce qui se passe : le header() de login.php (étape 2) ne semble pas marcher.
- J'entre le login et le mot de passe, je valide.
- Le formulaire redirige bien vers login.php
- Et là à login.php, une page blanche s'affiche, et c'est tout.

----------------------------------------------------------------------------------------------------------------

J'espère que vous saurez me dire quoi :/
Voici mon code :


// le formulaire de connexion de index2.php, j'ai enlevé ici les lignes de codes non pertinentes pour le problème

<?
echo '<form name="connexion" action="login.php" method="post" class="box_texte">';
echo '<table cellpadding="0" cellspacing="0" border="0">';
echo '<tr>';
echo '<td><p>Login :</p></td>';
echo '<td><p> <input type="text" name="login" size="19px" class="box_texte" id="login"></p></td>';
echo '</tr>';
echo '<tr>';
echo '<td><p>Mot de passe :</p></td>';
echo '<td><p> <input type="password" name="mdp" size="19px" class="box_texte" id="mdp"> <input type="image" name="submit" src="images/ok.gif" /></p></td>';
echo '</tr>';

if (isset($_GET['erreur'])) {
switch($_GET['erreur']) {
case "badmdp" : $texte_erreur="Votre compte ou mot de passe est incorrect."; break;
case "badadmin" : $texte_erreur="Une erreur technique est survenue, essayez ultérieurement ou contactez l'administrateur."; break;
case "interdit" : $texte_erreur="Vous devez être connecté pour accéder à cette page."; break;
default : $texte_erreur=""; break;
}

echo '<tr>';
echo '<td colspan="2"><p class="erreur">'.$texte_erreur.'</p></td>';
echo '</tr>';
}
?>

----------------------------------------------------------------------------------------------------------------
// login.php

<?php
session_start();
include("config.inc.php");

// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['submit'])) {

if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['mdp']) && !empty($_POST['mdp'])))
{
mysql_connect(SERVER,USER,PASS);
mysql_select_db(BASE);

// on teste si une entrée de la base contient ce couple login / pass
$req = 'SELECT count(*) FROM membres WHERE memb_login="'.mysql_real_escape_string($_POST['login']).'" AND memb_mdp="'.mysql_real_escape_string(sha1($_POST['mdp'])).'"';
$result = mysql_query($req) or die('Erreur SQL !<br />'.$req.'<br />'.mysql_error());
$data = mysql_fetch_array($result);
mysql_free_result($result);
mysql_close();

// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
$_SESSION['login'] = $_POST['login'];
header('Location: valid_login.php');
}
// 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) {
header('Location: index2.php?erreur=badmdp');
}
// sinon, il y a un gros problème...
else {
header('Location: index2.php?erreur=badadmin');
}
}

else {
header('Location: index2.php?erreur=badmdp');
}
}
?>

----------------------------------------------------------------------------------------------------------------
// la seule portion de code php de valid_login.php, qui vérifie seulement que l'utilisateur est identifié en arrivant sur la page

<?php
session_start();
include("config.inc.php");

if (!isset($_SESSION['login'])) {
header ('Location: index2.php?erreur=interdit');
}
?>
A voir également:

1 réponse

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
29 avril 2010 à 19:10
Ajoute des echo dans les différentes conditions, ça te permettra de voir où ça coince.
0