Bienvenue sur les forums conseil & création · S'enregistrer

Se connecter automatiquement

Forums » Les scripts conseil & création » Proteger une page d'un site web crée en php. · Envoyer le lien

Par Lalouve, le 13 Oct 2012, 16:10 Revenir en haut de page Répondre en citant

Bonjour à tous,

Ceci est mon premier post vu mon inscription recente.

Je remercie d'abord le webmaster Cédric de m'avoir conseillé l'inscription !

voici mon petit souci:

J'ai un site internet dans lequel il y a six pages qui sont accessibles uniquement par mot de passe, ayant trouveé un superbe petit script sur le net qui fait bien son travail. Celui-ci dirigeant le client sur la page appropriée selon le mot de mot de passe introduit.

Or, malgré cette protection, lors de l'impression du contenu des pages par le client , le lien type (www.monsite.be/pageprotege.php) apparait dans le coin de la feuille papier.
Ce dernier point est trés problematique pour moi du fait que la page est accessible en suivant le lien imprimé sans protection.
Donc il suffit de taper www.monsite.be/pageprotege.php et voilà qu on bypass la protection souhaitée !

Comment peut on empecher qu,on puisse y acceder directement ? Sauf bien sur via la page d'invitation au mot de passe....peut-être avec un script .htaccess ?? Mais où le placer et comment le configurer ...( j ai dreamweaver cs3 pour modifier mes pages et codes).

Merci à tous

Rizzo Maria

Very Happy
Par Cédric, le 14 Oct 2012, 10:16 Revenir en haut de page Répondre en citant

Bonjour Lalouve, et bienvenue sur le forum Wink

Expliqué de cette façon, le problème n'est plus le même que la demande que tu as faite par email (ne plus voir le lien dans la barre d'adresse du navigateur)...

Citation:
ayant trouveé un superbe petit script sur le net qui fait bien son travail


Le script fait certainement très bien son travail, mais à priori demande à être modifié pour correspondre à ta demande Wink

Citation:
Celui-ci dirigeant le client sur la page appropriée selon le mot de mot de passe introduit


Est-ce que tu peux en dire plus, voire donner le lien où tu as téléchargé le script?
Comment sont effectuées la connexion (htpassw et htaccess? PHP et Mysql?) et la redirection sur le contenu personnalisé?

Dans le principe: lorsque la personne parvient à se connecter, tu enregistres l'information en session (la "session" étant propre à chaque visiteur, à chaque fois qu'il se connecte):

Code:
$_SESSION['login'] = 'le_login_utilisateur';
$_SESSION['droits_acces'] = 'contenu_xxxxx';


De cette façon à chaque fois qu'un utilisateur tente d'accéder à la page protégée, tu contrôles le droit d'accès:

Code:
// Code à insérer dans tes pages à protéger

// Utilisateur connecté ?
$connecte = ( isset($_SESSION['login']) ) ? true : false;

// Droit d'accès à la page en cours ?
$acces_autorise = ( $_SESSION['droits_acces'] === 'contenu_xxxxx'; ) ? true : false;

// Si non connecté ou pas les droits, on redirige sur l'index

if ( !$connecte || !$acces_autorise )
{
  header('Location: index.php');
  exit;
}


Bien sûr c'est un exemple simplifié de ce qui peut être fait de plein de façons différentes, plus ou moins compliquées! Tout dépend du contenu à protéger (juste une page de texte? Des images? Des fichiers... ?), de la façon de gérer les utilisateurs...

Il faudrait donc voir le script "de base" pour pouvoir te dire comment le modifier

@+, Cédric
Par Lalouve, le 14 Oct 2012, 21:12 Revenir en haut de page Répondre en citant

Bonsoir Cédric,

Merci pour la réponse.

Les cinq pages protégées sont du type fichiers.PHP contenant texte et photos et des informations importantes pour les clients.

En fait il s'agit des liens de pages qui donnent un code à 4 chiffres (exemple 1234#) d'ouverture d'une porte d'hôtel ainsi que du coffre de nuit afin de prendre possession de la carte magnétique.

Nous devons à présent modifier l'extension du fichier php à chaque départ du client pour qu'ils ne conservent pas ces données sur papier.
Ce dernier point est for ennuyant.

Voici le script qui est sur notre page de départ où le client introduit le mot de passe:

Code:
<?php

###############################################################
# Page Password Protect 2.13
###############################################################
# Visit http://www.zubrag.com/scripts/ for updates
###############################################################
#
# Usage:
# Set usernames / passwords below between SETTINGS START and SETTINGS END.
# Open it in browser with "help" parameter to get the code
# to add to all files being protected.
#    Example: password_protect.php?help
# Include protection string which it gave you into every file that needs to be protected
#
# Add following HTML code to your page where you want to have logout link
# <a href="http://www.example.com/path/to/protected/page.php?logout=1">Logout</a>
#
###############################################################

/*
-------------------------------------------------------------------
SAMPLE if you only want to request login and password on login form.
Each row represents different user.

$LOGIN_INFORMATION = array(
  'zubrag' => 'root',
  'test' => 'testpass',
  'admin' => 'passwd'
);

--------------------------------------------------------------------
SAMPLE if you only want to request only password on login form.
Note: only passwords are listed

$LOGIN_INFORMATION = array(
  'root',
  'testpass',
  'passwd'
);

--------------------------------------------------------------------
*/

##################################################################
#  SETTINGS START
##################################################################

