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 !
Partager