Moi qui ai informatitien je vous conseil le code des fichiers suivant plus le
telecharger le kit total la page 1 nommé " connexion.php "
<?
/*
* Attention, ne laissez pas d'espace entre le haut de la page
* et le <?
*
*/
include("configuration.php");
/*
* On récupère la valeur des variables passées dans le formulaire,
* tout en s'assurant que ces variables n'ont pas étés passées frauduleusement.
*
*/
$pseudo = trim($HTTP_POST_VARS[pseudo]);
$clef = trim($HTTP_POST_VARS[clef]);
$validation = $HTTP_POST_VARS[validation];
/*
* Validation des paramètres passés par le formulaire. On vérifie que tous les
* champs sont remplis correctement, car l'internaute à de facheuses tendances
* à raconter n'importe quoi... En cas d'erreur, on lui demande de la corriger.
*
*/
if($validation) {
if(empty($pseudo)) {
$erreur[pseudo] = 1;
} elseif(strlen($pseudo) > 20) {
$erreur[pseudo] = 2;
unset($pseudo,$clef);
}
if(empty($clef)) {
$erreur[clef] = 1;
} elseif(strlen($clef) > 20 || strlen($clef) < 6) {
$erreur[clef] = 2;
unset($clef);
}
}
/*
* On vérifie que le pseudo correspond bien avec le mot de passe enregistré dans le fichier membres.txt
*
*/
$ok = 0;
if(!$erreur) {
$ok = vérification($pseudo,crypter($clef));
}
if(!$ok && $validation) {
unset($clef);
$erreur[clef] = 2;
}
/*
* On dirige l'internaute selon qu'il doive se connecter à l'espace membre ou y accéder
*
*/
if($validation && !$erreur) {
/*
* Si le membre a entré un bon mot de passe
*
*/
// On crypte le mot de passe via la fonction crypter() disponible dans le fichier de configuration
// afin d'empêcher sa lecture dans la barre d'adresses
$clef = crypter($clef);
// On envoie le membre vers la pccueil des membres
header("Location:membre.php?pseudo=$pseudo&clef=$clef");
} else {
/*
* Si l'internaute a entré un mauvais mot de passe ou ne s'est pas encore connecté
* On demande à l'internaute de remplir un formulaire avec ses pseudo et mot de passe
*
*/
/*
* Faîtes une inclusion de page avec include() plutôt que laisser ce code html.
* C'est moins lourd et plus clair. Attention, si vous utilisez cette méthode, ne protégéz
* pas la page utilisée.
*
*/
echo "<html>
<head>
<title>Section membre / Inscription</title>
</head>
<body>
Accès à la zone membre :<br><br>";
// On affiche les éventuelles erreurs détectées
if($erreur && $validation) {
echo "Merci de corriger les erreurs suivantes :<br>";
if($erreur[pseudo]) {
echo "- Vous n'avez pas donné de pseudo<br>";
}
switch($erreur[clef]) {
case 1 : echo "- Vous n'avez pas donné de mot de passe<br>"; break;
case 2 : echo "- Vous avez donné un mot de passe erroné<br>"; break;
}
}
echo "<form action='connexion.php' method='post'>
<input type='hidden' name='validation' value=1>
Pseudo : <input type='text' name='pseudo' style='border : 1px solid' size=15 value='$pseudo' maxlength=20><br>
Mot de passe : <input type='password' name='clef' style='border : 1px solid' size=15 value='$clef' maxlength=20><br><br>
<input type='submit' value='Connexion'>
</body>
</html>
";
}
?>
configuration.php
<?
// On définit comme constantes le pseudo et le mot de passe envoyés par l'internaute
define("PSEUDO",$pseudo);
define("CLEF",$clef);
/*
* Modifiez les valeurs des constantes A, B, C et D à votre guise (fortement recommandé)
* Les nouvelles valeurs doivent obligatoirement être comprises entre 256 et 999
* Dans le cas contraire et avec un peu de malchance, attendez vous à quelques méchants bugs...
*
*/
define("A",876);
define("B",478);
define("C",147);
define("D",691);
// Fonctions nécessaires à l'exécution du script
function cache() {
// Tenter de désactiver l'insertion en cache de la page courante
// Facultatif mais offre plus de sécurité au niveau de la navigation dans l'espace membre
header("Expires: Mon, 1 Jan 2000 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
}
function crypter($clef) {
// Crypter le mot de passe
for($i = 0; $i < strlen($clef); $i++) {
// On applique cet algorithme de cryptage au caractère $i
$mot .= (ord($clef[$i])*((A+B+C+D)%(256+$i+1))+($clef[strlen($clef)-$i-1]+$i*C+A)*B)%D;
if($i != strlen($clef)-1) {
$mot .= "/";
}
}
return $mot;
}
function vérification($pseudo,$clef) {
// Vérifier si un mot de passe et un pseudo correspondent bien
if(!empty($pseudo) && !empty($clef)) {
if(file_exists("membres.txt")) {
$fichier = fopen("membres.txt","r");
while(!feof($fichier)) {
$ligne = fgets($fichier,300);
if(trim(substr($ligne,0,20)) == $pseudo && trim(substr($ligne,19,80)) == $clef) {
$ok = 1;
break;
}
}
}
}
return $ok;
}
?>
supprimer.php :
<?
include("configuration.php");
if(vérification($pseudo,$clef) && !empty($pseudo) && !empty($clef)) {
cache();
if($HTTP_GET_VARS[supprimer]) {
$contenu = "";
if(file_exists("membres.txt")) {
$fichier = fopen("membres.txt","r");
while(!feof($fichier)) {
$ligne = fgets($fichier,300);
if(trim(substr($ligne,0,20)) != PSEUDO) {
$contenu .= $ligne;
}
}
}
$fichier = fopen("membres.txt","w+");
fputs($fichier,$contenu);
fclose($fichier);
}
echo "<html>
<head>
<title>Supprimer ce compte</title>
</head>
<body>";
if(!vérification(PSEUDO,CLEF)) {
echo "Ce compte a été supprimé !";
}
echo "
<a href='supprimer.php?supprimer=1&pseudo=".PSEUDO."&clef=".CLEF."'>Supprimer ce compte</a>
</body>
</html>
";
} else {
header("Location: connexion.php");
}
?>
membre.php
<?
/*
* Attention, ne laissez pas d'espace entre le haut de la page
* et le <?
*
* Toutes les pages de l'espace membre doivent être construites de cette manière
* afin qu'elles soient protégées contre toute intrusion extérieure aux membres
*
*/
include("configuration.php");
if(vérification($pseudo,$clef)) { // On vérifie le pseudo et le mot de passe
/*
* Si on est ici, c'est que le pseudo et le mot de passe correspondent
*
*/
cache(); // On empêche l'insertion de la page dans le cache du navigateur
/*
* On est dans l'espace membre. C'est ici que les membres peuvent accéder
* à tout ce qu'il leur est réservé. Pour faire des liens entre les pages dans l'espace membre, faîtes :
* <a href='page.php?pseudo=".PSEUDO."&clef=".CLEF."'>Lien</a> comme montré ci-dessous.
*
*/
// Contenu de la page de l'espace membre
echo "<html>
<head>
<title>Espace membre</title>
</head>
<body>
Votre pseudonyme est ".PSEUDO."<br><br><a href='membre.php?pseudo=".PSEUDO."&clef=".CLEF."'>Exemple de lien dans l'espace membre</a>
</body>
</html>";
/*
* Attention, ne faîtes pas d'inclusions de fichiers non protégés par le système ci-dessus avec include()
* ou require() car n'importe qui pourrait alors y avoir accès.
*
* Si vous ne protégez pas ces fichiers avec le script PHP, vous pouvez toujours les cacher avec un fichier .htaccess
* de la même façon qu'est caché le fichier membres.txt. Cela marche aussi bien et c'est même mieux.
*
*/
} else { // Mauvais mot de passe ou pseudo...
// On redirige le visiteur sur la page de connexion puisque
// le pseudo et le mot de passe ne correspondent pas
header("Location: connexion.php");
}
?>
inscripton.php
<?
include("configuration.php");
echo "<html>
<head>
<title>Section membre / Inscription</title>
</head>
<body>
";
/*
* On récupère la valeur des variables passées dans le formulaire,
* tout en s'assurant que ces variables n'ont pas étés passées frauduleusement.
*
*/
$nom = trim($HTTP_POST_VARS[nom]);
$prénom = trim($HTTP_POST_VARS[prénom]);
$mail = trim($HTTP_POST_VARS[mail]);
$pseudo = trim($HTTP_POST_VARS[pseudo]);
$clef = trim($HTTP_POST_VARS[clef]);
$validation = $HTTP_POST_VARS[validation];
/*
* Validation des paramètres passés par le formulaire. On vérifie que tous les
* champs sont remplis correctement, car l'internaute à de facheuses tendances
* à raconter n'importe quoi... En cas d'erreur, on lui demande de la corriger.
*
*/
if($validation) {
if(empty($nom)) {
$erreur[nom] = 1;
} elseif(!ereg("[a-z]",$nom) || strlen($nom) > 50) {
$erreur[nom] = 2;
unset($nom);
}
if(empty($prénom)) {
$erreur[prénom] = 1;
}elseif(!ereg("[a-z]",$prénom) || strlen($prénom) > 50) {
$erreur[prénom] = 2;
unset($prénom);
}
if(empty($mail)) {
$erreur[mail] = 1;
} elseif(!eregi("^(.+)\@[^ ]+\.[a-z]{2,5}$",$mail) || strlen($mail) > 75) {
$erreur[mail] = 2;
unset($mail);
}
if(empty($pseudo)) {
$erreur[pseudo] = 1;
} elseif(strlen($pseudo) > 20) {
$erreur[pseudo] = 2;
unset($pseudo);
} else {
// On vérifie que personne n'utilise déjà le pseudo ou l'adresse e-mail
if(file_exists("membres.txt")) {
$fichier = fopen("membres.txt","r");
while(!feof($fichier)) {
$ligne = fgets($fichier,300);
if(trim(substr($ligne,0,20)) == $pseudo) {
$erreur[pseudo] = 3;
unset($pseudo);
break;
} elseif(trim(substr($ligne,199,50)) == $mail) {
$erreur[pseudo] = trim(substr($ligne,0,20));
unset($mail);
break;
}
}
}
}
if(empty($clef)) {
$erreur[clef] = 1;
} elseif(strlen($clef) > 20 || strlen($clef) < 6) {
$erreur[clef] = 2;
unset($clef);
}
}
/*
* S'il n'y a aucune erreur, on enregistre le membre dans le fichier des membres
* (membres.txt par défaut). Les différents paramètres sont complétés par des espaces
* jusqu'à leur taille maximale.
*
*/
if($validation && !$erreur) {
if(!file_exists("membres.txt")) {
$fichier = fopen("membres.txt","w+");
fclose($fichier);
}
$paramètres = $pseudo.str_repeat(" ",20-strlen($pseudo));
$mot = crypter($clef);
$paramètres .= $mot.str_repeat(" ",80-strlen($mot));
$paramètres .= $nom.str_repeat(" ",50-strlen($nom));
$paramètres .= $prénom.str_repeat(" ",50-strlen($prénom));
$paramètres .= $mail.str_repeat(" ",75-strlen($mail));
$paramètres .= "\n";
$fichier = fopen("membres.txt","a");
fputs($fichier,$paramètres);
fclose($fichier);
$ok = 0;
if(file_exists("membres.txt")) {
$fichier = fopen("membres.txt","r");
while(!feof($fichier)) {
$ligne = fgets($fichier,20);
if(trim($ligne) == $pseudo) {
$ok = 1;
break;
}
}
}
if(!$ok) {
$erreur[serveur] = 1;
}
}
/*
* On demande à l'internaute de remplir un formulaire d'inscription
* Vous pouvez ajouter, modifier ou supprimer certains champs de ce formulaire
* à votre guise mais vous devrez effectuer des modifications correspondantes
* dans certaines parties du script en PHP.
*
*/
if($validation && !$erreur) {
echo "Vous êtes désormais inscrit !<br><br>Votre pseudo est $pseudo...";
} else {
echo "Formulaire d'inscription :<br><br>";
// On affiche les éventuelles erreurs détectées
if($erreur) {
echo "Merci de corriger les erreurs suivantes :<br>";
switch($erreur[nom]) {
case 1 : echo "- Vous n'avez pas donné votre nom<br>"; break;
case 2 : echo "- Vous avez donné un nom erroné (plus de 50 caractères ou pas de lettres)<br>"; break;
}
switch($erreur[prénom]) {
case 1 : echo "- Vous n'avez pas donné votre prénom<br>"; break;
case 2 : echo "- Vous avez donné un prénom erroné (plus de 50 caractères ou pas de lettres)<br>"; break;
}
switch($erreur[mail]) {
case 1 : echo "- Vous n'avez pas donné votre adresse e-mail<br>"; break;
case 2 : echo "- Vous avez donné une adresse e-mail erronée (plus de 75 caractères ou syntaxe incorrecte)<br>"; break;
}
switch($erreur[pseudo]) {
case 1 : echo "- Vous n'avez pas donné de pseudo<br>"; break;
case 2 : echo "- Vous avez donné un pseudo erroné (plus de 20 caractères)<br>"; break;
case 3 : echo "- Ce pseudo est déjà utilisé, choisissez-en un autre<br>"; break;
default :
if($erreur[pseudo]) {
echo "- Vous êtes déjà inscrit (même adresse e-mail) sous le pseudo $erreur[pseudo]<br>"; break;
}
}
switch($erreur[clef]) {
case 1 : echo "- Vous n'avez pas donné de mot de passe<br>"; break;
case 2 : echo "- Vous avez donné un mot de passe erroné (moins de 6 ou plus de 20 caratères)<br>"; break;
}
if($erreur[serveur]) {
echo "- Erreur interne, veuillez revalider votre inscription<br>";
}
}
echo "<form method='post'>
<input type='hidden' name='validation' value=1>
Nom : <input type='text' name='nom' style='border : 1px solid' size=20 value='$nom' maxlength=50><br>
Prénom : <input type='text' name='prénom' style='border : 1px solid' size=20 value='$prénom' maxlength=50><br>
Adresse e-mail : <input type='text' name='mail' style='border : 1px solid' size=30 value='$mail' maxlength=75><br><br>
Choisissez un pseudo : <input type='text' name='pseudo' style='border : 1px solid' size=15 value='$pseudo' maxlength=20><br>
Choisissez un mot de passe (6 caractères minimum) : <input type='password' name='clef' style='border : 1px solid' size=15 value='$clef' maxlength=20><br><br>
<input type='submit' value='Inscription'>";
}
echo "
</body>
</html>";
?>free.fou telecharger seci au
http://biwiki.