// Add login/password pairs below, like described above
// NOTE: all rows except last must have comma "," at the end of line
if ($_POST['access_password'] == "32014412") {
header('Location: ./keys/kb51671.php');
}
if ($_POST['access_password'] == "2880973") {
header('Location: ./keys/./kb13982.php');
}
if ($_POST['access_password'] == "30080440") {
header('Location: ./keys/kb87863.php');
}
if ($_POST['access_password'] == "70506175") {
header('Location: ./keys/kb16094.php');
}
if ($_POST['access_password'] == "test1234") {
header('Location: ./keys/kb54355.php');
}
if ($_POST['access_password'] == "454545") {
header('Location: ./keys/kb89896.php');
}
// request login? true - show login and password boxes, false - password box only
define('USE_USERNAME', false);

// User will be redirected to this page after logout
define('LOGOUT_URL', 'http://www.example.com/');

// time out after NN minutes of inactivity. Set to 0 to not timeout
define('TIMEOUT_MINUTES', 0);

// This parameter is only useful when TIMEOUT_MINUTES is not zero
// true - timeout time from last activity, false - timeout time from login
define('TIMEOUT_CHECK_ACTIVITY', true);

##################################################################
#  SETTINGS END
##################################################################


///////////////////////////////////////////////////////
// do not change code below
///////////////////////////////////////////////////////

// show usage example
if(isset($_GET['help'])) {
  die('Include following code into every page you would like to protect, at the very beginning (first line):<br>&lt;?php include("' . str_replace('\\','\\\\',__FILE__) . '"); ?&gt;');
}

// timeout in seconds
$timeout = (TIMEOUT_MINUTES == 0 ? 0 : time() + TIMEOUT_MINUTES * 60);

// logout?
if(isset($_GET['logout'])) {
  setcookie("verify", '', $timeout, '/'); // clear password;
  header('Location: ' . LOGOUT_URL);
  exit();
}

if(!function_exists('showLoginPasswordProtect')) {

// show login form
function showLoginPasswordProtect($error_msg) {
?>
<html>
<head>
  <title>Please enter password to access this page</title>
  <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
  <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</head>
<body>
  <style>
    input { border: 1px solid black; }
  </style>
  <div style="width:500px; margin-left:auto; margin-right:auto; text-align:center">
  <form method="post">
    <h3>N°de réservation / Booking N° </h3>
    <font color="red"><?php echo $error_msg; ?></font><br />
<?php if (USE_USERNAME) echo 'Login:<br /><input type="input" name="access_login" /><br />Password:<br />'; ?>
    <input type="password" name="access_password" /><p></p><input type="submit" name="Submit" value="Submit" />
  </form>
  <br />
  <a style="font-size:9px; color: #B0B0B0; font-family: Verdana, Arial;" href="http://www.zubrag.com/scripts/password-protect.php" title="Download Password Protector">Powered by Password Protect</a>
  </div>
</body>
</html>

<?php
  // stop at this point
  die();
}
}

// user provided password
if (isset($_POST['access_password'])) {

  $login = isset($_POST['access_login']) ? $_POST['access_login'] : '';
  $pass = $_POST['access_password'];
  if (!USE_USERNAME && !in_array($pass, $LOGIN_INFORMATION)
  || (USE_USERNAME && ( !array_key_exists($login, $LOGIN_INFORMATION) || $LOGIN_INFORMATION[$login] != $pass ) )
  ) {
    showLoginPasswordProtect("Incorrect number, please phone or email hotel.");
  }
  else {
    // set cookie if password was validated
    setcookie("verify", md5($login.'%'.$pass), $timeout, '/');
   
    // Some programs (like Form1 Bilder) check $_POST array to see if parameters passed
    // So need to clear password protector variables
    unset($_POST['access_login']);
    unset($_POST['access_password']);
    unset($_POST['Submit']);
  }

}

else {

  // check if password cookie is set
  if (!isset($_COOKIE['verify'])) {
    showLoginPasswordProtect("");
  }

  // check if cookie is good
  $found = false;
  foreach($LOGIN_INFORMATION as $key=>$val) {
    $lp = (USE_USERNAME ? $key : '') .'%'.$val;
    if ($_COOKIE['verify'] == md5($lp)) {
      $found = true;
      // prolong timeout
      if (TIMEOUT_CHECK_ACTIVITY) {
        setcookie("verify", md5($lp), $timeout, '/');
      }
      break;
    }
  }
  if (!$found) {
    showLoginPasswordProtect("");
  }

}
 
?>



__________________________________________

Voilà je suppose que c'est plus clair maintenant.

Oui en effet la solution de rendre le lien invisible sur la barre d'adresse crée des problèmes de référencement et cela je voudrais éviter.

Merci de me donner des conseils pas par pas si possible

Smile

Cordialement

RIZZO M.
Par Cédric, le 15 Oct 2012, 16:58 Revenir en haut de page Répondre en citant

Bonsoir,

Etant dans le train, je n'ai pas encore pu tester le script mais à première vue, il doit te manquer quelque chose dans tes fichiers:

Citation:
Ce dernier point est trés problematique pour moi du fait que la page est accessible en suivant le lien imprimé sans protection.


Ca ne devrait pas être le cas... si tu inclus bien ce fichier dans les pages à protéger. As-tu vu "l'aide" du script (certes un peu concise Smile ) ?
Juste en dessous de "SETTINGS END", tu as une partie "show usage example"

si ta page s'appelle "protect.php" tente d'y accéder en ajoutant le parametre "help":

Code:
.../protect.php?help


ça devrait t'indiquer le code à inclure dans les autres pages
Quelque chose du style:

Code:
<?php include('protect.php'); ?>


Avant d'aller plus loin, as-tu bien ajouté cette ligne à tes pages?

Forums » Les scripts conseil & création » Proteger une page d'un site web crée en php. · Envoyer le lien