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 :

Formulaire protégé par mot de passe


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Formulaire protégé par mot de passe
    Bonjour à tous,

    Suite de mon projet formulaire, j'aimerais le rendre exclusivement accessible par un mot de passe. J'ai trouvé un script qui pourrait convenir, mais lors de l'envoi du formulaire il me retourne le message prévu lors de l'entrée du mot de passe normalement ("Mot de passe incorrect").
    Serait-il possible que les boutons "submit" entre en conflit et si oui comment corriger cela svp ?

    index.php (mdp: root)
    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
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Page protégée par mot de passe</title>
        </head>
        <body>
            <p>Veuillez entrer le mot de passe:</p>
            <form action="formulaire.php" method="post">
                <p>
                <input type="password" name="mot_de_passe" />
                <input type="submit" value="Valider" />
                </p>
            </form>
        </body>
    </html>
    formulaire.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
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Formulaire</title>
        </head>
        <body>
     
            <?php
        if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] ==  "root") 
        {
        ?>
            <form method="post">
            <label>Nom</label>
            <input type="text" name="nom" required>
            <label>Email</label>
            <input type="email" name="email" required>
            <label>Message</label>
            <textarea name="message" required></textarea>
            <input type="submit">
        </form>
            <?php
    		if(isset($_POST['message'])){
            $entete  = 'MIME-Version: 1.0' . "\r\n";
            $entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
            $entete .= 'From: ' . $_POST['email'] . "\r\n";
     
            $message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
            <p><b>Nom : </b>' . $_POST['nom'] . '<br>
            <b>Email : </b>' . $_POST['email'] . '<br>
            <b>Message : </b>' . $_POST['message'] . '</p>';
     
            $retour = mail('monadresse@mail.com', 'Envoi depuis page Contact', $message, $entete);
            if($retour) {
                echo '<p>Votre message a bien été envoyé.</p>';
            }
        }
        ?>    
        <?php
        }
        else 
        {
            echo '<p>Mot de passe incorrect</p>';
        }
        ?>
     
     
        </body>
    </html>

  2. #2
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Hello,

    Nom : okk.gif
