Redirection avec header
Résolu
Zedrof
Messages postés
156
Date d'inscription
Statut
Membre
Dernière intervention
-
Zedrof Messages postés 156 Date d'inscription Statut Membre Dernière intervention -
Zedrof Messages postés 156 Date d'inscription Statut Membre Dernière intervention -
Bonjour,Est ce quelqu'un pourrait m'aider puisque après mon authentification ça me renvoi a l'index principale mais en voulant me connecte aux autres fichiers ça passe pas du tout vraiment vos aides sont les bienvenues:
<?php include "config/connexion.php"; include "lib/fonction_date.php"; if(empty($_SESSION['user']))//ce code permet de mettre le fichier login en acceuil au lieu de index header('Location: //localhost/Parc_informatique/login.php'); echo "Bienvenue <b> ".$_SESSION['user']."</b>"; //le fichier index.php permet de lancer ts les fichiers de l'application ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <link href="web/css/style.css" media="screen" type="text/css" rel="stylesheet"/> <script src="web/js/jquery.js" type="text/javascript"></script> <script src="web/js/prototype.js" type="text/javascript"></script> <script src="web/js/javascript.js" type="text/javascript"></script> <link rel="stylesheet" href="web/js/jquery-ui.css" /> <script src="web/js/jquery-1.8.3.js"></script> <script src="web/js/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css" /> <title> Gestion du Parc Informatique de RMCR</title> </head> <body> <div id="menu"> // declaration des autres fichiers depuis modules <a href="index.php?page=modules/historique/index.php"><strong>Historique</strong></a> <a href="index.php?page=modules/mat/index.php"><strong>Materiel Affichage</strong></a> <a href="index.php?page=modules/user/index.php"><strong>Utilisateur</strong></a> <a href="index.php?page=modules/departement/index.php"><strong>Departement</strong></a> </div> <div id="entete"><img src="web/images/logo2.jpg"width="100px" height="59px"></div> <div id="corps"> <?php if (isset($_GET['page'])){ include ($_GET['page']); } ?> </div> <div id="pied"><strong>© RMCR 2014 </strong></div> </body> </html>
A voir également:
- Redirection avec header
- Avertissement de redirection ✓ - Forum MacOS
- Avertissement de redirection Google image - Forum Réseaux sociaux
- 400 bad request request header or cookie too large - Forum Windows
- Firfox 3 et option de redirection (désactiver ✓ - Forum Logiciels
- Redirection dangereuse - Forum Virus
22 réponses
j les fais ca me renvoi directement sur l'index sans demande d'authentification:
code login.php:
j'ai un code session.php:
j'ai un code index principaleindex.php:
code login.php:
<?php include "config/connexion.php"; include "lib/fonction_date.php"; ?> <form action= "session.php " method= "POST"> <table align="center" width="300px"> <tr> <th colspan="2">Authentification</th> </tr><br/><br/> <tr> <td>user</td> <td><input name="user" type="text"/></td> </tr><br/><br/> <td>Mot de Passe</td> <td><input name="pass" type="password"/></td> </tr><br/><br/> <tr> <td colspan="2"> <input type="submit" value="connexion"/></td> </tr> </table> </form>
j'ai un code session.php:
<?php session_start(); $user=$_POST['user']; $pass=$_POST['pass']; //ici on a juste supposé un login, tu pe faire une requete qui va verifier dans ta base si le login existe. if (($user=='zedrof' && $pass=='mariko')){ $_SESSION['user']=$user; include"index.php"; exit; } else{ echo "Login ou mot de passe incorrect!!!"; include "login.php"; }
j'ai un code index principaleindex.php:
<?php include "config/connexion.php"; include "lib/fonction_date.php"; if(empty($_SESSION['user']))//ce code permet de mettre le fichier login en acceuil au lieu de index header('Location: //localhost/Parc_informatique/login.php'); echo "Bienvenue <b> ".$_SESSION['user']."</b>"; //le fichier index.php permet de lancer ts les fichiers de l'application ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <link href="web/css/style.css" media="screen" type="text/css" rel="stylesheet"/> <script src="web/js/jquery.js" type="text/javascript"></script> <script src="web/js/prototype.js" type="text/javascript"></script> <script src="web/js/javascript.js" type="text/javascript"></script> <link rel="stylesheet" href="web/js/jquery-ui.css" /> <script src="web/js/jquery-1.8.3.js"></script> <script src="web/js/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css" /> <title> Gestion du Parc Informatique de RMCR</title> </head> <body> <div id="menu"> <a href="index.php?page=modules/historique/index.php"><strong>Historique</strong></a> <a href="index.php?page=modules/mat/index.php"><strong>Materiel Affichage</strong></a> <a href="index.php?page=modules/user/index.php"><strong>Utilisateur</strong></a> <a href="index.php?page=modules/departement/index.php"><strong>Departement</strong></a> </div> <div id="entete"><img src="web/images/logo2.jpg"width="100px" height="59px"></div> <div id="corps"> <?php if (isset($_GET['page'])){ include ($_GET['page']); } ?> </div> <div id="pied"><strong>© RMCR 2014 </strong></div> </body> </html>
toujours averc
mom problemes c'est ces href
print_r($_SESSION);print_r($_SESSION);mais la reidrection de ces pages me donne erreur
<div id="menu"> <a href="index.php?page=modules/historique/index.php"><strong>Historique</strong></a> <a href="index.php?page=modules/mat/index.php"><strong>Materiel Affichage</strong></a> <a href="index.php?page=modules/user/index.php"><strong>Utilisateur</strong></a> <a href="index.php?page=modules/departement/index.php"><strong>Departement</strong></a> </div>
mom problemes c'est ces href
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ca me renvoi toujour sur le fichier login.php puis que j vois l'index principale mais en voulant l'ouvrez ça me le login.php
J'ai un peu de mal à te comprendre ........
Reprenons .....
Ca te redirige systématiquement vers la page LOGIN.PHP ?? c'est bien ça ???
Donc.. ton souci viendrait surement de ce code là :
Donc... que ta variable $_SESSION['user'] est vide .......
Donc....
Il faut, que sur TOUTES tes pages .. tu es bien démarré les SESSIONS .. ( session_start(); )
Par contre.. dans ta page de connexion.(session.php: ).. tu refais un INCLUDE de ta page index ??
... ce n'est pas un include à mon avis .. mais une redirection qu'il te faut ...
Si tes soucis persistes .....
Dis nous avec exactitude ce qui ne fonctionne pas ...
( c'est à dire : Tu es sur quelle page ? .. tu cliques sur quoi ? il se passe quoi ? tu devrais avoir quoi ? ....)
Reprenons .....
Ca te redirige systématiquement vers la page LOGIN.PHP ?? c'est bien ça ???
Donc.. ton souci viendrait surement de ce code là :
if(empty($_SESSION['user']))//ce code permet de mettre le fichier login en acceuil au lieu de index header('Location: //localhost/Parc_informatique/login.php');
Donc... que ta variable $_SESSION['user'] est vide .......
Donc....
Il faut, que sur TOUTES tes pages .. tu es bien démarré les SESSIONS .. ( session_start(); )
Par contre.. dans ta page de connexion.(session.php: ).. tu refais un INCLUDE de ta page index ??
include"index.php";
... ce n'est pas un include à mon avis .. mais une redirection qu'il te faut ...
header("Location: index.php");
Si tes soucis persistes .....
Dis nous avec exactitude ce qui ne fonctionne pas ...
( c'est à dire : Tu es sur quelle page ? .. tu cliques sur quoi ? il se passe quoi ? tu devrais avoir quoi ? ....)
j'ai mis session_start(); en haut de tout mes pages et changer
donc elle renvoi sur l'application sans authentification mais tout les pages
include"index.php";en
header("Location: index.php");
donc elle renvoi sur l'application sans authentification mais tout les pages
c'est authentification la premiere page:
login.php
c'est session qui fait l'ouverture de session:c'est ici que j'ai print_r($_SESSION)
code session.php
session redirige vers fichiers index.php qui est la source de tout les autres fichiers
code index.php
login.php
<?php include "config/connexion.php"; include "lib/fonction_date.php"; ?> <form action= "session.php " method= "POST"> <table align="center" width="300px"> <tr> <th colspan="2">Authentification</th> </tr><br/><br/> <tr> <td>user</td> <td><input name="user" type="text"/></td> </tr><br/><br/> <td>Mot de Passe</td> <td><input name="pass" type="password"/></td> </tr><br/><br/> <tr> <td colspan="2"> <input type="submit" value="connexion"/></td> </tr> </table> </form>
c'est session qui fait l'ouverture de session:c'est ici que j'ai print_r($_SESSION)
code session.php
<?php print_r($_SESSION); $user=$_POST['user']; $pass=$_POST['pass']; //ici on a juste supposé un login, tu pe faire une requete qui va verifier dans ta base si le login existe. if (($user=='zedrof' && $pass=='mariko')){ $_SESSION['user']=$user; header("Location: index.php"); exit; } else{ echo "Login ou mot de passe incorrect!!!"; include "login.php"; }
session redirige vers fichiers index.php qui est la source de tout les autres fichiers
code index.php
<?php include "config/connexion.php"; include "lib/fonction_date.php"; session_start(); if(empty($_SESSION['user']))//ce code permet de mettre le fichier login en acceuil au lieu de index header('Location: login.php'); echo "Bienvenue <b> ".$_SESSION['user']."</b>"; //le fichier index.php permet de lancer ts les fichiers de l'application ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <link href="web/css/style.css" media="screen" type="text/css" rel="stylesheet"/> <script src="web/js/jquery.js" type="text/javascript"></script> <script src="web/js/prototype.js" type="text/javascript"></script> <script src="web/js/javascript.js" type="text/javascript"></script> <link rel="stylesheet" href="web/js/jquery-ui.css" /> <script src="web/js/jquery-1.8.3.js"></script> <script src="web/js/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css" /> <title> Gestion du Parc Informatique de RMCR</title> </head> <body> <div id="menu"> <a href="index.php?page=modules/historique/index.php"><strong>Historique</strong></a> <a href="index.php?page=modules/mat/index.php"><strong>Materiel Affichage</strong></a> <a href="index.php?page=modules/user/index.php"><strong>Utilisateur</strong></a> <a href="index.php?page=modules/departement/index.php"><strong>Departement</strong></a> </div> <div id="entete"><img src="web/images/logo2.jpg"width="100px" height="59px"></div> <div id="corps"> <?php if (isset($_GET['page'])){ include ($_GET['page']); } ?> </div> <div id="pied"><strong>© RMCR 2014 </strong></div> </body> </html>
Teste ça et dis nous ce que ça te donne :
Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
<?php session_start(); include "config/connexion.php"; include "lib/fonction_date.php"; //LE TEMPS DES TESTS: echo "<pre>Variables de session :<br>"; print_r($_SESSION); echo "</pre>"; //---------------- $User = isset($_SESSION['user'])?$_SESSION['user']:NULL; if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index //LE TEMPS DES TESTS: on desactive cette ligne : //header('Location: login.php'); echo "<pre> SESSION['user'] est vide ! </pre>"; } echo "Bienvenue <b> ".$User."</b>"; //le fichier index.php permet de lancer ts les fichiers de l'application ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <link href="web/css/style.css" media="screen" type="text/css" rel="stylesheet"/> <script src="web/js/jquery.js" type="text/javascript"></script> <script src="web/js/prototype.js" type="text/javascript"></script> <script src="web/js/javascript.js" type="text/javascript"></script> <link rel="stylesheet" href="web/js/jquery-ui.css" /> <script src="web/js/jquery-1.8.3.js"></script> <script src="web/js/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css" /> <title> Gestion du Parc Informatique de RMCR</title> </head> <body> <div id="menu"> <a href="index.php?page=modules/historique/index.php"> <strong>Historique</strong> </a> <a href="index.php?page=modules/mat/index.php"> <strong>Materiel Affichage</strong> </a> <a href="index.php?page=modules/user/index.php"> <strong>Utilisateur</strong> </a> <a href="index.php?page=modules/departement/index.php"> <strong>Departement</strong> </a> </div> <div id="entete"> <img src="web/images/logo2.jpg" width="100px" height="59px"> </div> <div id="corps"> <?php $page = isset($_GET['page'])?$_GET['page']:NULL; echo "<br> =>>> Page dans la variable GET = ".$page."<br>"; if ($page){ // on vérifie que la page existe avant d'essayer de l'inclure: if(file_exists($page)){ include($page); }else{ echo "Error ! La page ".$page." n'existe pas !"; } } ?> </div> <div id="pied"><strong>© RMCR 2014 </strong></div> </body> </html>
Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
c'est ce que ca me donne sans login directement la page index principale
Variables de session :
Array
(
[user] => zedrof
)
Bienvenue zedrof
Historique Materiel Affichage Utilisateur Departement
=>>> Page dans la variable GET =
Variables de session :
Array
(
[user] => zedrof
)
Bienvenue zedrof
Historique Materiel Affichage Utilisateur Departement
=>>> Page dans la variable GET =
j'ai redemarrer l'ordinateur jusqu'a present ca affiche la meme
Redémarré ... l'ordinateur ??
La même ... quoi ???
Tu as toujours :
Par contre... maintenant... tu peux " décommenter" la ligne :
et donc avoir :
jusqu'a present ca affiche la meme
La même ... quoi ???
Tu as toujours :
Variables de session :
Array
(
[user] => zedrof
)
Par contre... maintenant... tu peux " décommenter" la ligne :
if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index //LE TEMPS DES TESTS: on desactive cette ligne : //header('Location: login.php'); echo "<pre> SESSION['user'] est vide ! </pre>"; }
et donc avoir :
if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index header('Location: login.php'); }
j'ai desactive la ligne
Authentification
user
Mot de Passe
connexion
header('Location: login.php');mais j parvient à acceder a la page login mais avoir saisir le login et le mot de passe ça te renvoi encore sur la page login.
Authentification
user
Mot de Passe
connexion
des petits messages sont surl'ecran c'est ce que j comprend pas
Ben... c'est ce que j'ai ajouté "le temps des tests" ....
Par exemple :
//LE TEMPS DES TESTS: echo "<pre>Variables de session :<br>"; print_r($_SESSION); echo "</pre>"; //----------------
Tu peux le supprimer si tu veux.
Par contre :
tout marche mais sans login
C'est à dire ???
code page d'acceuil:
<?php session_start(); include "config/connexion.php"; include "lib/fonction_date.php"; //LE TEMPS DES TESTS: echo "<pre>Variables de session :<br>"; print_r($_SESSION); echo "</pre>"; //---------------- $User = isset($_SESSION['user'])?$_SESSION['user']:NULL; if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index //LE TEMPS DES TESTS: on desactive cette ligne : header('Location: login.php'); echo "<pre> SESSION['user'] est vide ! </pre>"; } echo "Bienvenue <b> ".$User."</b>"; //le fichier index.php permet de lancer ts les fichiers de l'application ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <link href="web/css/style.css" media="screen" type="text/css" rel="stylesheet"/> <script src="web/js/jquery.js" type="text/javascript"></script> <script src="web/js/prototype.js" type="text/javascript"></script> <script src="web/js/javascript.js" type="text/javascript"></script> <link rel="stylesheet" href="web/js/jquery-ui.css" /> <script src="web/js/jquery-1.8.3.js"></script> <script src="web/js/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css" /> <title> Gestion du Parc Informatique de RMCR</title> </head> <body> <div id="menu"> <a href="index.php?page=modules/historique/index.php"> <strong>Historique</strong> </a> <a href="index.php?page=modules/mat/index.php"> <strong>Materiel Affichage</strong> </a> <a href="index.php?page=modules/user/index.php"> <strong>Utilisateur</strong> </a> <a href="index.php?page=modules/departement/index.php"> <strong>Departement</strong> </a> </div> <div id="entete"> <img src="web/images/logo2.jpg" width="100px" height="59px"> </div> <div id="corps"> <?php $page = isset($_GET['page'])?$_GET['page']:NULL; echo "<br> =>>> Page dans la variable GET = ".$page."<br>"; if ($page){ // on vérifie que la page existe avant d'essayer de l'inclure: if(file_exists($page)){ include($page); }else{ echo "Error ! La page ".$page." n'existe pas !"; } } ?> </div> <div id="pied"><strong>© RMCR 2014 </strong></div> </body> </html>
Mais ce que si j peut remplace cette partie dans le code session.php puisque c'est zedrof seul qui peut se connecter:
if (($user=='zedrof' && $pass=='mariko')){
$_SESSION['user']=$user;
header("Location: index.php");
exit;
par une requette qui peut permettre tout utilisateur à se connecter avec un login et un mot de mt de passe
if (($user=='zedrof' && $pass=='mariko')){
$_SESSION['user']=$user;
header("Location: index.php");
exit;
par une requette qui peut permettre tout utilisateur à se connecter avec un login et un mot de mt de passe
Pour remplacer la connexion via un USER pré-défini comme tu l'as fait par une requête...
Il te suffit de faire un SELECT dans ta BDD pour vérifier si le user existe..
Déjà.. il faudrait que nous sachions comment tu te connectes à ta BDD...
Tu utilises quoi ? Mysql / MysqlI / PDO ??
Montres ton code de connexion à ta BDD
Il te suffit de faire un SELECT dans ta BDD pour vérifier si le user existe..
Déjà.. il faudrait que nous sachions comment tu te connectes à ta BDD...
Tu utilises quoi ? Mysql / MysqlI / PDO ??
Montres ton code de connexion à ta BDD
code de connexion ala base:
<?php // pour se connecter a notre base sous phpmyadmin $hote='localhost'; $base='parc'; $utilisateur='root'; $mot_de_passe=''; $connexion= new PDO('mysql:host='.$hote.'; dbname='.$base, $utilisateur,$mot_de_passe);
Ok donc tu utilises la PDO.
Donc maintenant... tu dois avoir une table contenant les utilisateurs qui peuvent se connecter je suppose..
Une table 'user' .... avec Login , Passord , nom , prenom ...etc.....
Il faut donc que tu fasses, dans ta page session.php, un SELECT du genre :
Et si la requête te retourne bien un résultat..alors c'est qu'il peut se connecter...
Donc maintenant... tu dois avoir une table contenant les utilisateurs qui peuvent se connecter je suppose..
Une table 'user' .... avec Login , Passord , nom , prenom ...etc.....
Il faut donc que tu fasses, dans ta page session.php, un SELECT du genre :
SELECT * FROM tableUser WHERE login = '$user' AND password = '$password'
Et si la requête te retourne bien un résultat..alors c'est qu'il peut se connecter...
j'ai prepare une requette
code session.php
mais ca me donne
Array ( )
( ! ) Notice: Undefined variable: connexion in C:\wamp\www\Parc_informatique\session.php on line 9
Call Stack
# Time Memory Function Location
1 0.0043 370912 {main}( ) ..\session.php:0
( ! ) Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\Parc_informatique\session.php on line 9
Call Stack
# Time Memory Function Location
1 0.0043 370912 {main}( ) ..\session.php:0
code session.php
<?php session_start(); print_r($_SESSION); $user=$_POST['user']; $pass=$_POST['pass']; //ici on a juste supposé un login, tu pe faire une requete qui va verifier dans ta base si le login existe. $req= $connexion->prepare("SELECT * FROM table_utilisateur WHERE user = '$user' AND pass = '$pass'"); $resultat = $req->execute(); if ($resultat!==1){ $_SESSION['user']=$user; header('Location: index.php'); exit; } else{ echo "Login ou mot de passe incorrect!!!"; include "login.php"; }
mais ca me donne
Array ( )
( ! ) Notice: Undefined variable: connexion in C:\wamp\www\Parc_informatique\session.php on line 9
Call Stack
# Time Memory Function Location
1 0.0043 370912 {main}( ) ..\session.php:0
( ! ) Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\Parc_informatique\session.php on line 9
Call Stack
# Time Memory Function Location
1 0.0043 370912 {main}( ) ..\session.php:0
Forcément.....
Tu dois inclure ta page contenant la connexion à ta BDD ....
Mais.. dis voir... loin de moi l'idée d'être désagréable... mais il faudrait peut être que tu maitrise un minimum les bases du PHP avant de te lancer le dev non ?
Tu as suivi des tutos sur le net ????
Car pour l'instant.. toutes les questions ou presque... que tu poses .. sont du niveau "débutant" ....
Tu dois inclure ta page contenant la connexion à ta BDD ....
include "config/connexion.php";
Mais.. dis voir... loin de moi l'idée d'être désagréable... mais il faudrait peut être que tu maitrise un minimum les bases du PHP avant de te lancer le dev non ?
Tu as suivi des tutos sur le net ????
Car pour l'instant.. toutes les questions ou presque... que tu poses .. sont du niveau "débutant" ....
non j l'ai juste fais en classe de 4eme MIAGE donc j'ai aimé la matière donc j suis dans un e/se qui m'as demande de faire ça c'est pourquoi j me jeter sans suivi beaucoup de cours costo sur php et Mysql mais avec vraiment l'aides du forums j'ai pu le faire c'est la deniere et j compter commence à prendre des cours costo là dessus mais maintena :
tout login et mot de passe saisi acceder sans controle
tout login et mot de passe saisi acceder sans controle
mais avec vraiment l'aides du forums j'ai pu le faire
Le truc.. c'est que pour l'instant tu copie/colle le code que je te donne... sans le comprendre...
Ce n'est surement pas comme ça que tu vas apprendre !
c'est la deniere et j compter commence à prendre des cours costo là dessus
Le problème.. c'est que les notions dont je te parle ... ne sont pas d'un HAUT niveau...
Ce sont les BASES à connaitre avant même de commencer à coder !
Enfin bref... je veux bien continuer à essayer de t'aider ... mais le souci... c'est que je ne comprend pas ce que tu dis :
mais maintena :
tout login et mot de passe saisi acceder sans controle
Je pense qu'il faut que tu modifies le code de tes pages de la manière suivante:
Dans ta page : session.php
<?php session_start(); include "config/connexion.php"; //-------------------------------------- // Le temps des tests : echo "<pre> Variables POST :<br>"; print_r($_POST); echo "</pre>"; //-------------------------------------- //********************************// // Recupération des variables : //********************************// $user=isset($_POST['user']) && $_POST['user'] !=''?$_POST['user']:NULL; $pass=isset($_POST['pass']) && $_POST['pass'] !=''?$_POST['pass']:NULL; //********************************// // Préparation de la requete: //********************************// $sql = "SELECT * FROM table_utilisateur WHERE user = '".$user."' AND pass = '".$pass."'"; //-------------------------------------- // Le temps des tests : echo "<pre> La Requete est :<br>"; echo $sql; echo "</pre>"; //-------------------------------------- //********************************// // Execution de la requete: //********************************// $req= $connexion->prepare($sql); $resultat = $req->execute(); if ($resultat){ $_SESSION['user']=$user; unset($_SESSION['error_login']); header('Location: index.php'); exit; }else{ $_SESSION['error_login'] = "Login ou mot de passe incorrect!!!"; header('Location: login.php'); } ?>
PAGE Login.php
<?php session_start(); include "config/connexion.php"; include "lib/fonction_date.php"; //Recuperation du message d'erreur s'il existe $msgError = isset($_SESSION['error_login']) ?$_SESSION['error_login']:NULL; if($msgError){ echo "<div id='zone_message_erreur'> <pre>".$msgError."</pre> </div>"; } ?> <form action= "session.php " method= "POST"> <table align="center" width="300px"> <tr> <th colspan="2">Authentification</th> </tr><br/><br/> <tr> <td>user</td> <td><input name="user" type="text"/></td> </tr><br/><br/> <td>Mot de Passe</td> <td><input name="pass" type="password"/></td> </tr><br/><br/> <tr> <td colspan="2"> <input type="submit" value="connexion"/></td> </tr> </table> </form>
NB : j'ai ajouté (encore..) des blocs : "// Le temps des tests :" ... que tu pourras supprimer lorsque tes pages fonctionneront correctement.
En attendant ça permet de faire du débogage et de comprendre ce qui peut ne pas marcher !
NB2 : Attention à ne pas confondre les INCLUDE avec les HEADER LOCATION... tu sembles te méprendre sur leur fonctionnement !!!
NB3 : Comme tu peux le voir.. j'utilise régulièrement l'instruction ISSET .. si tu ne sais pas à quoi elle sert .. regardes ici : https://www.php.net/manual/fr/function.isset.php
NB4 : J'utilise également l'écriture "ternaire" ...
par exemple :
$msgError = isset($_SESSION['error_login']) ?$_SESSION['error_login']:'';
Là aussi .. si tu ne sais pas ce que c'est ... regarde ici :
https://www.php.net/manual/fr/language.operators.comparison.php
=> Ce qui veut dire :
La syntaxe de l'opérateur ternaire est la suivante :
echo $var = (expression vérifiée) ? affiche valeur 1 si test vérifié : affiche valeur 2 si test non vérifié;
j'ai coupe colle mais toujours n'importe quelle user et pass peut acceder a l'application etant donne qu'il n'existe pas dans la table(table_utilisateur):
Mais quand à moi j dirai qu'il peut se qu'ils y a une erreur sur la
la syntaxe de l'operateur ternaire puisque
permet si j comprend bien de faire une comparaison entre duex valeur tandisque ici la seul variable declare est:
Mais quand à moi j dirai qu'il peut se qu'ils y a une erreur sur la
la syntaxe de l'operateur ternaire puisque
$msgError = isset($_SESSION['error_login']) ?$_SESSION['error_login']:'';
permet si j comprend bien de faire une comparaison entre duex valeur tandisque ici la seul variable declare est:
error_login
REPRENONS depuis le début :
- Déjà... pour que nous soyons bien d'accord... tu laisses TOUS les ECHO / PRINT que j'ai ajouté dans ton code ( Le temps des tests..) JUSQU'A ce que ton site fonctionne... ok ??
Donc :
Première page ...
page : login.php
page : session.php :
==>> Remplaces tes fichiers par ces codes...
et colle nous ici le résultat de ce qui est affiché sur les pages !
Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
- Déjà... pour que nous soyons bien d'accord... tu laisses TOUS les ECHO / PRINT que j'ai ajouté dans ton code ( Le temps des tests..) JUSQU'A ce que ton site fonctionne... ok ??
Donc :
Première page ...
<?php session_start(); include "config/connexion.php"; include "lib/fonction_date.php"; //LE TEMPS DES TESTS: echo "<pre>Variables de session :<br>"; print_r($_SESSION); echo "</pre>"; //---------------- $User = isset($_SESSION['user'])?$_SESSION['user']:NULL; if(empty($User)) {//ce code permet de mettre le fichier login en acceuil au lieu de index //LE TEMPS DES TESTS: on desactive cette ligne : header('Location: login.php'); echo "<pre> SESSION['user'] est vide ! </pre>"; } echo "Bienvenue <b> ".$User."</b>"; //le fichier index.php permet de lancer ts les fichiers de l'application ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <link href="web/css/style.css" media="screen" type="text/css" rel="stylesheet"/> <script src="web/js/jquery.js" type="text/javascript"></script> <script src="web/js/prototype.js" type="text/javascript"></script> <script src="web/js/javascript.js" type="text/javascript"></script> <link rel="stylesheet" href="web/js/jquery-ui.css" /> <script src="web/js/jquery-1.8.3.js"></script> <script src="web/js/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css" /> <title> Gestion du Parc Informatique de RMCR</title> </head> <body> <div id="menu"> <a href="index.php?page=modules/historique/index.php"> <strong>Historique</strong> </a> <a href="index.php?page=modules/mat/index.php"> <strong>Materiel Affichage</strong> </a> <a href="index.php?page=modules/user/index.php"> <strong>Utilisateur</strong> </a> <a href="index.php?page=modules/departement/index.php"> <strong>Departement</strong> </a> </div> <div id="entete"> <img src="web/images/logo2.jpg" width="100px" height="59px"> </div> <div id="corps"> <?php $page = isset($_GET['page'])?$_GET['page']:NULL; echo "<br> =>>> Page dans la variable GET = ".$page."<br>"; if ($page){ // on vérifie que la page existe avant d'essayer de l'inclure: if(file_exists($page)){ include($page); }else{ echo "Error ! La page ".$page." n'existe pas !"; } } ?> </div> <div id="pied"><strong>© RMCR 2014 </strong></div> </body> </html>
page : login.php
<?php session_start(); include "config/connexion.php"; include "lib/fonction_date.php"; //Recuperation du message d'erreur s'il existe $msgError = isset($_SESSION['error_login']) ?$_SESSION['error_login']:NULL; if($msgError){ echo "<div id='zone_message_erreur'> <pre>".$msgError."</pre> </div>"; } ?> <form action= "session.php " method= "POST"> <table align="center" width="300px"> <tr> <th colspan="2">Authentification</th> </tr><br/><br/> <tr> <td>user</td> <td><input name="user" type="text"/></td> </tr><br/><br/> <td>Mot de Passe</td> <td><input name="pass" type="password"/></td> </tr><br/><br/> <tr> <td colspan="2"> <input type="submit" value="connexion"/></td> </tr> </table> </form>
page : session.php :
<?php session_start(); include "config/connexion.php"; //-------------------------------------- // Le temps des tests : echo "<pre> Variables POST :<br>"; print_r($_POST); echo "</pre>"; //-------------------------------------- //********************************// // Recupération des variables : //********************************// $user=isset($_POST['user']) && $_POST['user'] !=''?$_POST['user']:NULL; $pass=isset($_POST['pass']) && $_POST['pass'] !=''?$_POST['pass']:NULL; //********************************// // Préparation de la requete: //********************************// $sql = "SELECT * FROM table_utilisateur WHERE user = '".$user."' AND pass = '".$pass."'"; //-------------------------------------- // Le temps des tests : echo "<pre> La Requete est :<br>"; echo $sql; echo "</pre>"; //-------------------------------------- //********************************// // Execution de la requete: //********************************// $req= $connexion->prepare($sql); $resultat = $req->execute(); if ($resultat){ $_SESSION['user']=$user; unset($_SESSION['error_login']); //-------------------------------------- // Le temps des tests : echo "<pre> Variables de session:<br>"; print_r($_SESSION); echo "</pre>"; //-------------------------------------- //header('Location: index.php'); exit; }else{ // destruction des variables de session session_destroy(); $_SESSION['error_login'] = "Login ou mot de passe incorrect!!!"; //-------------------------------------- // Le temps des tests : echo "<pre> Variables de session:<br>"; print_r($_SESSION); echo "</pre>"; //-------------------------------------- //header('Location: login.php'); } ?>
==>> Remplaces tes fichiers par ces codes...
et colle nous ici le résultat de ce qui est affiché sur les pages !
Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
j'arrive sur login :
Authentification
user
Mot de Passe
et apres validation ça me donne
Variables POST :
Array
(
[user] => zedrof
[pass] => mariko
)
La Requete est :
SELECT * FROM table_utilisateur
WHERE user = 'zedrof'
AND pass = 'mariko'
Variables de session:
Array
(
[user] => zedrof
)
Authentification
user
Mot de Passe
et apres validation ça me donne
Variables POST :
Array
(
[user] => zedrof
[pass] => mariko
)
La Requete est :
SELECT * FROM table_utilisateur
WHERE user = 'zedrof'
AND pass = 'mariko'
Variables de session:
Array
(
[user] => zedrof
)
Bizarre... si ta requête ne retourne aucun résultat.. tu ne devrais pas entrer dans le IF ....
Essayes ça :
(dans : session.php)
Essayes ça :
(dans : session.php)
<?php session_start(); include "config/connexion.php"; //-------------------------------------- // Le temps des tests : echo "<pre> Variables POST :<br>"; print_r($_POST); echo "</pre>"; //-------------------------------------- //********************************// // Recupération des variables : //********************************// $user=isset($_POST['user']) && $_POST['user'] !=''?$_POST['user']:NULL; $pass=isset($_POST['pass']) && $_POST['pass'] !=''?$_POST['pass']:NULL; //********************************// // Préparation de la requete: //********************************// $sql = "SELECT * FROM table_utilisateur WHERE user = '".$user."' AND pass = '".$pass."'"; //-------------------------------------- // Le temps des tests : echo "<pre> La Requete est :<br>"; echo $sql; echo "</pre>"; //-------------------------------------- //********************************// // Execution de la requete: //********************************// $req= $connexion->prepare($sql); $resultat = $req->execute(); $NbRow = $resultat->rowCount(); //-------------------------------------- // Le temps des tests : echo "<pre> NbRows =".$NbRow ."</pre>"; echo "<pre>Resultat :<br>"; print_r($resultat); echo "</pre>"; //-------------------------------------- if ($NbRow >=1){ $_SESSION['user']=$user; unset($_SESSION['error_login']); //-------------------------------------- // Le temps des tests : echo "<pre> Variables de session:<br>"; print_r($_SESSION); echo "</pre>"; //-------------------------------------- //header('Location: index.php'); exit; }else{ // destruction des variables de session session_destroy(); $_SESSION['error_login'] = "Login ou mot de passe incorrect!!!"; //-------------------------------------- // Le temps des tests : echo "<pre> Variables de session:<br>"; print_r($_SESSION); echo "</pre>"; //-------------------------------------- //header('Location: login.php'); } ?>
Bonjour
Bizarre... si ta requête ne retourne aucun résultat.. tu ne devrais pas entrer dans le IF
Si car $resultat = $req->execute(); rend TRUE à partir du moment où il n'y a pas d'erreur, peu importe le nombre de réponses.
Dans ce cas, il valait mieux faire une requête SELECT COUNT(*)... et tester la valeur rendue. Tu proposes une solution avec rowCount qui marche certainement aussi, mais attention, rowCount sur un SELECT ne marche pas avec toutes les bases de données.
Bizarre... si ta requête ne retourne aucun résultat.. tu ne devrais pas entrer dans le IF
Si car $resultat = $req->execute(); rend TRUE à partir du moment où il n'y a pas d'erreur, peu importe le nombre de réponses.
Dans ce cas, il valait mieux faire une requête SELECT COUNT(*)... et tester la valeur rendue. Tu proposes une solution avec rowCount qui marche certainement aussi, mais attention, rowCount sur un SELECT ne marche pas avec toutes les bases de données.