<?php
|
/*---------------------------------------------------------------*/
|
/*
|
Titre : Formulaire accès espace membre
|
|
URL : https://phpsources.net/code_s.php?id=3
|
Date édition : 27 Aout 2004
|
Date mise à jour : 19 Sept 2019
|
Rapport de la maj:
|
- refactoring du code en PHP 7
|
- fonctionnement du code vérifié
|
*/
|
/*---------------------------------------------------------------*/?>
|
************* Table membres ***************
|
*****************************************
|
|
|
CREATE TABLE membres (
|
id int(10) NOT NULL auto_increment,
|
pass varchar(60) NOT NULL default '',
|
login varchar(120) NOT NULL default '',
|
PRIMARY KEY (id)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
|
*****************************************
|
*****************************************
|
|
|
<?php
|
// demarre une session
|
session_start();
|
|
// Connection au serveur mySQL
|
|
$db_server = 'localhost'; // Adresse du serveur MySQL
|
$db_name = ''; // Nom de la base de données
|
$db_user_login = 'root'; // Nom de l'utilisateur
|
$db_user_pass = ''; // Mot de passe de l'utilisateur
|
|
// Ouvre une connexion au serveur MySQL
|
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);
|
|
?>
|
|
<html>
|
<head>
|
<title>Titre</title>
|
</head>
|
<body>
|
<?php
|
|
// variables du formulaire
|
$action = isset($_POST['action']) ? $_POST['action'] : '';
|
$login = isset($_POST['login']) ? $_POST['login'] : '';
|
$pass = isset($_POST['pass']) ? $_POST['pass'] : '';
|
|
|
// si le login et pass on été au préalable cryptés
|
// (en md5 dans l'exemple) dans votre base
|
// vous devez enlever les commentaires sur les 2 lignes suivante
|
|
// $login = md5($_POST['login']);
|
// $pass = md5($_POST['pass']);
|
|
|
// Si aucune action, le formulaire est afficher
|
if ($action !=1 ) {
|
|
echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
|
echo '<form action="'.$_SERVER['REQUEST_URI'].'" method="post">';
|
echo '<input type="hidden" name="action" value="1">';
|
echo 'Login: <input type="password" name="login"><br />';
|
echo 'Passe: <input type="password" name="pass"><br />';
|
echo '<input type="submit" value="Connexion">';
|
echo '</form>';
|
}
|
|
// Sinon
|
if ($action == 1) {
|
|
$q = $conn->query("SELECT *
|
FROM membres
|
WHERE login='$login'
|
AND pass='$pass'");
|
$n = $q->num_rows;
|
|
if ($n == 1 AND $login != "" AND $pass != "")
|
{
|
// Le login est placé dans la session
|
$_SESSION['login_session'] = $login;
|
// redirection
|
|
// ATTENTION A BIEN METTRE LA PAGE DE REDIRECTION ICI
|
|
header("location: votre_page_espace_membre.php");
|
}
|
|
// Si le login ou le mot de passe sont incorrect
|
// affiche de nouveau le formulaire
|
|
else{
|
|
echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
|
echo '<form action="'.$_SERVER['REQUEST_URI'].'" method="post">';
|
echo '<input type="hidden" name="action" value="1">';
|
echo 'Login: <input type="password" name="login"><br />';
|
echo 'Passe: <input type="password" name="pass"><br />';
|
echo '<input type="submit" value="Connexion">';
|
echo '</form>';
|
|
die('<font color="red">Informations incorrectes!');
|
}
|
}
|
?>
|
</body>
|
</html>
|
|
|
|
**************************************************
|
vous pouvez maintenant utiliser la variable de
|
session sur les pages que vous désirez protéger.
|
**************************************************
|
|
// 1ère METHODE
|
|
<?php
|
session_start();
|
// Si la variable $login_session n'est pas déclaré
|
if(!isset($_SESSION["login_session"])) {
|
echo 'Vous n\'avez pas accés à  cette page!';
|
}
|
//sinon
|
else {
|
[votre code]
|
}
|
?>
|
|
|
// 2ème Mà ‰THODE
|
|
|
<?php
|
session_start();
|
if(!isset($_SESSION['login_session']))
|
die('Accès interdit!');
|
?>
|
|
|
Invité
18 Jan 2012 à 15:11Merci beaucoup pour ce tutoriel, il m'a vraiment aider
Invité
15 Déc 2009 à 12:53c'est de la choucroute ton script niveau sécurité !!!! Il suffit de faire soit même une variable de session et on passe partout !
Invité
31 Oct 2009 à 03:24Problème sur les 2 <?php print $_SERVER['REQUEST_URI'];?> déjà balisés
KOogar
15 Fév 2009 à 01:35Merchi, j'ai fais la modification
Invité
14 Fév 2009 à 19:25problème à la ligne 80 et 114 (echo '
Plor
07 Oct 2008 à 17:48Yeah comment débuter en beauté
R@f
26 Avril 2007 à 09:13Koogar, oui, par exemple le renvoi de pass...
Pour le goto et les break, ils sont là pour ça ;-)
Par contre, je veux qd meme pas que certaines de mes données soient lisibles par le webmaster...
@++
R@f
100marques
25 Avril 2007 à 17:36Bon ; je voulais pas intervenir parceque je sens que je vais à l'encontre de clichés bien établis, mais tant pis :
Je pense que l'intérêt du cryptage est de protéger la base au cas ou une personne malveillante y aurait accès EN LECTURE ( si c'est en écriture, de toute façon c'est mort, il y aura des dégats ).
Ca laisse supposer que le developpeur a laissé des failles de sécurité.
ca peut arriver à tout le monde.
Personnellement je pars du principe que si un petit malin essaye de pirater ma base en utilisant tel ou tel article glané sur le net et une faille de sécurité, il n'investira pas une semaine de boulot pour décrypter la petite formule de cryptage réversible ( si mes souvenirs sont bons, seul le hashage n'est pas réversible ? ).
Ca me laisse plus de confort pour chouchouter mes utilisateurs.
A noter : dans la version 1 de mon site j'utilisai le cryptage MD5 ( ben oui, c'est tellement conseillé ) et en refaisant le site dans son intégralité je l'ai enlevé et je m'en félicite.
Mais je sais que je vais choquer ( il m'arrive de temps en temps d'utiliser un break ( presque un goto quelque part ) pour sortir de certains traitements ; si vous voulez vraiment me taper dessus vous pourrez faire d'une pierre 2 coups ! ;o) )
Amicalement
KOogar
24 Avril 2007 à 21:50Et tu le sais comment si le site a cryter les passes ? Aucun moyen je pense à part si sur le site, aprés avoir cliquer sur "perdu votre mot de passe?", le webmaster renvoi le meme, c'est clair qu'il a en fait pas cryter grand chose. C'est pour que je disais que les fonctions de cryptage à double sens, autant ne pas les mettre.
Sinon en générale ya rien de marquer sur un site si ola base est crypter ou pas. Peut-etre par un petit iconne mais c'est rare. Maintenant je suis du meme avis que 100marques, ne pas trop vouloir s'emmerder quand on débute et on a peu de trafic donc peu de membre, je comprend et je pense que c'est dans ce sens qu'il en a parler ;)
R@f
24 Avril 2007 à 20:36Mmh: je trouve que ne pas crypter les pass est un signe de manque de sérieux: perso, moi un site où les pass sont pas cryptés (donc où le webmaster a accès à mes données), j'essaye de pas y retourner...
@++
R@f
KOogar
23 Avril 2007 à 01:49La seule manière que je connaisse de cryter correctement est, un cryptage par injonction, c'est à dire dans un seul sens. MD5 fait cela merveilleusement bien et la fonction est simple d'utilisation.
Vouloir faire des fonctions qui cryte et décrypte posent 2 problemes, c'est crakable et c'est beaucoup plus gourmand que MD5 ou une autre fonction par injontion.
Il n'y a pas besoin de devoir faire un "site militaire" pour avoir a protéger les Mots de Passes et Numéro de CB des Internautes. C'est un peu n'importe quoi comme argument.
Dans l'autre sens, je comprend trés bien que de devoir renvoyer un nouveau Mot de Passe à l'internaute est plus compliquer, surtout sur des sites ou les internautes n'ont pas l'habitude de ce genre de manipulation. Dans ce cas la, autant ne rien crypter du tout, la plupart de ces fonctions à double sens génèrent des erreurs, suffit de bien "vérouiller" ses scripts PHP à toute forme de hacking extérieur.
100marques
21 Avril 2007 à 23:22Pour ma part j'en suis revenu du cryptage MD5.
A moins d'avoir un site militaire, il faut pas trop de prendre le chou avec ça.
Un petit cryptage réversible permet de renvoyer le mot de passe à l'utiliateur sans traumatisme.
La maintenance est également facilitée.
Bref ; que des avantages
C-bolo
23 Fév 2005 à 01:02Quand j'ai déménagé le site l'année dernière, j'avais définitivement perdu 1 fichier de download. Merci de m'avoir retrouvé ce rebelle !! J'ai mis la dernière version du script en ligne.
Trés bonne continuation
KOogar
R@f
05 Sept 2004 à 22:15La variable $resultat est tout simplement le resultat de la requête et elle est déclaré au bon endroit.
Laurent
05 Sept 2004 à 18:08je n'arrive pas a comprendre ce qu'est $resultat.
cette variable ne devrait elle pas etre déclarée d'abord?
help!!
merci..
R@f
05 Sept 2004 à 09:14Koogar, j'aurais besoin d'un peu d'explications j'y arrive pas =)
R@f
05 Sept 2004 à 08:14C'est du MySql pas du Java Script !!!