IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Forcer à passer par connexion.php


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    développeur web
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut Forcer à passer par connexion.php
    Bonjour,

    J'ai un problème pour me connecter à mon espace administration de mon site. La connexion se fait bien mais est inutile car en tapant l'adresse dans le navigateur d'une page par exemple localhost/client/cms/actu.php le lien est accessible savoir avoir été redirigé sur connexion.php qui se trouve au même endroit.

    Alors j'ai créer un controlSession.php qui contrôle si la session login existe et quand je vais dans le lien localhost/client/cms/actu.php ça marque bien qu'il faut se connecter avec un lien vers connexion.php mais là dès que je me connecte, toujours pareil, veuillez vous connecter.

    controlSession.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    if ((!isset($_SESSION['login'])) || ($_SESSION['login'] == ''))
    {
    	// La variable $_SESSION['login'] n'existe pas, ou bien elle est vide
    	// <=> la personne ne s'est PAS connectée
    	echo '<p>Vous devez vous <a href="connexion.php">connecter</a>.</p>'."\n";
    	exit();
    }
     
    ?>

    histoire.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    <?php 
     
    require 'ressource/actuRessource.php';
    require 'ressource/controlSession.php';
     
    ?>
     
     
    <!DOCTYPE html>
    <html lang="fr">
     <head>
     <meta charset="utf-8" />
     <title>Administration Morand</title>
     
     <link rel="stylesheet" href="../css/mainCms.css" type="text/css" />
     
     
     
     </head>
     
     <body>
     
     
     <div id="nav">
     
    	 <ul>
    		 <li><a class="aMenu" href="histoire.php">Histoire</a></li>
    		 <li><a class="aMenu" href="savoirfaire.php">Savoir-faire</a></li>
    		 <li><a class="aMenu" href="produits.php">Produits</a></li>
    		 <li><a class="aMenu" href="recettes.php">recettes</a></li>
    		 <li><a class="aMenu" id="deco" href="logout.php">Se déconnecter</a></li>
    	 </ul>
     
     </div>
     
     
     
     
     
     
    <div id="fondcms">
     	<header id="titleCms">
     		<h4>Espace administration Morand</h4><h6>Ajouter / Supprimer une histoire</h6>
     	</header>
     
     
     
    		 <p>Ici vous pouvez ajouter ou supprimer une histoire. Celle-ci apparaîtra automatiquement sur la page d'accueil.</p>
     
    			 <form method="post" action="histoire.php">
     
    				 <label for="titre">Titre de l'actualité</label>
    		 		 <input id="titre" name="titre" type="text" required /> <!-- Remplir ce champ est requis -->
    		 <br/>
    				 <label for="desc">Description </label>
    				 <textarea id="desc" name="desc"></textarea> <!-- Remplir ce champ est requis -->
    		 <br/>
    				 <input type="submit" value="Créer">
    		 	</form>
     
    	 <header>
     		<h5>Histoire déjà publiées</h5>
     	 </header>
     
     </div>
     
     
     
     
     
     
     <!-- boucle affichant les dernières actus -->
     <ul id="news">
    	 <?php
    		 foreach($news as $nw) # Boucle qui affiche les news
    		 {
    			 echo '
    					 <li>
    						 <article>
    							 <header>
    								 <h5>'.$nw['title'].'</h5>
    							 </header>
    
    						 <div>
    							<p>'.$nw['text'].'</p>
     		
    								 <div>
    								 	<p><a href="histoire.php?delete='.$nw['id'].'" class="supp">Supprimer</a></p>
    								 </div>
     		
    						 </div><!-- /.entry-content -->
    						 
    						 </article>
    					</li>';
    		 }
    	?>
     </ul>
     
     
     
     <footer id="footer_site">
    	 <p id="copyright">© Morand Tous droits réservés</p>	
     </footer>
     
     
     <!--[if lte IE 8]></div> <! [endif]-->
    </body>
    </html>

    histoireRessource.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <?php
     
    #Connexion base de donnée
    include_once 'idents.php';
     
     
     
    #Token
     
     
    date_default_timezone_set('Europe/Zurich'); # Définition du Time Zone
     
    $token = '';
    if(isset($_COOKIE['token']) && !empty($_COOKIE['token']))
    	$token = $_COOKIE['token']; # Récupération des Cookies & Ou Sessions
     
    $token = $token; # Protection des Injection SQL ect...
    $login_q = $bdd->prepare("SELECT * FROM users WHERE token = :token AND valid = '1'");
    $login_q->execute(array(
    		'token' => $token
    ));
     
    if($login_q->fetchColumn() < 0) # Si login pass et valid nok
    {
    	header('Location: connexion.php'); # Redirection
     
    	exit();
    }
     
     
     
     
    #Remplissage Histoire
     
     
    if(isset($_POST['titre'], $_POST['desc'])) # Création d'une news
    {
    	if(!empty($_POST['titre']) && !empty($_POST['desc']))
    	{
     
    		$title = $_POST['titre'];
    		$text =$_POST['desc'];
     
    		$insert_q = $bdd->prepare("INSERT INTO news VALUES ('', :title, :text, '1')"); # Insertion dans la table d'une nouvelle news (:date)
    		$insert_q->execute(array(
    		':text' => $text,
    		':title' => $title,
     
    		));
    	}
    }
     
     
    $news = array();
     
    $selectAll_q = $bdd->prepare("SELECT id, title, text, valid FROM news WHERE valid = '1'"); # Selection de toutes les news valides
    $selectAll_q->execute();
     
    while($result = $selectAll_q->fetch(PDO::FETCH_ASSOC))
    {
    	$news[] = $result; # Replissage du tableau avec ces valeurs
    }
     
     
     
     
    #Effacer
     
    if(isset($_GET['delete']) && !empty($_GET['delete'])) # Si le paramètre delete est spécifié dans l'URL
    {
    	$id = $_GET['delete']; # Protection des Injection SQL ect...
    	$delete_q = $bdd->prepare("UPDATE news SET valid = '0' WHERE id = :id");
    	$delete_q->execute(array(
    			'id' => $id
    	));
    }

    Comme vous pouvez le voir, j'ai éssayé avec un ''token'' mais si je marque ''if($login_q->fetchColumn() == 0) (ce qui devrait normalement être le cas? ça me redirige tout le temps à ma page connexion.php)


    MySQL

    table : users avec à l'intérieur : id clé primaire, login, pass, mail, token, token_date et valid

    Comment je pourrais faire que quand je met un lien direct sans me connecter je sois rediriger vers connexion.php car je me suis pas connecté ?

    Je précise que j'ai un session_start(); dans mon idents.php qui est la connexion à la base de donnée et si j'ajouter un session_start(); dans un seul de ces fichiers ça me mets qu'il l'ignore car il y a deja session_start();

    D'avance merci !

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut,

    ça me parait simple.

    Lorsque quelqu'un se connecte, tu stocke une info d'identification dans un session S_SESSION['USER'] par exemple.

    dans controlSession.php, tu vérifie que cette variable existe et qu'elle soit bien implémenté, sinon, tu redirige vers la page de connexion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    if(!isset($_SESSION['USER']) OR $_SESSION['USER'] == "")
    header("Location: connexion.php");
    ?>
    Bien sur, les sessions doivent être active et la variable session doit être implémenté, et cette vérification ne doit par être faite dans la page connexion.php sous peine de redirection en boucle.


    J'espère avoir bien saisie ta demande...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il faut mettre dans TOUS les fichiers d'admin (sauf dans connexion.php !) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once ('ressource/controlSession.php');

    et controlSession.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    if( empty($_SESSION['login']) )
       header("Location: connexion.php");
       exit;
    ?>
    A toi de créer $_SESSION['login'] dans connexion.php si l'utilisateur entre bien ses paramètres de connexion.
    Ou à la supprimer dans le cas contraire.

  4. #4
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut session start
    Hello,
    je me permets de rajouter un ch'ti truc à la réponse très claire de jreaux62, un truc qui m'a plusieurs fois rendu fou quand je débutais en php (et qui n'apparait pas dans ton code):
    dès que tu te sers des SESSIONS, si ce n'est déjà fait, mets le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    session_start();
    ...


    EDIT: oups, désolé, j'avais survolé trop vite tes deux dernières lignes... my bad

  5. #5
    Membre à l'essai
    Homme Profil pro
    développeur web
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup ça réponds à ma question !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/11/2014, 08h52
  2. Réponses: 2
    Dernier message: 19/04/2006, 13h43
  3. Réponses: 4
    Dernier message: 19/01/2006, 14h34
  4. Réponses: 2
    Dernier message: 06/01/2005, 21h09
  5. [PHP-JS] Envoi de variable sans passer par un submit
    Par adilou1981 dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2004, 19h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo