Bonjour,
tout d'abord je tiens à dire que je suis débutant en PHP. Cependant en un peu moins d'un mois (j'apprends le XHTML et CSS aussi, je peux pas trop tout faire en même temps!) j'arrive à pondre quelque chose de pondable (lol).
J'ai un projet de site pour une association de taille moyenne. On est bien d'accord que le plus important est le contenu du site et la qualité des articles. Mais pour le "style" et parce-que je profite de l'occasion pour me former à PHP, j'aimerais créer un "espace membre" ou plutôt j'aimerais que les membres puissent se connecter (pseudo / passe) et qu'une fois connectés, certains liens leur soient visibles (par exemple celui du panneau d'administration pour un admin).
je vais vous balancer les codes de mes 3 seules pages pour l'instant :
Ca marche, j'ai pas de bug mais j'aimerais, si vous avez 5 minutes, que vous me dites si la syntaxe est bonne, si des expressions sont à oublier, et surtout si le fait de reconnaitre un user uniquement avec les variables de Session est bon (trou de sécurité, ça peut me poser pb pour la suite du dev ? ...) ou tout autre remarque sera la bienvenu
index
functions.inc.php
Code : 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 <?PHP session_start(); require( 'inc/fonctions.inc.php' ); ?> <!-- DocType etc. --> <head> <!-- ... --> </head> <body> <div id="en_tete"> <table id="a_la_une"> <tr> <td><?PHP afficher_alaune(); ?></td> </tr> </table> </div> <div id="corps"> <div id="contenu"> <?PHP afficher_contenu( $_GET[ 'page' ] ); ?> </div> <div id="menu"> <div id="connexion"><?PHP include( "connexion.php" ); ?></div> <ul class="rubriques_du_site"> <li class="lien"><a href="?page=accueil">Page d'accueil</a></li> </ul> <ul class="rubriques_du_site"> <li class="rubrique">Rubrique 1</li> <!-- Je zappe ça nous intéresse plus ... --> </body> </html>
Et là très important :-)
Code : 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 <?PHP // -- JE RAPPELLE QUE TOUT LE SITE REPOSE SUR LA PAGE index.php (CHOIX PERSONNEL). // -- NE PAS OUBLIER QUE NOUS NOUS TROUVONS DANS index.php... EN EN-TETE. if( !(defined( 'CHEMIN_ALAUNE' )) ) { define( 'CHEMIN_ALAUNE' , '' ); } if( !(defined( 'CHEMIN_PAGES' )) ) { define( 'CHEMIN_PAGES' , '' ); } function afficher_alaune() { $alaune = file( CHEMIN_ALAUNE . 'alaune.txt' ); echo( '<h2>' . $alaune[0] . '</h2>' ); echo( '<h3>' . $alaune[1] . '</h3>' ); echo( '<h1>' . $alaune[2] . '</h1>' ); fclose( $alaune ); } function afficher_contenu( $page ) { //---Variables des pages--- $accueil = CHEMIN_PAGES . 'accueil.php'; $informations_sur_le_site = CHEMIN_PAGES . 'i_site.php'; //---Variables des pages--- if( empty( $page ) ) { $page = 'accueil'; } if( empty( $$page ) ) { // Nom de page incorrect ! } else { include( $$page ); } } function rafraichir() // Ecrit le script JavaScript qui va bien pour rafraichir une page... { echo( '<script language="Javascript">' ); echo( 'window.location.reload();' ); echo( '</script>' ); } ?>
connexion.php
Code : 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 <?PHP // -- JE RAPPELLE QUE TOUT LE SITE REPOSE SUR LA PAGE index.php (CHOIX PERSONNEL). // -- NE PAS OUBLIER QUE NOUS NOUS TROUVONS DANS index.php... DANS LE DIV "CONNEXION" LUI MEME SE TROUVANT DANS LE DIV "MENU" // DONC LA PAGE index.php SE (RE-)CHARGE : if( isset( $_SESSION[ 'pseudo' ] ) && isset( $_SESSION[ 'prenom' ] ) && isset ( $_SESSION[ 'droit' ] ) ) // Les variables de session 'pseudo' ET 'prenom' ET 'droit' EXISTENT ! { echo( 'Bonjour ' . $_SESSION[ 'prenom' ] . ' !<br />' ); switch ( $_SESSION[ 'droit' ] ) // On pointe le "pouvoir". {/* En construction... case 0: // Internaute break; case 1: // ... break; case 2: // ... break; ...En construction */ case 3: // Administrateur echo '<a href="admin/">Administration du site</a>'; break; } // ===Fin du switch=== } else // Les variables de session 'pseudo' ET 'prenom' ET 'droit' N'existent PAS ! { if( isset( $_POST[ 'valider' ] ) && !( empty( $_POST[ 'pseudo' ] ) || empty( $_POST[ 'passe' ] ) ) ) // Formulaire VALIDE ET ( les variables post 'pseudo' OU 'passe' NE sont PAS vides ). { $db = mysql_connect( 'localhost:8889', 'root', 'root' ); // Connexion à la base de données. mysql_select_db( 'test', $db ); // Sélection de la base. $sql = 'SELECT pseudo, prenom, passe, droit FROM utilisateurs WHERE pseudo = \'' . $_POST[ 'pseudo' ] . '\''; // Création de la requête. $req = mysql_query( $sql ); // Requête :-) if( mysql_num_rows( $req ) > 0 ) // Le nombre de lignes (nombre d'enregistrements du coup) correspondant à la requête est SUPERIEUR à 0. // En clair il y a au moins 1 enregistrement (1 seul possible normalement...). { $passe = md5( $_POST[ 'passe' ] ); $data = mysql_fetch_assoc( $req ); if( $passe == $data[ 'passe' ] ) // Mot de passe CORRECT ! { $_SESSION[ 'pseudo' ] = $data[ 'pseudo' ]; $_SESSION[ 'prenom' ] = $data[ 'prenom' ]; $_SESSION[ 'droit' ] = $data[ 'droit' ]; rafraichir(); } else // Mot de passe INCORRECT ! { $_SESSION[ 'message_echec' ] = 'mot de passe incorrect !'; rafraichir(); } } else // Le nombre de lignes correspondant à la requête N'est PAS SUPERIEUR à 0. (pas d'enregistrement...) { $_SESSION[ 'message_echec' ] = 'le pseudo ' . $_POST[ 'pseudo' ] . ' n\'existe pas !'; rafraichir(); } mysql_close( $db ); } else { // Affichage du formulaire de connexion. if( isset( $_SESSION[ 'message_echec' ] ) ) { echo '<em>' . $_SESSION[ 'message_echec' ] . '</em>'; } else { echo '<strong>Identifiez-vous !</strong>'; } echo '<form method="post" action="">'; echo 'Nom d\'utilisateur <input type="text" name="pseudo" /> '; echo '<br />Mot de passe <input type="password" name="passe" /> '; echo '<input type="submit" name="valider" value="Connexion" />'; echo '</form>'; } } ?>
Partager