Je suis un parcours sur OCR. Je dois réalisé un site (blog) pour un écrivain. le backend doit donc être protegé par un login + mdp
Je n'arrive pas à écrire mon routeur. Je ne suis pas loin de la solution mais je bloque pour encadrer l'ensemble de mes pages backend dans l'espace membre adim.
Quelqu'un peut-il y jeter un oeil pour m'aider ?
merci d'avance
<?php
require('controller/c.backend.php');
try{
if (isset($_GET['action'])){
if (($_POST['login'] == "forteroche") && ($_POST['mot_de_passe'] == "kangourou")){
if ($_GET['action'] == 'listposts') {
listposts_admin();}
// ajout de post
elseif ($_GET['action'] == 'newpost') {
newpost_admin();}
elseif ($_GET['action'] == 'addpost'){
if (!empty($_POST['title']) && !empty($_POST['content'])){
addpost_admin($_POST['title'], $_POST['content']);}
else {
echo 'tous les champs ne sont pas remplis';}
}
elseif ($_GET['action'] == 'post'){
if (isset($_GET['id']) && $_GET['id'] > 0){
post_admin();}
else{
echo 'Erreur : aucun identifiant de billet envoyé';}
}
// supprimer le post
elseif ($_GET['action'] == 'deletedpost'){
if (isset($_GET['id']) && $_GET['id'] > 0){
deletedpost_admin($_GET['id']);}
else{
echo 'Erreur : aucun identifiant de billet envoyé. Suppresion impossible' ;}
}
// supprimer un commentaire
elseif ($_GET['action'] == 'deletecomment'){
if (isset($_GET['id']) && $_GET['id'] > 0){
deletecomment_admin($_GET['id'], $_GET['post_id']);}
else{
echo 'Erreur : les données sont fausses ou incomplètes';}
}
else {
echo 'login/mdp erronés ou incomplets';}
}
}
else{
home_admin();}
}
catch(Exeption $e)
{
echo 'Erreur : ' . $e->getMessage();
}
- Edité par carolineber 29 mai 2018 à 10:22:45
Je poursuis des émotions, je trébuche dans des regards et je collectionne des cicatrices
Le problème vient du fait que tu dois passer le login et le mot de passe à chaque fois que tu fais une action. Le mieux serait de mettre en session comme quoi il est connecté.
<?php
session_start();
// Dans un autre fichier
function loginAdmin()
{
if (!empty($_POST)) {
$login = $_POST['login'] ?? null;
$pass = $_POST['pass'] ?? null;
if ($login === "forteroche" && $pass === "kangourou") {
$_SESSION['connected'] = true;
}
}
header('Location: /index.php?action=home');
}
// Ton routing
// Le mieux serait de faire un vrai router (même en procédural c'est possible)
$action = $_GET['action'] ?? null;
// Les routes non admin
if ($action === 'home') {
// Page d'accueil avec le formulaire de connexion
homeAdmin();
exit();
}
if ($action === 'login') {
// Page de traitement du formulaire de connexion
loginAdmin();
exit();
}
// Les routes pour les admins seulement
function isLogged()
{
return $_SESSION['connected'] ?? false;
}
if (isLogged()) {
if ($action === 'listposts') {
listPosts();
exit();
}
if ($action === 'newpost') {
newPost();
exit();
}
}
header('Location: /index.php?action=home');
J'ai passé du temps sur ta suggestion Quenti77, ainsi que sur un manuel PHP7 mais étant encore débutante, je n'ai pas tout compris. Je me suis finalement reportée sur cette vidéo , très claire pour moi
J'ai suivi le déroulé sans pbl mais j'ai un pbl de connexion :
Si je ne met pas mon login, j'ai bien error 1 qui s'affiche
mais si je ne met pas de mdp ou s'il est faut, j'ai ça qui s'affiche (ps : je travail en local sur wampserveur)
"Erreur Interne du Serveur
Le serveur a rencontré une erreur interne ou une mauvaise configuration et n'a pas pu terminer votre requête.
Contactez l'administrateur du serveur à l'adresse wampserver@wampserver.invalid pour les informer du moment où cette erreur s'est produite et des actions que vous avez effectuées juste avant cette erreur.
Plus d'informations sur cette erreur peuvent être disponibles dans le journal des erreurs du serveur"
Voici ma page de connexion
<?php $title = 'Billet simple pour l\'Alaska'; ?>
<?php
$error = isset($_GET['error']) ? $_GET['error'] : '';
$password = isset($_GET['password']) ? $_GET['password'] : '';
?>
<?php ob_start(); ?>
<div class="jumbotron">
<h1>BILLET SIMPLE POUR L'ALASKA</h1>
</br>
<h5>Jean, depuis cette interface d'administration, vous pouvez ajouter, modifier ou supprimer un épisode de votre livre. </br> Vous pouvez également modérer les commentaires de vos lecteurs</br> Travaillez bien !</h5>
</div>
<div class="form_admin creme rounded">
<h5>Jean, Veuillez entrer votre login et votre mot de passe pour accéder à "Billet simple pour l'Alaska" :</h5>
<form action="session-login.php" method="post">
<p>
</br>
<input type="text" name="login" placeholder="Votre login" />
</br>
</br>
<input type="password" name="password" placeholder="Votre mot de passe"/>
</br>
</br>
<input type="submit" value="Se connecter" />
</p>
</form>
</div>
<?php $content = ob_get_clean(); ?>
<?php
switch ($error) {
case 1:
echo "Merci de saisir un login";
break;
case 2:
echo "Le mot de passe n'est pas valide...";
break;
case 3:
echo "vous avez été deconnecté";
break;
}
?>
<?php require ("template_admin.php"); ?>
<?php $title = 'Billet simple pour l\'Alaska';
$error = isset($_GET['error']) ? $_GET['error'] : '';
$password = isset($_GET['password']) ? $_GET['password'] : '';
?>
<div class="jumbotron">
<h1>BILLET SIMPLE POUR L'ALASKA</h1>
</br>
<h5>Jean, depuis cette interface d'administration, vous pouvez ajouter, modifier ou supprimer un épisode de votre livre. </br> Vous pouvez également modérer les commentaires de vos lecteurs</br> Travaillez bien !</h5>
</div>
<div class="form_admin creme rounded">
<h5>Jean, Veuillez entrer votre login et votre mot de passe pour accéder à "Billet simple pour l'Alaska" :</h5>
<form action="session-login.php" method="post">
<p>
</br>
<input type="text" name="login" placeholder="Votre login" />
</br>
</br>
<input type="password" name="password" placeholder="Votre mot de passe"/>
</br>
</br>
<input type="submit" value="Se connecter" />
</p>
</form>
</div>
<?php
switch ($error) {
case 1:
echo "Merci de saisir un login";
break;
case 2:
echo "Le mot de passe n'est pas valide...";
break;
case 3:
echo "vous avez été deconnecté";
break;
}
require ("template_admin.php"); ?>
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
N'oubliez pas d'activer les erreurs PDO.