Un Mot de Passe pour une page spécifique

Bonsoir,

J'aurais voulu rendre certaine partie du blog privé via des pages statiques.

Pour ça je créé donc une page statique qui contiendrais tout mes mots de passe en dur (quitte à mettre en md5) et les redirections qui vont pour chaque passe par un header location.

Voici le code:
<?php
// Déclaration des champs (vides ou récupération des $_POST)...
$mot_de_passe = !empty($_POST['mot_de_passe']) ? trim($_POST['mot_de_passe']) : ''; // 

$erreur = '';

// Si le formulaire a été envoyé, on teste les champs...
if($_SERVER['REQUEST_METHOD'] == 'POST') {
	$liens_pass = array(
		'Monpass1' => '?static7/contact',
		'Monpass2' => '?static2/ordre-de-mission',
		'Monpass3' => 'feed.php?atom'
	);
	if(!empty($mot_de_passe)) {
		if(array_key_exists($mot_de_passe, $liens_pass)) {
			header('Location: '.$liens_pass[$mot_de_passe]);
			exit();
		} else {
			$erreur = 'Mot de passe incorrect !';
		}
	} else {
		$erreur = 'Saisir un mot de passe !';
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test formulaire</title>
<style type="text/css">
.alert {
	color:#990000;
	font-weight: bold;
}
</style>
</head>
<body>
<?php
// erreur(s) à afficher ?
if(!empty($erreur)) {
	echo '<p class="alert">'.$erreur."</p>\n";
}
?>
<p>Veuillez entrer le mot de passe pour accéder à la page :</p>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
	<p>
		<label for="mot_de_passe">Mot de passe : </label>
		<input type="password" id="mot_de_passe" name="mot_de_passe" />
	</p>
	<p>
		<input type="submit" value="Envoyer" />
	</p>
</form>
</body>
</html>
Le soucis et que peu importe le mot de passe renseigné en dur inséré, me redirige constamment sur index.php

Secondo et il possible de sécuriser tout çà ?

Merci par avance de votre aide.

Réponses

  • FrédéricFrédéric Member
    février 2010 modifié
    Bon j'ai retenté en ajoutant une session juste avant la redirection comme ceci:
    <?php 
    // Déclaration des champs (vides ou récupération des $_POST)... 
    $mot_de_passe = !empty($_POST['mot_de_passe']) ? trim($_POST['mot_de_passe']) : ''; //  
     
    $erreur = ''; 
     
    // Si le formulaire a été envoyé, on teste les champs... 
    if($_SERVER['REQUEST_METHOD'] == 'POST') { 
        $liens_pass = array( 
            'Monpass1' => 'http://localhost/?static8/ordre-de-mission', 
            'Monpass2' => 'http://localhost/?static7/contact', 
            'Monpass3' => 'http://localhost/feed.php?atom' 
        ); 
        if(!empty($mot_de_passe)) { 
            if(array_key_exists($mot_de_passe, $liens_pass)) { 
                session_start(); 
                $_SESSION['controle'] = true; 
                header('Location: '.$liens_pass[$mot_de_passe]); 
                exit(); 
            } else {
                $erreur = 'Mot de passe incorrect !'; 
            } 
        } else { 
            $erreur = 'Saisir un mot de passe !'; 
        } 
    } 
    ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <title>Test formulaire</title> 
    <style type="text/css"> 
    .alert { 
        color:#990000; 
        font-weight: bold; 
    } 
    </style> 
    </head> 
    <body> 
    <?php 
    // erreur(s) à afficher ? 
    if(!empty($erreur)) { 
        echo '<p class="alert">'.$erreur."</p>\n"; 
    } 
    ?> 
    <p>Veuillez entrer le mot de passe pour accéder à la page :</p> 
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post"> 
        <p> 
            <label for="mot_de_passe">Mot de passe : </label> 
            <input type="password" id="mot_de_passe" name="mot_de_passe" /> 
        </p> 
        <p> 
            <input type="submit" value="Envoyer" /> 
        </p> 
    </form> 
    </body> 
    </html>
    
    Puis dans mes pages statiques que je désire "sécuriser" :
    <?php
    session_start(); 
    if(!isset($_SESSION['controle'])) { 
        header('Location: index.php');    // redirection vers page d'accueil ou autre 
    }
    ?>
    
    Mais veux rien savoir toujours redirigé sur l'index du blog sans avoir un seul message d'état du mot de passe.
    Bref Pluxml redirige lui même les pages statiques donc je pense que je suis grillé sur ce coup :(
  • Résolus, il suffisais tout simplement de mettre juste le formulaire en page statique et les redirection en header ^^
Connectez-vous ou Inscrivez-vous pour répondre.