Affichages : 77
Taille : 2,9 Ko

    Preuve que ces deux pages sont correctement codées.

    Car suite à saisie "root" ça pointe directo sur formulaire.php

    Je parle exclusivement de cette entrée sur ton formulaire, après avoir tapé le MDP, rien de plus.

    DS7

    Edit : arffff oui ! si l'on tente ensuite de remplir le véritable formulaire protégé, oui en effet, ça raconte "Mot de passe incorrect".

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Droïde Système7 Voir le message
    Preuve que ces deux pages sont correctement codées.

    Car suite à saisie "root" ça pointe directo sur formulaire.php
    Oui mais c'est lors de l'envoi du formulaire que le problème ce passe. Il retourne le message Mot de passe incorrect, sûrement lié avec l'autre submit

  4. #4
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Oui c'est ce que je viens de tester et aussi j'ai modifié mon précédent message.

    Je regarde...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    J'ai trouvé une solution fonctionnel mais le message mdp apparait toujours, et c'est moi qui avait mal structurer mon code..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
            }
            else 
            {
                echo '<p>Mot de passe incorrect</p>';
            }
        ?>
    Ce code doit-être mis en dessous de if (isset($_POST['mot_de_passe']) et non en dessous de if(isset($_POST['message'])) comme je l'avais mis..

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    En clair:

    formulaire.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
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Formulaire</title>
        </head>
        <body>
     
            <?php
        if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] ==  "root") 
        {
        ?>
     
        <?php
             }
             else 
             {  
            echo '<p>Mot de passe incorrect</p>';
        }
        ?>
     
            <form method="post">
            <label>Nom</label>
            <input type="text" name="nom" required>
            <label>Email</label>
            <input type="email" name="email" required>
            <label>Message</label>
            <textarea name="message" required></textarea>
            <input type="submit">
        </form>
            <?php
    		if(isset($_POST['message'])){
            $entete  = 'MIME-Version: 1.0' . "\r\n";
            $entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
            $entete .= 'From: ' . $_POST['email'] . "\r\n";
     
            $message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
            <p><b>Nom : </b>' . $_POST['nom'] . '<br>
            <b>Email : </b>' . $_POST['email'] . '<br>
            <b>Message : </b>' . $_POST['message'] . '</p>';
     
            $retour = mail('monadresse@mail.com', 'Envoi depuis page Contact', $message, $entete);
            if($retour) {
                echo '<p>Votre message a bien été envoyé.</p>';
            }
        }
        ?>    
     
     
        </body>
    </html>

  7. #7
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    C'est justement ce que je venais de me rendre compte,

    Suite, je regarde

  8. #8
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    J'ai tout remanié à ma sauce, mais existe un hic que je ne réussis pas à fixer : pour quelle raison l'appel de la page formulaire.php, efface t'il l'enregistrement sur fichier MDP.txt ?!

    Car en virant : action="formulaire.php" hé bien ça prouve l'écriture correcte du fichier.

    Bref, voici la page index.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
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Page protégée par mot de passe</title>
        </head>
        <body>
     
    		<?php
    			// Ecriture
    			file_put_contents('MDP.txt', ($_POST['mot_de_passe']));	
    		?>	
     
     
            <p>Veuillez entrer le mot de passe:</p>
            <form action="formulaire.php" method="post">
    		<!-- Afin de vérifier si écriture en fichier :
    		<form method="post"> 
    		-->
                <p>
    				<input type="text" name="mot_de_passe" id="mot_de_passe" value="<? echo (S_POST['mot_de_passe']); ?>" />
    				<input type="submit" value="Valider" />
                </p>
    		</form>
     
     
    			<?php
    				// Lecture
    				$recup_MDP = file_get_contents('MDP.txt'); 
    				echo 'La récup est : ' .$recup_MDP;
    			?>			
     
        </body>
    </html>
    et la page formulaire.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
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Formulaire</title>
        </head>
        <body>
     
    		<?php
    			$mdp = 'root';
    			$recup_MDP = file_get_contents('MDP.txt'); 
     
    			echo 'Mon mot de passe saisi en index.php : '.$recup_MDP. '<br />';
     
    			if ($recup_MDP <> $mdp) 
    			{
    				echo 'MDP erroné !';
    				exit;
    			}		
    			else
     
    			{
    				echo'
    				<form method="post">
    					<label>Nom</label>
    					<input type="text" name="nom" required>
    					<label>Email</label>
    					<input type="email" name="email" required>
    					<label>Message</label>
    					<textarea name="message" required></textarea>
    					<input name="submit" type="submit">
    				</form>';
     
     
    				//if(isset($_POST['message']))
    				if (isset($_POST['submit'])) 	
    				{
    					$entete  = 'MIME-Version: 1.0' . "\r\n";
    					$entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    					$entete .= 'From: ' . $_POST['email'] . "\r\n";
     
    					$message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
    					<p><b>Nom : </b>' . $_POST['nom'] . '<br>
    					<b>Email : </b>' . $_POST['email'] . '<br>
    					<b>Message : </b>' . $_POST['message'] . '</p>';
     
    					if (mail('contact@xxxxxxxxx.com', 'Envoi depuis page Contact', $message, $entete))
    					{
    						echo '<p>Votre message a bien été envoyé.</p>';
    					}
    					else
    					{
    						echo 'Envoi loupé !';
    					}		
    				}
    			}	
     
     
     
    		?>
     
        </body>
    </html>
    Si le temps ne passait pas si vite...

    @ +

    DS7

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Super, merci beaucoup à toi je regarde ça de plus prêt en fin de journée ;)

  10. #10
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Hello,

    Fallait pas taguer ce thread en résolu, pas si vite

    Je confirme qu'en principe tout doit être ok SAUF cette mémorisation en MDP.txt qui s'efface au submit de formulaire.php

    Pour confirmation suffit de tester sur la page formulaire avec légère modif shuntant l'appel à ce fichier MDF.txt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recup_MDP = 'root'; //file_get_contents('MDP.txt');
    @+

    DS7

  11. #11
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Hello,

    Un truc m'échappe !

    J'avais précédemment testé en mémorisant le mot de passe tapé en page "index.php" via un fichier .txt = cette mémorisation s'efface automatiquement en arrivant en page "formulaire.php"

    Ci-dessous en utilisant la méthode des SESSIONS :

    Page index2.php qui indique simplement que la SESSION est correctement enregistrée.

    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
    <?php @session_start(); ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Page protégée par mot de passe</title>
        </head>
        <body>
     
     
            <p>Veuillez entrer le mot de passe:</p>
            <!--<form action="formulaire2.php" method="post">-->
    		<!-- Afin de vérifier si écriture en fichier : -->
    		<form method="post"> 
     
                <p>
    				<input type="text" name="mot_de_passe" id="mot_de_passe" value="<? echo (S_POST['mot_de_passe']); ?>" />
    				<input type="submit" value="Valider" />
                </p>
    		</form>
     
     
    		<?php
    			// Ecriture
    			$_SESSION['recup_pass'] = $_POST['mot_de_passe'];	
    			echo 'La récup est : ' .$_SESSION['recup_pass'];
    		?>
     
     
        </body>
    </html>
    Et... idem : ça s'efface en arrivant sur la page formulaire2.php !
    (Pour pointer sur cette page formulaire.php faut échanger la ligne : <form action="formulaire2.php" method="post">)

    Quelque chose m'échappe, mais quoi ?

    Je donne aussi le remaniement méthode SESSION de la page formulaire2.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
    <?php @session_start(); ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Formulaire</title>
        </head>
        <body>
     
    		<?php
    			$mdp = 'root';
    			// Lecture
    			$recup_MDP = $_SESSION['recup_pass']; 
     
     
    			echo 'Mon mot de passe saisi en index.php : '.$recup_MDP. '<br />';
     
    			if ($recup_MDP <> $mdp) 
    			{
    				echo 'MDP erroné !';
    				exit;
    			}		
    			else
     
    			{
    				echo'
    				<form method="post">
    					<label>Nom</label>
    					<input type="text" name="nom" required>
    					<label>Email</label>
    					<input type="email" name="email" required>
    					<label>Message</label>
    					<textarea name="message" required></textarea>
    					<input name="submit" type="submit">
    				</form>';
     
     
    				//if(isset($_POST['message']))
    				if (isset($_POST['submit'])) 	
    				{
    					$entete  = 'MIME-Version: 1.0' . "\r\n";
    					$entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    					$entete .= 'From: ' . $_POST['email'] . "\r\n";
     
    					$message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
    					<p><b>Nom : </b>' . $_POST['nom'] . '<br>
    					<b>Email : </b>' . $_POST['email'] . '<br>
    					<b>Message : </b>' . $_POST['message'] . '</p>';
     
    					if (mail('contact@xxxxxxxxxxx.com', 'Envoi depuis page Contact', $message, $entete))
    					{
    						echo '<p>Votre message a bien été envoyé.</p>';
    					}
    					else
    					{
    						echo 'Envoi loupé !';
    					}		
    				}
    			}	
     
    		?>
     
        </body>
    </html>
    C'est quoi ce binz ?

    DS7

  12. #12
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Houuuuuuulà !!!

    J'allais oublier un des précieux conseils prodigués en ce forum :

    J'ai inséré en haut des pages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    	ini_set("display_errors", TRUE);
    	error_reporting(E_ALL);
    ?>
    Et c'est très instructif !

    Allez, la suite au prochain numéro

    DS7

  13. #13
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Brut de décoffrage méthode SESSIONS :

    Page index3.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
    <?php @session_start(); 
    	ini_set("display_errors", TRUE);
    	error_reporting(E_ALL);
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Page protégée par mot de passe</title>
        </head>
        <body>
     
     
     
            <p>Veuillez entrer le mot de passe:</p>
            <!--<form action="formulaire2.php" method="post">-->
    		<!-- Afin de vérifier si écriture en fichier : -->
    		<form action="formulaire3.php" method="post">
                <p>
    				<input type="text" name="mot_de_passe" id="mot_de_passe" value="<?php echo $_POST['mot_de_passe']; ?>" />
    				<input type="submit" value="Valider" />
                </p>
    		</form>
     
     
    		<?php
    			$toto = $_POST['mot_de_passe'];
    		?>
     
     
    		<?php
    			// Ecriture
    			$_SESSION['recup_pass'] = $toto;  //$_POST['mot_de_passe'];	
    			echo 'La récup est : ' .$_SESSION['recup_pass'];
    		?>
     
     
        </body>
    </html>
    Pages formulaires3.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
    <?php @session_start(); ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Formulaire</title>
        </head>
        <body>
     
    		<?php
    			$mdp = 'root';
    			// Lecture
    			$recup_MDP = $_SESSION['recup_pass']; 
     
    			echo 'Mon mot de passe saisi en index.php : '.$recup_MDP. '<br />';
     
    			if ($recup_MDP <> $mdp) 
    			{
    				echo 'MDP erroné !';
    				exit;
    			}		
    			else
     
    			{
    				echo'
    				<form method="post">
    					<label>Nom</label>
    					<input type="text" name="nom" required>
    					<label>Email</label>
    					<input type="email" name="email" required>
    					<label>Message</label>
    					<textarea name="message" required></textarea>
    					<input name="submit" type="submit">
    				</form>';
     
     
    				//if(isset($_POST['message']))
    				if (isset($_POST['submit'])) 	
    				{
    					$entete  = 'MIME-Version: 1.0' . "\r\n";
    					$entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    					$entete .= 'From: ' . $_POST['email'] . "\r\n";
     
    					$message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
    					<p><b>Nom : </b>' . $_POST['nom'] . '<br>
    					<b>Email : </b>' . $_POST['email'] . '<br>
    					<b>Message : </b>' . $_POST['message'] . '</p>';
     
    					if (mail('contact@xxxxxxxxx.com', 'Envoi depuis page Contact', $message, $entete))
    					{
    						echo '<p>Votre message a bien été envoyé.</p>';
    					}
    					else
    					{
    						echo 'Envoi loupé !';
    					}		
    				}
    			}	
     
    		?>
     
        </body>
    </html>
    En principe ça fonctionne.

    Mais brut de décoffrage hein

    DS7

    Edit : oui mais ça fonctionne trop bien = n'importe quel MDP passe

    @ suivre.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2017
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Je t'avoue ne pas avoir le niveaux pour te venir en aide sur le sujet malheureusement, j'avais déjà du mal à structurer mon code (d'où l'ouverture de ce thread) ^^
    Mais les choses semble déjà bien plus avancée comparer à hier. J'ai remis le post en non-résolu, peut-être que quelqu'un aura une solution :s
    Encore merci pour le temps que tu accorde à ce post, c'est vraiment sympa de te part :)

  15. #15
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut


    J'ai remis les couverts méthode memory saisie via fichier .dat.


    Page index4.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
    <?php 
    	ini_set("display_errors", TRUE);
    	error_reporting(E_ALL);
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Page protégée par mot de passe</title>
        </head>
        <body>
     
     
            <p>Veuillez entrer le mot de passe:</p>
            <!--<form action="formulaireX.php" method="post">-->
    		<!-- Afin de vérifier si écriture en fichier : -->
    		<form action="formulaire4.php" method="post">
                <p>
    				<input type="text" name="mot_de_passe" id="mot_de_passe"  value="<?php echo $_POST['mot_de_passe'] ?>" />
    				<input type="submit" value="Valider" />
                </p>
    		</form>
     
     
     
    		<?php 
    			//Écriture
    			file_put_contents('MDP.dat', ($_POST['mot_de_passe']));
    			// Contrôle 
    			echo '<br />';
    			echo 'Vérif lecture SEULEMENT Si action/redir neutralisée : ' .file_get_contents('MDP.dat'); 
    		?>
     
     
        </body>
    </html>

    Page formulaire4.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
    <?php  
    	ini_set("display_errors", TRUE);
    	error_reporting(E_ALL);
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Formulaire</title>
        </head>
        <body>
     
    		<?php
    			$mdp = 'root';
    			// Lecture
    			$recup_MDP = file_get_contents('MDP.dat'); 
    			// Contrôle récupération via fichier MDP.dat
    			echo 'Mon mot de passe saisi en index.php : '.$recup_MDP. '<br />';
     
    			if (empty($recup_MDP)) 
    			{
    				echo 'Sniffff, MDP absent';
    				exit;
    			}
     
    			elseif ($mdp <> $recup_MDP)
    			{
    				echo 'Bad MDP : '.$recup_MDP;
    				exit;
    			}				
     
     
    			else
     
    			{
    				echo'
    				<form method="post">
    					<label>Nom</label>
    					<input type="text" name="nom" required>
    					<label>Email</label>
    					<input type="email" name="email" required>
    					<label>Message</label>
    					<textarea name="message" required></textarea>
    					<input name="submit" type="submit">
    				</form>';
     
     
    				//if(isset($_POST['message']))
    				if (isset($_POST['submit'])) 	
    				{
    					$entete  = 'MIME-Version: 1.0' . "\r\n";
    					$entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    					$entete .= 'From: ' . $_POST['email'] . "\r\n";
     
    					$message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
    					<p><b>Nom : </b>' . $_POST['nom'] . '<br>
    					<b>Email : </b>' . $_POST['email'] . '<br>
    					<b>Message : </b>' . $_POST['message'] . '</p>';
     
    					if (mail('contact@xxxxxx.com', 'Envoi depuis page Contact', $message, $entete))
    					{
    						echo '<p>Votre message a bien été envoyé.</p>';
    					}
    					else
    					{
    						echo 'Envoi loupé !';
    					}		
    				}
    			}	
     
    		?>
     
        </body>
    </html>
    Tout fonctionnerait impec si je trouvais comment remédier à cette fichue erreur :
    PHP Notice: Undefined index: mot_de_passe in .../... index4.php on line 19

    Cette ligne en index4.php est :
    <input type="text" name="mot_de_passe" id="mot_de_passe" value="<?php echo $_POST['mot_de_passe'] ?>" />.

    En principe je sais commet, mais là en $_POST je patauge lamentablement, honte à moi

    La page index4.php est pourtant opérationnelle au niveau écriture du fichier MDP.dat ; suffit de neutraliser la redir en <form action="".

    @ suivre

    DS7

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 8
    Points
    8
    Par défaut
    L'erreur est pourtant explicite, tu accèdes à $_POST['mot_de_passe'] sans en vérifier la présence. Dans le cas ou tu soumet le mot de passe (premier form) c'est setté, quand tu soumet le second form, ce post est undefined...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="text" name="mot_de_passe" id="mot_de_passe"  value="<?php echo isset($_POST['mot_de_passe']) ? $_POST['mot_de_passe'] : '' ?>" />
    Quelque chose dans ce gout la devrait faire l'affaire.

    Par contre sauver dans un fichier, on fait jamais ça, ça sert à rien et c'est vraiment pas performant du tout, sans compter que c'est dangereux d'écrire un fichier sur base d'un input utilisateur. Pour garder les infos en mémoire y'a $_SESSION, c'est fait pour ça. Sinon y'a les cookies si on veut que ça persiste sur une plus longue période que la visite.

    J'ai plus fait de php depuis un bail donc je donne juste des indications, je garanti que le code fonctionne tel quel.


    Citation Envoyé par Droïde Système7 Voir le message


    J'ai remis les couverts méthode memory saisie via fichier .dat.


    Page index4.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
    <?php 
    	ini_set("display_errors", TRUE);
    	error_reporting(E_ALL);
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Page protégée par mot de passe</title>
        </head>
        <body>
     
     
            <p>Veuillez entrer le mot de passe:</p>
            <!--<form action="formulaireX.php" method="post">-->
    		<!-- Afin de vérifier si écriture en fichier : -->
    		<form action="formulaire4.php" method="post">
                <p>
    				<input type="text" name="mot_de_passe" id="mot_de_passe"  value="<?php echo $_POST['mot_de_passe'] ?>" />
    				<input type="submit" value="Valider" />
                </p>
    		</form>
     
     
     
    		<?php 
    			//Écriture
    			file_put_contents('MDP.dat', ($_POST['mot_de_passe']));
    			// Contrôle 
    			echo '<br />';
    			echo 'Vérif lecture SEULEMENT Si action/redir neutralisée : ' .file_get_contents('MDP.dat'); 
    		?>
     
     
        </body>
    </html>

    Page formulaire4.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
    <?php  
    	ini_set("display_errors", TRUE);
    	error_reporting(E_ALL);
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Formulaire</title>
        </head>
        <body>
     
    		<?php
    			$mdp = 'root';
    			// Lecture
    			$recup_MDP = file_get_contents('MDP.dat'); 
    			// Contrôle récupération via fichier MDP.dat
    			echo 'Mon mot de passe saisi en index.php : '.$recup_MDP. '<br />';
     
    			if (empty($recup_MDP)) 
    			{
    				echo 'Sniffff, MDP absent';
    				exit;
    			}
     
    			elseif ($mdp <> $recup_MDP)
    			{
    				echo 'Bad MDP : '.$recup_MDP;
    				exit;
    			}				
     
     
    			else
     
    			{
    				echo'
    				<form method="post">
    					<label>Nom</label>
    					<input type="text" name="nom" required>
    					<label>Email</label>
    					<input type="email" name="email" required>
    					<label>Message</label>
    					<textarea name="message" required></textarea>
    					<input name="submit" type="submit">
    				</form>';
     
     
    				//if(isset($_POST['message']))
    				if (isset($_POST['submit'])) 	
    				{
    					$entete  = 'MIME-Version: 1.0' . "\r\n";
    					$entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    					$entete .= 'From: ' . $_POST['email'] . "\r\n";
     
    					$message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
    					<p><b>Nom : </b>' . $_POST['nom'] . '<br>
    					<b>Email : </b>' . $_POST['email'] . '<br>
    					<b>Message : </b>' . $_POST['message'] . '</p>';
     
    					if (mail('contact@xxxxxx.com', 'Envoi depuis page Contact', $message, $entete))
    					{
    						echo '<p>Votre message a bien été envoyé.</p>';
    					}
    					else
    					{
    						echo 'Envoi loupé !';
    					}		
    				}
    			}	
     
    		?>
     
        </body>
    </html>
    Tout fonctionnerait impec si je trouvais comment remédier à cette fichue erreur :
    PHP Notice: Undefined index: mot_de_passe in .../... index4.php on line 19

    Cette ligne en index4.php est :
    <input type="text" name="mot_de_passe" id="mot_de_passe" value="<?php echo $_POST['mot_de_passe'] ?>" />.

    En principe je sais commet, mais là en $_POST je patauge lamentablement, honte à moi

    La page index4.php est pourtant opérationnelle au niveau écriture du fichier MDP.dat ; suffit de neutraliser la redir en <form action="".

    @ suivre

    DS7

  17. #17
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Merci Sl4d3, en effet j'avais quelque peu négligé cette partie bien précise.

    Oui je sais pour l'écriture ici via fichier, mais que ce soit en SESSION ; ou $_POST : la finalité revenait au même.

    Lorsque tout sera OK, ce sera fastoche d'adapter ces méthodes.

    J'ai d'ailleurs idem modifié une autre ligne qui ensuite réclamait la même chose, même adaptation ; un isset en ternaire :

    Avant :
    file_put_contents('MDP.dat', ($_POST['mot_de_passe']));

    Après :
    file_put_contents('MDP.dat', isset($_POST['mot_de_passe']) ? $_POST['mot_de_passe'] : '');

    Arrivé à ce point, dont je donne ci-dessous une nouvelle mouture ; désormais plus aucune erreur, mais toujours le même résultat : en arrivant en "formulaire5.php" hé bien la mémorisation s'est encore envolée !

    Je précise que la page index5.php exécute correctement son taf, si je neutralise la redirection de la form action : la mémorisation est OK.

    Page index5.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
    <?php 
    	ini_set("display_errors", TRUE);
    	error_reporting(E_ALL);
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Page protégée par mot de passe</title>
        </head>
        <body>
     
     
            <p>Veuillez entrer le mot de passe:</p>
            <!--<form action="formulaireX.php" method="post">-->
    		<!-- Afin de vérifier si écriture en fichier : -->
    		<form action="formulaire5.php" method="post">
                <p>
    				<input type="text" name="mot_de_passe" id="mot_de_passe" value="<?php echo isset($_POST['mot_de_passe']) ? $_POST['mot_de_passe'] : '' ?>" />
    				<input type="submit" value="Valider" />
                </p>
    		</form>
     
     
     
    		<?php 
    			//Écriture
    			file_put_contents('MDP.dat', isset($_POST['mot_de_passe']) ? $_POST['mot_de_passe'] : ''); 
    			// Contrôle 
    			echo '<br />';
    			echo 'Vérif lecture SEULEMENT Si action/redir neutralisée : ' .file_get_contents('MDP.dat'); 
    		?>
     
     
        </body>
    </html>
    Page formulaire5.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
    <?php  
    	ini_set("display_errors", TRUE);
    	error_reporting(E_ALL);
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Formulaire</title>
        </head>
        <body>
     
    		<?php
    			$mdp = 'root';
    			// Lecture
    			$recup_MDP = file_get_contents('MDP.dat'); 
    			// Contrôle récupération via fichier MDP.dat
    			echo 'Mon mot de passe saisi en index.php : '.$recup_MDP. '<br /><br />';
     
    			if (empty($recup_MDP)) 
    			{
    				echo 'Sniffff, MDP absent';
    				exit;
    			}
     
    			elseif ($mdp <> $recup_MDP)
    			{
    				echo 'Bad MDP : '.$recup_MDP;
    				exit;
    			}				
     
     
    			else
     
    			{
    				echo'
    				<form method="post">
    					<label>Nom</label>
    					<input type="text" name="nom" required>
    					<label>Email</label>
    					<input type="email" name="email" required>
    					<label>Message</label>
    					<textarea name="message" required></textarea>
    					<input name="submit" type="submit">
    				</form>';
     
     
    				//if(isset($_POST['message']))
    				if (isset($_POST['submit'])) 	
    				{
    					$entete  = 'MIME-Version: 1.0' . "\r\n";
    					$entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    					$entete .= 'From: ' . $_POST['email'] . "\r\n";
     
    					$message = '<h1>Message envoyé depuis la page Contact de monsite.fr</h1>
    					<p><b>Nom : </b>' . $_POST['nom'] . '<br>
    					<b>Email : </b>' . $_POST['email'] . '<br>
    					<b>Message : </b>' . $_POST['message'] . '</p>';
     
    					if (mail('contact@xxxxxxxx.com', 'Envoi depuis page Contact', $message, $entete))
    					{
    						echo '<p>Votre message a bien été envoyé.</p>';
    					}
    					else
    					{
    						echo 'Envoi loupé !';
    					}		
    				}
    			}	
     
    		?>
     
        </body>
    </html>
    Conclusion du moment : toujours au submit de la page index5.php vers formulaires5.php quel est le code qui efface la mémorisation ?

    DS7

    Nota : Merci ProgElecT, ça fait longtemps que je me demandais comment faisaient mes camarades afin de faire ceci

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 8
    Points
    8
    Par défaut
    Tu dois faire un dans TOUTES les pages qui veulent bénéficier de la session. Pas uniquement la ou tu modifie les valeurs en session. Le mieux c'est de mettre tout ce qui gère la session dans un include indépendant ajouté à chaque page (à défaut de faire du PHP OO).

  19. #19
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Oui ça je sais et d'ailleurs l'avais appliqué dans la mouture "méthode SESSION", mais présentement nous sommes dans une mouture en écriture sur fichier texte.

    Qu'est-ce empêche la mémorisation

    Ensuite oui y aura une version SESSION

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 8
    Points
    8
    Par défaut
    Le file_put_contents est jamais conditionné, je sais pas si c'est voulu, j'ai pas trop suivi le flux entre les différentes pages mais il faudrait vérifier qu'il y'a bien eu le post avec le mot de passe avant de faire le file_put_contents.

    avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php 
    //Écriture
    file_put_contents('MDP.dat', isset($_POST['mot_de_passe']) ? $_POST['mot_de_passe'] : ''); 
    // Contrôle 
    echo '<br />';
    echo 'Vérif lecture SEULEMENT Si action/redir neutralisée : ' .file_get_contents('MDP.dat'); 
    ?>
    après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php 
    // MAJ du fichier uniquement si MDP présent en post
    if(isset($_POST['mot_de_passe'])
    {
       //Écriture
       file_put_contents('MDP.dat', $_POST['mot_de_passe']); 
       // Contrôle 
       echo '<br />';
       echo 'Vérif lecture SEULEMENT Si action/redir neutralisée : ' .file_get_contents('MDP.dat'); 
    }
    ?>
    Si le résultat est perdu c'est que le contenu du fichier change. Si c'est le seul endroit qui fait de l'écriture c'est qu'on y passe forcément à un moment non désiré. Sinon tu ouvre le fichier MDP.dat pour voir son contenu.
    J'ai pas de server PHP sur ma machine depuis les années 2010 facile donc je peux pas tester mais ça devrait pas être difficile à identifier. Rien ne disparait sans commande

Discussions similaires

  1. Base protégée par mot de passe
    Par fafabzh6 dans le forum 4D
    Réponses: 4
    Dernier message: 23/05/2007, 09h32
  2. Réponses: 1
    Dernier message: 22/03/2007, 20h08
  3. [XP Pro]Partage protégé par mot de passe
    Par arkienou dans le forum Windows XP
    Réponses: 4
    Dernier message: 08/02/2007, 13h41
  4. Comment ouvrir une base Access protègée par mot de passe
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/09/2006, 13h53
  5. Ouvrir classeur Excel "protégé" par mot de passe
    Par LostIN dans le forum Sécurité
    Réponses: 1
    Dernier message: 19/07/2006, 21h24

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