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 :

Forum avec mot de passe [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Forum avec mot de passe
    Bonjour à tous,

    J'ecris car j'ai un petit probleme de mot de passe sur un forum.
    J'ai créer une premier page: connect_forum.php qui demande un code pour acceder à une deuxieme page: forum_fli.php.
    Il y a deux choix: j'ai pas le bon code, il affiche mot depasse incorrect sinon il m'affiche la page forum_fli.
    Une fois que l'on n'est sur cette page, on peut inserer un nouveau sujet (donc nouvelle page: insert_sujet.php).
    Mais lorsque je clique sur poster le nouveau sujet il m'amene sur la page mot de passe incorrect....
    Je pense que le mot de passe n'est pas gardé en mémoire sur les différentes pages mais je n'arrive pas à voir comment faire?
    Donc si quelqu'un pouvait m'aider,MERCI


    connect_forum.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
    <? include("inc/front.inc.php"); ?>
    <?
     
    ?>
    <? include("inc/header.inc.php"); ?>
    <? include("inc/site-haut.inc.php"); ?>
     
              <div id="divConteneurContenu">
    			<h1 id="h1TitrePage">Forum FLI</h1>
       <div id="divConteneurTraitVertical">
    	</div>
     
    	<center>
     
    		<p>Veuillez entrer le mot de passe pour accéder au forum FLI:</p>
    		<form action="forum_fli.php" method="post">
    			<p>
    			<input type="password" name="mot_de_passe" />
    			<input type="submit" value="Valider" />
    			</p>
    		</form>
    		<p>Cette page est réservée au Formateur FLI.</p>
     
    	</center>
     
     
    <? include("inc/site-bas.inc.php"); ?>


    forum_fli.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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    <? include("inc/front.inc.php"); ?>
    <
    ?>
    <? include("inc/header.inc.php"); ?>
    <? include("inc/site-haut.inc.php"); ?>
     
     
     
            <?php
    	if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] ==  "xx") // Si le mot de passe est bon
    	{
    	// On affiche les codes
    	?>
     
     
              <div id="divConteneurContenu">
    			<h1 id="h1TitrePage">Forum FLI</h1>
       <div id="divConteneurTraitVertical">
    	</div>
     
     
    <center>
     
     
    <!-- on place un lien permettant d'accéder à la page contenant le formulaire d'insertion d'un nouveau sujet -->
    <a href="./insert_sujet.php">Insérer un sujet</a>
     
    <br /><br />
     
    <?php
    // on se connecte à notre base de données
    $base = mysql_connect ('xx', 'xx','xx');
    mysql_select_db ('xx', $base) ;
     
    // préparation de la requete
    $sql = 'SELECT id, auteur, titre, date_derniere_reponse FROM forum_sujets ORDER BY date_derniere_reponse DESC';
     
    // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    // on compte le nombre de sujets du forum
    $nb_sujets = mysql_num_rows ($req);
     
    if ($nb_sujets == 0) {
    	echo 'Aucun sujet';
    }
    else {
    	?>
    	<table width="500" border="1"><tr>
    	<td>
    	Auteur
    	</td><td>
    	Titre du sujet
    	</td><td>
    	Date dernière réponse
    	</td></tr>
    	<?php
    	// on va scanner tous les tuples un par un
    	while ($data = mysql_fetch_array($req)) {
     
    	// on décompose la date
    	sscanf($data['date_derniere_reponse'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
     
    	// on affiche les résultats
    	echo '<tr>';
    	echo '<td>';
     
    	// on affiche le nom de l'auteur de sujet
    	echo htmlentities(trim($data['auteur']));
    	echo '</td><td>';
     
    	// on affiche le titre du sujet, et sur ce sujet, on insère le lien qui nous permettra de lire les différentes réponses de ce sujet
    	echo '<a href="./lire_sujet.php?id_sujet_a_lire=' , $data['id'] , '">' , htmlentities(trim($data['titre'])) , '</a>';
     
    	echo '</td><td>';
     
    	// on affiche la date de la dernière réponse de ce sujet
    	echo $jour , '-' , $mois , '-' , $annee , ' ' , $heure , ':' , $minute;
    	}
    	?>
    	</td></tr></table>
    	<?php
    }
     
    // on libère l'espace mémoire alloué pour cette requête
    mysql_free_result ($req);
    // on ferme la connexion à la base de données.
    mysql_close ();
     
    ?>
     
    </center>
     
     <?php
     
    	}
     
    	else // Sinon, on affiche un message d'erreur
     
    	{
            echo '<h1 id="h1TitrePage">Forum FLI</h1>';
     
    		echo '<div align="center"><p>Mot de passe incorrect</p>';
     
    		echo '<a href="http://www.r.com/connect_forum.php">Retour au forum</a>';
     
     
     
    	}
    ?>
     
     
    <? include("inc/site-bas.inc.php"); ?>
    insert_sujet.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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    <? include("inc/front.inc.php"); ?>
    <?
     
    ?>
    <? include("inc/header.inc.php"); ?>
    <? include("inc/site-haut.inc.php"); ?>
     
              <div id="divConteneurContenu">
    			<h1 id="h1TitrePage">Forum FLI</h1>
    			<!--<div id="divConteneurTraitVertical">-->
     
     
     
    <?php
    // on teste si le formulaire a été soumis
    if (isset ($_POST['go']) && $_POST['go']=='Poster') {
    	// on teste la déclaration de nos variables
    	if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['message'])) {
    		$erreur = 'Les variables nécessaires au script ne sont pas définies.';
    	}
    	else {
    		// on teste si les variables ne sont pas vides
    		if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['message'])) {
    			$erreur = 'Au moins un des champs est vide.';
    		}
     
    		// si tout est bon, on peut commencer l'insertion dans la base
    		else {
    			// on se connecte à notre base
    			$base = mysql_connect ('xx', 'xx', 'xx');
    			mysql_select_db ('xx', $base) ;
     
    			// on calcule la date actuelle
    			$date = date("Y-m-d H:i:s");
     
    			// préparation de la requête d'insertion (pour la table forum_sujets)
    			$sql = 'INSERT INTO forum_sujets VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.$date.'")';
     
    			// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    			// on recupère l'id qui vient de s'insérer dans la table forum_sujets
    			$id_sujet = mysql_insert_id();
     
    			// lancement de la requête d'insertion (pour la table forum_reponses
    			$sql = 'INSERT INTO forum_reponses VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['message']).'", "'.$date.'", "'.$id_sujet.'")';
     
    			// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    			// on ferme la connexion à la base de données
    			mysql_close();
     
    			// on redirige vers la page d'accueil
    			//header('location: forum_test.php');
     
    ?>
     
     
    			<SCRIPT LANGUAGE="JavaScript">
    			document.location.href="forum_fli.php" /* vous pouvez aussi mettre http://www.monsite.com */
    			</SCRIPT>
     
    <?php
     
    			// on termine le script courant
    			exit;
    		}
    	}
    }
    ?>
     
     
     
    <html>
    <head>
    <title>Insertion d'un nouveau sujet</title>
    </head>
     
    <body>
     
    <!-- on fait pointer le formulaire vers la page traitant les données -->
    <form action="insert_sujet.php" method="post">
     
    <br>
     
    <table align="center">
    <tr><td>
    <span class="gras">Auteur :</span>
    </td><td>
    <input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Titre :</span>
    </td><td>
    <input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Message :</span>
    </td><td>
    <textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
    </td></tr><tr><td><td align="right">
    <input type="submit" name="go" value="Poster">
    </td></tr></table>
    </form>
     
     
     
    <?php
    // on affiche les erreurs éventuelles
    if (isset($erreur)) echo '<br /><br />',$erreur;
    ?>
    </body>
    </html>
     
     
    <? include("inc/site-bas.inc.php"); ?>

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    Plusieurs choses :
    Tu as plusieurs possibilités pour garder ton mot de passe en mémoire, par le biais des variables de SESSION ( le tuto du cours php en parle ) ou de cookies par exemple.
    Un petit conseil à la lecture de ton script : crypte ton mot de passe ( là tu l'envoie en clair donc n'importe qui capable de lire le contenu de ta variable connait ton vrai mot de passe. Il y a des fonctions comme $mdp = md5($mdp);
    qui te permette de crypter ton mot de passe. il ne te reste plus qu'à tester si le mot de passe crypté est le même que celui que tu teste ( par exemple si le mot de passe du membre est "abc" imaginons que la fonction de cryptage le transforme en A02FBG47EFB6A02FBG, tu teste : if($mdp == 'A02FBG47EFB6A02FBG' ).

    Après je t'ai donné l'exemple de la fonction md5() mais sache que c'est une solution très ancienne que je ne donne qu'à titre d'exemple, tu peux utiliser d'autres algorythmes comme SHA-512 etc ... ( cherche les fonctions de cryptages de php )

    Pour finir, je te conseille de lire un article sur les "Injections SQL" et les "Failles XSS" pour savoir comment protéger les données que tu envoies par le biais d'un formulaire ( tu devrais utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlentities($_POST['mot_de_passe'])
    au lieu de par exemple

    En espérant avoir pu t'aider.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Forum avec mot de passe
    Merci pour les conseils, je vais tester pour voir ce que ça donne!
    Encore merci et bonne soirée

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Forum avec mot de passe
    bonjour,

    Alors j'ai essayé de rajouter htmlentities mais cela ne marche pas....
    idem pour md5, pourriez vous me donner un exemple de codage parce que j'ai cherché sur internet et je trouve plein de code différent!
    Merci

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    la fonction htmlentities et les fonctions de cryptages comme md5 te permettent uniquement de sécuriser ton mdp, pas de le garder en cas de rafrachissement.
    Pour ça la solution la plus simple reste les sessions: tutorial ici ( une explication sur leur but ici ).
    En gros : l'utilisateur arrive sur la page pour se logguer, il tappe son mot de passe, tu le testes ( ça tu le fais déjà ). Ensuite deux solutions en fonction de ce que tu veux faire.
    Soit tu stock betement le mdp en session ( et il y a beaucoup mieux en matière de sécurité ) en suivant les règles expliquées sur le tuto que je te donne plus haut ( comme par exemple de déclarer les sessions avant tout affichage html ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['mdp'] = $mdp;
    et pour récupérer la valeur sur l'autre page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mdp = $_SESSION['mdp']
    L'autre solution ( la bonne je pense ) est de faire un espace membre. Quand l'internaute entre son mot de passe, tu le vérifies, puis s'il est bon, tu créés des variables de sessions contenant son login, son statut ( le type de membre : admin, utilisateur etc ... ).
    Et ensuite dans toutes les autres pages, au lieu de tester le mot de passe, tu testes l'existence de la variable de session $_SESSION['login'] par exemple.
    Si elle existe, c'est que l'utilisateur est connecté.
    J'espère avoir été assez clair, sinon, je reviendrai

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Forum avec mot de passe
    Bonjour et encore merci de te pencher sur mon probleme!
    Oui je reconnaîs que l'idée de faire un espace membre est mieux mais j'ai juste des delais de temps à respecter c'est pour cela que j'utilise la méthode plus simple. Mais dans un futur proche je ferais l'espace membre.

    J'ai testé de mettre le code dans ma premiere page (forum_fli.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['mdp'] = $mdp;
    Et celui là dans l'autre (insert_sujet.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mdp = $_SESSION['mdp']
    Mais rien à faire j'ai toujours le même probleme, lorsque je poste une nouvelle discussion il me renvoit le message votre mot de passe est incorrect.Alors qu'il prends en compte les valeurs ajoutées quand même!!!

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu dis ne pas avoir de temps, mais tu en perds beaucoup avec ce code compliqué et incompréhensible;
    Par exemple ou trouves tu cette phrase "votre mot de passe est incorrect"
    je ne le vois pas dans ton code
    Peux-tu clarifier tout cela et donner le code complet après toutes tes modifications ?
    merci
    Christele

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    Essaye de nous montrer ton code avec les modifications, par exemple as tu mis l'instruction session_start(); au début de tes pages ? Si non, tu devrais lire les liens que je t'ai donné car utiliser les sessions si tu ne comprends pas comment elles fonctionnent, où est l'intérêt ( et surtout, comment vas tu pouvoir le refaire pour quand tu voudras faire ton espace membre ).

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Forum avec mot de passe
    Bonjour Christele et tout d'abord merci de ton aide!
    Et oui pour le temps perdu j'avais pas prévu mais il fallait que je regle le forum pour début septembre....
    Pour l'exemple, le mot de passe est incorrect est à la fin de la page forum_fli.
    En fait mes employeurs veulent un forum avec accés privé donc sur la page forum_fli avant de voir le forum, il faut passer par accés avec code et s'il y a un mauvais code il refuse l'accés.
    Pour le code il 'a pas changé de celui que j'ai mis au début car j'ai essayé htmlentites, addslashes et de crypté les mots de passe mais rien ne fonctionné donc je l'ai pas laissé....

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Forum avec mot de passe
    Bonjour Kuchiki,

    oui je pense qu'il va falloir que je prenne du temps pour lire les liens que vous m'avez donné parce que j'ai essayé de mettre le mdp et les session_start() mais de tout ce que j'ai testé rien n'a marchait!

    Bonne journée

  11. #11
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    A mon avis, si tu les lis, tu vas comprendre très vite, mais essayer sans comprendre, c'est comme vouloir jouer du hendrix sans jamais avoir touché une guitare
    En tout cas, si tu fais celà pour un employeur, je te conseille vivement de faire une section membre parce que l'exemple avec le $_SESSION['mdp'] est plus qu'à bannir pour un milieu professionnel ( comme je te l'ai dit, le mdp est facilement récupérable ). bonne chance

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Forum avec mot de passe
    ok ça marche merci en tout cas!
    Et bonne continuation

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

Discussions similaires

  1. probleme de connexion à une base sql avec mot de passe
    Par cari dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 16/12/2005, 10h16
  2. BD access avec Mot de passe et controle Data DAO
    Par twizell dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/11/2005, 22h22
  3. Copy de fichier sur réseau avec mot de passe
    Par Guile dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 07/10/2005, 15h45
  4. acceder a un fichier avec mot de passe
    Par moa378 dans le forum Windows
    Réponses: 16
    Dernier message: 17/05/2005, 12h15
  5. [VB.NET] Fichier Excel vérouillé avec mot de passe
    Par rafano dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/06/2004, 14h36

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