betty
-
Modifié par ichiriac le 26/07/2013 à 20:59
ichiriac
Messages postés195Date d'inscriptionlundi 28 janvier 2013StatutMembreDernière intervention13 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>
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
betty366
Messages postés1Date d'inscriptionvendredi 26 juillet 2013StatutMembreDernière intervention27 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
ichiriac
Messages postés195Date d'inscriptionlundi 28 janvier 2013StatutMembreDernière intervention13 janvier 20173 3 août 2013 à 19:32
c'est éventuellement une erreur provenant header.php ?
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202237 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 ?]
27 juil. 2013 à 00:36
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
3 août 2013 à 19:32
Tu as un tuto sur les redirections ici
Bon courrage