Partage
  • Partager sur Facebook
  • Partager sur Twitter

Need Help pour routeur. interface admin Login/mdp

    29 mai 2018 à 10:22:30

    Bonjour

    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

    • Partager sur Facebook
    • Partager sur Twitter
    Je poursuis des émotions, je trébuche dans des regards et je collectionne des cicatrices
      29 mai 2018 à 10:56:56

      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');
      


      C'est qu'un exemple mais c'est l'idée. Après comme je l'ai mis j'aurai plus fait un router comme celui que j'ai fait pour un exemple de code MVC en procédurale : https://github.com/quenti77/forumDemo/blob/master/app/routes/admin.php

      • Partager sur Facebook
      • Partager sur Twitter
        29 mai 2018 à 11:00:44

        Bonjour

        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"); ?>
        
        

        la page session-login.php

        <?php
        $login = isset ($_POST['login']) ? $_POST ['login'] : '' ;
        $password = isset ($_POST['password']) ? $_POST ['password'] : '' ;
        
        if ($login == '') {
        	header('Location: home_admin.php?error=1');
        }
        elseif ($password != "kangourou") {
        	header('Location : home_admin.php?error=2');
        }
        else{
        	session_start();
        	$_SESSION['login'] = $login;
        	$_SESSION['password'] = $password;
        	$_SESSION['logged'] = true;
        
        header('Location : listposts.php');
        }

        et celle de verif

        <?php
        
        session_start();
        
        if(!isset($_SESSION['logged']) && !$_SESSION['logged']) {
        	header('Location: home_admin.php?error=3');
        }
        
        $login = isset($_SESSION['login']) ? $_SESSION['login'] : '' ;
        
        ?>


        D'où vient cette erreur et comment la corriger ???

        Merci d'avance

        -
        Edité par carolineber 30 mai 2018 à 11:01:20

        • Partager sur Facebook
        • Partager sur Twitter
        Je poursuis des émotions, je trébuche dans des regards et je collectionne des cicatrices
          30 mai 2018 à 13:31:14

          Bonjour,

          Déjà petit nettoyage :

          <?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"); ?>
          <?php
          $login = isset ($_POST['login']) ? $_POST ['login'] : '' ;
          $password = isset ($_POST['password']) ? $_POST ['password'] : '' ;
           
          if ($login == '') {
              header('Location: home_admin.php?error=1');
          }
          elseif ($password != "kangourou") {
              header('Location : home_admin.php?error=2');
          }
          else{
              session_start();
              $_SESSION['login'] = $login;
           header('Location : listposts.php');
          }



          • Partager sur Facebook
          • Partager sur Twitter

          Need Help pour routeur. interface admin Login/mdp

          × 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.
          • Editeur
          • Markdown