Problème de connexion, sécurité
Résolu
Gui4671
Messages postés
33
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai fait une page de connexion (identifiant et mdp) qui redirige vers la page d'accueil si les informations sont correctes. Les informations de connexion se trouve dans une BDD.
Je souhaite mettre sur la page d'accueil un lien qui permet à chacun de se déconnecter.
Mais je souhaite surtout empêcher l'accès à la page d'accueil s'il n'y a pas eu de connexion. (Redirection sur la page de connexion.) Je n'arrive pas à bloquer l'accès si pas de connexion, comment faire?
Voici ma page de connexion:
Voici ma page d'accueil:
Et enfin voici ma page pour la bdd:
Comme a mon habitude mes erreurs sont surement débiles mais je ne les vois pas... Je demande donc un petit coup de pouce :)
Merci d'avance pour votre aide.
EDIT : Correction des balises de code (jordane)
J'ai fait une page de connexion (identifiant et mdp) qui redirige vers la page d'accueil si les informations sont correctes. Les informations de connexion se trouve dans une BDD.
Je souhaite mettre sur la page d'accueil un lien qui permet à chacun de se déconnecter.
Mais je souhaite surtout empêcher l'accès à la page d'accueil s'il n'y a pas eu de connexion. (Redirection sur la page de connexion.) Je n'arrive pas à bloquer l'accès si pas de connexion, comment faire?
Voici ma page de connexion:
<?php include('connexion.php'); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Connexion</title> <style> body { background: rgba(255,221,95,1); } header { height: 210px; border: 2px solid black; text-align: center; padding: 10px; margin: 20px; } ul#menu_horizontal li { display : inline; padding : 0 0.5em; border: 1px black; } ul#menu_horizontal { list-style-type : none; } p { text-align: center; } table { text-align: center; margin: auto; width: 95%; } footer { height: 100px; border: 2px solid black; text-align: center; padding: 10px; margin: 5px; } a { border: 1px blue; } </style> </head> <body> <header> <br> <h1>Bienvenue sur le serveur de Guillaume.B</h1> <h2>MAINTENANCE</h2> <p>Site de gestion indisponible jusqu'au 30-01-19 à 00h00. Veuillez nous excuser!</p> <ul id="menu_horizontal"> <li><a style="color: blue" href="accueil.php">Accueil</a></li> <li><a style="color: blue" href="index.php">Me <?php if(isset($_SESSION['user'])){echo"dé";}?>connecter</a></li> <li><a style="color: blue" href="contactadm.php">Contacter l'administrateur</a></li> <li><a style="color: blue" href="inscription.php">S'inscrire</a></li> </ul> </header> <br> <br> <?php if(isset($_SESSION['user'])) { session_unset(); session_destroy(); header('Location: accueil.php'); } else { if(!empty($_POST)) { // Tentative de connexion $valid=true; if(!isset($_POST['username']) || empty($_POST['username'])) { echo "<div class='bandeau bandeau-error'>Merci de renseigner votre identifiant.</div>"; $valid=false; } if(!isset($_POST['password']) || empty($_POST['password'])) { echo "<div class='bandeau bandeau-error'>Merci de renseigner votre mot de passe.</div>"; $valid=false; } if($valid) { $username = htmlspecialchars($_POST['username']); $password = htmlspecialchars($_POST['password']); $result = test_connexion($dbh, $username, $password); if(count($result)>=1){ $user_infos = $result[0]; $_SESSION["user"]=$user_infos; header('Location: index.php'); echo "u"; } else { echo "<div class='bandeau bandeau-error'>Identifiants incorrects.</div>"; } } } } ?> <table border=1 width=100% align="center" cellspacing=0 cellpadding=0 > <tr> <td width="100%"><h3>Me connecter:</h3> <form method="POST" action="index.php"> <input type="text" name="username" placeholder="Identifiant" required/> <input type="password" name="password" placeholder="Mot de passe" required/> <input type="submit" /><br /><br /> </form> </td> </table> <p>Si vous avez perdu votre mot de passe, veuillez cliquer sur le lien suivant et suivre les instructions suivantes. <a href="mdpperdu.php">Mot de passe oublié?</a></p> </body> </html>
Voici ma page d'accueil:
<?php include('connexion.php'); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Accueil</title> <style> body { background: rgba(255,221,95,1); margin: 5px; } header { height: 220px; border: 2px solid black; text-align: center; padding: 10px; margin: 5px; } table { text-align: center; margin: auto; width: 90%; } ul#menu_horizontal li { display : inline; padding : 0 0.5em; border: 1px black; } ul#menu_horizontal { list-style-type : none; } a { border: 1px blue; } </style> </head> <body> <header> <br> <h1>Serveur Guillaume.B</h1> <h2>Accueil:</h2> <ul id="menu_horizontal"> <li><a href="accueil.php">Accueil</a></li> <li><a href="codeur.php">Codeur/Décodeur</a></li> <li><a href="/gestion/connexion.php">Site de gestion</a></li> <li><a style="color: blue" href="contactadm.php">Contacter l'administrateur</a></li> <?php if(isset($_SESSION['user'])){ ?> <li><a href="update-password.php">Changer mot de passe</a></li> <?php } ?> <li><a style="color: red" href="index.php">Me <?php if(isset($_SESSION['user'])){echo"dé";}?>connecter</a></li> </ul> </header> <br> <br> <section> <table style="text-align: center" border=1 width=90% height="50px" align="center" cellspacing=0 cellpadding=0 > <tr> <td> Notre codeur-décodeur permet de discuter avec un language illisible sans traduction. La traduction des mots, phrases, textes se fait sur le site. Cliquez sur le lien pour coder ou décoder.<br> <a href="codeur.php">Codeur/Décodeur</a> </td> </tr> </table> <br> <table style="text-align: center" border=1 width=90% height="50px" align="center" cellspacing=0 cellpadding=0> <tr> <td> Le site de gestion n'est pas disponible avant le 02-02-19. Le site de gestion est destiné à la gestion complète d'une association. Cliquez sur le lien pour accéder au site de gestion. L'accès est limité aux membres de l'association. <br> <a href="/gestion/connexion.php">Site de gestion</a> </td> </tr> </table> <br> <table style="text-align: center" border=1 width=90% height="50px" align="center" cellspacing=0 cellpadding=0> <tr> <td> Si vous souhaitez modifier votre mot de passe, cliquez sur le lien ci-dessous...<br> <a href="update-password.php">Changer son mot de passe.</a> </td> </tr> </table> </section> </body> </html>
Et enfin voici ma page pour la bdd:
<?php ob_start(); session_start(); $current_page = basename($_SERVER['PHP_SELF']); if($current_page !="accueil.php" && $current_page != "index.php" && !isset($_SESSION['user'])) { header('Location: index.php'); } ?> <style> html, body { margin: 0; padding: 0; } .bandeau { padding: 10px; width: 100%; color: white; text-align: center; margin-bottom: 20px; font-weight: bold; font-family: "Comic Sans MS", cursive, sans-serif; } .bandeau-error{ background-color: #d92626; } .bandeau-success{ background-color: #33A13B; } </style> <?php $host_name = 'db771354560.hosting-data.io'; $database = 'db771354560'; $user_name = 'dbo771354560'; $password = 'MON MDP'; $dbh = null; try { $dbh = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password); $dbh->exec('SET NAMES utf8'); } catch (PDOException $e) { echo "Erreur!: " . $e->getMessage() . "<br/>"; die(); } function add_connexion($dbh, $nom, $prenom, $email, $username, $password){ try { $stmt = $dbh->prepare("INSERT INTO connexion (nom, prenom, email, username, password, role) VALUES(:nom, :prenom, :email, :username, :password, 1)"); $stmt->bindParam(':nom', $nom); $stmt->bindParam(':prenom', $prenom); $stmt->bindParam(':email', $email); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); return false; } catch(Exception $e) { return false; } } function test_connexion($dbh, $username, $password) { $stmt = $dbh->prepare("SELECT * FROM connexion WHERE username=:username AND password=:password"); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); $row = $stmt->fetchAll(); // return false return $row; } function update_infos($dbh, $nom, $prenom, $email, $username, $password){ try { $stmt = $dbh->prepare("UPDATE connexion SET nom=:nom, prenom=:prenom, email=:email, username=:username, password=:password WHERE id=:id"); $stmt->bindParam(':nom', $nom); $stmt->bindParam(':prenom', $prenom); $stmt->bindParam(':email', $email); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); return true; } catch(Exception $e) { return false; } } ?>
Comme a mon habitude mes erreurs sont surement débiles mais je ne les vois pas... Je demande donc un petit coup de pouce :)
Merci d'avance pour votre aide.
EDIT : Correction des balises de code (jordane)
Configuration: Windows / Firefox 64.0
A voir également:
- Problème de connexion, sécurité
- Gmail connexion - Guide
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Mode securite - Guide
- Connexion chromecast - Guide
- Gmail connexion autre compte - Guide
1 réponse
Bonjour,
Sur les pages à sécuriser.. il te suffit de vérifier si ta variable de session est remplie
Dans le cas contraire.. tu rediriges vers ta page de connexion.
NB:A l'avenir, pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Sur les pages à sécuriser.. il te suffit de vérifier si ta variable de session est remplie
Dans le cas contraire.. tu rediriges vers ta page de connexion.
NB:A l'avenir, pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Si je me connecte, je suis redirigé vers ma page d'accueil mais je n'ai pas accès à la variable session.
Si je met des mauvais identifiants, ça me mets bien le message d'erreur.
Donc remplacer le bloc
par uniquement
Peux tu nous montrer ton code modifié (attention à bien utiliser les balises de code cette fois )