Espace membre PHP sans mySQL

Fermé
Utilisateur anonyme - 26 août 2009 à 11:42
 Utilisateur anonyme - 5 nov. 2009 à 19:49
Bonjour,
voilà mon problème j'ai trouvé un code php qui permet d'avoir un espace membre sans mySQL tous les utilisateurs qui s'inscrivent son sur mon fichier .txt nommé "membre.txt".
Mon problème: les utilisateur peuvent s'inscrire sur la page "inscription.php" tous marche il est aussi inscrit sur le fichier "membre.txt" mais quand on veux se connceté à l'espace membre on vas sur "connexion.php" on rentre les identifiant et on clic sur se connceter et rien on retombe sur "connexion.php"
Donc pouvez vous s'il vous plait corriger mes page :
-----------------------------------------------------------------------------------------------------------------------------

Page 1: configuration.php

<?


define("PSEUDO",$pseudo);
define("CLEF",$clef);




define("A",876);
define("B",478);
define("C",147);
define("D",691);




function cache() {


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) {


for($i = 0; $i < strlen($clef); $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) {


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;
}
?>

--------------------------------------------------------------------------------------------------------------------------------

page 2: inscription.php

<?
include("configuration.php");

echo "<html>
<head>
<title>Section membre / Inscription</title>
</head>
<body>
";


$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];


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 {


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);
}

}


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;
}

}




if($validation && !$erreur) {

echo "Vous êtes désormais inscrit !<br><br>Votre pseudo est $pseudo...";

} else {

echo "Formulaire d'inscription :<br><br>";


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>";

?>

-------------------------------------------------------------------------------------------------------------------------------

page 3: connexion.php

<?php

include("configuration.php");


$pseudo = trim($HTTP_POST_VARS[pseudo]);
$clef = trim($HTTP_POST_VARS[clef]);
$validation = $HTTP_POST_VARS[validation];


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);
}

}


$ok = 0;

if(!$erreur) {
$ok = vérification($pseudo,crypter($clef));
}

if(!$ok && $validation) {
unset($clef);
$erreur[clef] = 2;
}


if($validation && !$erreur) {



$clef = crypter($clef);


header("Location:membre.php ?pseudo=$pseudo&?clef=$clef");

} else {




echo "<html>
<head>
<title>Section membre / Inscription</title>
</head>
<body>
Accès à la zone membre :<br><br>";


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>
";


}

?>
-------------------------------------------------------------------------------------------------------------------------------
page 4 : membre.php
<?
include("configuration.php");

if(vérification($pseudo,$clef)) {



cache();



echo "<html>
<head>
<title>Espace membre</title>
</head>
<body>
Bienvenue !
Votre pseudonyme est ".$pseudo."<br><br><a href='membre.php?pseudo=".$pseudo."&clef=".$clef."'>Exemple de lien dans l'espace membre</a>
</body>
</html>";


} else {


header("Location:connexion.php");

}
?>

--------------------------------------------------------------------------------------------------------------------------------
page 5: type.php
<?
include("configuration.php");

if(vérification($pseudo,$clef)) {


cache();


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>";


} else {



header("Location: connexion.php");

}
?>

------------------------------------------------------------------------------------------------------------------------------
page 6 : 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");

}
?>
--------------------------------------------------------------------------------------------------------------------------

Et le fichier .htaccess
pour prtotéger le tout !

voilà merci !

c'est très très important
A voir également:

8 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 août 2009 à 11:49
function vérification($pseudo,$clef) {


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; // je ne vois pas a quoi sert ce break ? essayes en le supprimant
}
}
}
}
return $ok;
}
0
Archeus01 Messages postés 1571 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 449
26 août 2009 à 11:58
Bjr,
Le break ser à sortir de la boucle dans laquelle on est de manière général, ici du while concernant la lecture du fichier. En effet, ce n'est pas utile de continuer à analyser le fichier lorsqu'on a trouvé le pseudo avec le mdp correspondant.
Cdt,
0
MiWi86-33 Messages postés 142 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 20 juin 2011 9
26 août 2009 à 11:53
header("Location:membre.php ?pseudo=$pseudo&?clef=$clef");

ptèt oter l'espace ...


header("Location:membre.php?pseudo=$pseudo&?clef=$clef");

page 3: connexion.php

<?php

include("configuration.php");


$pseudo = trim($HTTP_POST_VARS[pseudo]);
$clef = trim($HTTP_POST_VARS[clef]);
$validation = $HTTP_POST_VARS[validation];


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);
}

}


$ok = 0;

if(!$erreur) {
$ok = vérification($pseudo,crypter($clef));
}

if(!$ok && $validation) {
unset($clef);
$erreur[clef] = 2;
}


if($validation && !$erreur) {



$clef = crypter($clef);


header("Location:membre.php?pseudo=$pseudo&?clef=$clef");

} else {




echo "<html>
<head>
<title>Section membre / Inscription</title>
</head>
<body>
Accès à la zone membre :<br><br>";


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>
";


}

?> 
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 août 2009 à 13:10
dans le fichier membre.php tu mets:

if(vérification($pseudo,$clef)) {

c'est un test qui dit si vérification(...) == true

hors ta fonction renvoie OK=1 si pseudo et clef bons

alors soit tu mets return=false si pas bon dans ta fonction ou tu fais un test comme ça:

if(vérification($pseudo,$clef)==1) {
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 août 2009 à 13:12
en complement la solution si tout ok de mettre header(.... avec dans l'url le pseudo et clef n'est pas trop sécure

passes plutot par les sessions php

tu mets ces valeurs dans des variables de session que tu testes ensuite à chaque page

et si inexistantes tu renvoi sur connexion.php
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 août 2009 à 13:26
peut tu me mettre ton truc :
if(vérification($pseudo,$clef)==1) {

dans le code s'il te plait !

merci !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 août 2009 à 13:34
Un peu fainéant qd même:

page 4 : membre.php
<?
include("configuration.php");

if(vérification($pseudo,$clef)==1) {



cache();



echo "<html>
<head>
.....
0
Utilisateur anonyme
26 août 2009 à 13:40
Dsl ça ne marche pas
je sais plus quoi faire !
0
Utilisateur anonyme
5 nov. 2009 à 19:49
ça fais longtemps mais bon je mes en résolu car j'ai trouver un autre script avec my sql !
lol
a+
[résolu]
0