8791 sujets
Salut,
Il existe, il me semble, pas mal de discussion là dessus.
Mais résumons les quelques méthodes :
- .htaccess & .htpasswd (l'un demande la règle d'accès, l'autre contient les idenfiants de connexions)
- $_SESSION[''] php (tout est traité par le php, les sessions ne dure que le temps d'une visite, à la fermeture du navigateur, il faut se relogger, sauf si ... cookie il y a
- $_COOKIE[''] php, (la personne se loggue, on crée un cookie, qui permet d'identifier le visiteur le long de son parcours, on peut donner une durée de vie au cookie)
Il y a peut être d'autre méthodes, mais je ne les connais pas.
Dis en nous plus sur ton projet, pour en déterminer les besoins.
Il existe, il me semble, pas mal de discussion là dessus.
Mais résumons les quelques méthodes :
- .htaccess & .htpasswd (l'un demande la règle d'accès, l'autre contient les idenfiants de connexions)
- $_SESSION[''] php (tout est traité par le php, les sessions ne dure que le temps d'une visite, à la fermeture du navigateur, il faut se relogger, sauf si ... cookie il y a
- $_COOKIE[''] php, (la personne se loggue, on crée un cookie, qui permet d'identifier le visiteur le long de son parcours, on peut donner une durée de vie au cookie)
Il y a peut être d'autre méthodes, mais je ne les connais pas.
Dis en nous plus sur ton projet, pour en déterminer les besoins.
Explication des Sessions php et cookie
Un tutorial pour "comprendre" le fonctionnement d'une page protégé, enfin d'un système. Déjà apprends ça, et une fois que c'est bon, viens proposer les solutions pour protéger l'accès à une page.
Un tutorial pour "comprendre" le fonctionnement d'une page protégé, enfin d'un système. Déjà apprends ça, et une fois que c'est bon, viens proposer les solutions pour protéger l'accès à une page.
Bonjour,
Super_baloo8 j'ai adapté le code que tu m'as fourni à ma page et ela fonctionne très bien. Merci
Un point de détail: La page conserve l'historique des mots de passe employés et en clair.
Comment peut-on empêcher cela?
Autre question:
Une fois l'accès obtenu, j'ai un formulaire que je voudrait du style de ce que nous avons sur ce site pour envoyer un post. As-tu un tutorial à ce sujet?
Merci
Modifié par Boubou57 (26 Jun 2008 - 15:58)
Super_baloo8 j'ai adapté le code que tu m'as fourni à ma page et ela fonctionne très bien. Merci
Un point de détail: La page conserve l'historique des mots de passe employés et en clair.
Comment peut-on empêcher cela?
Autre question:
Une fois l'accès obtenu, j'ai un formulaire que je voudrait du style de ce que nous avons sur ce site pour envoyer un post. As-tu un tutorial à ce sujet?
Merci
Modifié par Boubou57 (26 Jun 2008 - 15:58)
Je ne vois pas ce que le javascript vient faire là, on s'en fous royalement.
Une idée pour protéger ton champs aussi, change l'attribut "name" et "id" pour éviter que n'importe quoi ne soit garder, par exemple en php :
Après, pour traiter ton formulaire, il faut que tu apprennes un langage de programmation. Par exemple PHP sur le site du Zéro, fouilles et tu devrais tout trouver par toi même j'en suis sur !
Une idée pour protéger ton champs aussi, change l'attribut "name" et "id" pour éviter que n'importe quoi ne soit garder, par exemple en php :
<?php
$name_or_id = "mon_champs_".$time();
?>
<label for="<?php echo $name_or_id; ?>">Mon champ</label>
<input id="<?php echo $name_or_id; ?>" name="<?php echo $name_or_id; ?>" type="password" />
?>
Après, pour traiter ton formulaire, il faut que tu apprennes un langage de programmation. Par exemple PHP sur le site du Zéro, fouilles et tu devrais tout trouver par toi même j'en suis sur !
Salut,
Tu peux faire ceci en exemple :
Ce code, je l'ai fait de tête sans test mais je pense qu'il devrait fonctionner et t'aider
. Ceci est un bon schémas de base il me semble. certes il est succinct. Il reste des améliorations à faire tout de même (connexion à la bdd, cryptage des données, etc.).
En souhaitant t'avoir aider.
@+
Tu peux faire ceci en exemple :
<?php
if ($_REQUEST['envoyer']=="envoyer"){ //si le formulaire est soumis
if($_REQUEST['login']=="mon login" && $_REQUEST['pass']=="mon mot de passe"){ //vérification du login ET du mot de passe
header("locations:mon_lien.php"); //SI ok redirection vers...
}else{
formulaire(); //Sinon affichage du formulaire
}else{
formulaire(); //Sinon affichage du formulaire
}
function formulaire (){
echo "<form name=\"mon_formulaire\" action=\"".$_SERVER[PHP_SELF]."\" method=\"post\">";
echo '<input type="text" name="login" />';
echo '<input type="password" name="pass" />';
echo '<input type="submit" name="envoyer" values="envoyer" />';
echo '</form>';
}
?>
Ce code, je l'ai fait de tête sans test mais je pense qu'il devrait fonctionner et t'aider

En souhaitant t'avoir aider.
@+
Salut,
Merci de toutes vos réponses.
Concernant $_POST ou $_REQUEST....
j'avoue que je ne saisi pas très bien
Voilà ce que j'ai fait (le code viendra par la suite)
- J'ai construis une table mysql avec dedans les login et mots de passe des gens autorisés.
- J'ai Réussi à récupérer les données de la table (GROS progrès pour moi
)
- J'essaye de faire maintenant le lien entre les données récupérée sur la base de données et le petit formulaire que j'ai créé (avec votre humble aide
). Cela afin de comparer les valeurs afin de donner accès ou non.
ET là je galère encore car mes connaissances sont très sommaires
Merci de toutes vos réponses.
Concernant $_POST ou $_REQUEST....

Voilà ce que j'ai fait (le code viendra par la suite)
- J'ai construis une table mysql avec dedans les login et mots de passe des gens autorisés.
- J'ai Réussi à récupérer les données de la table (GROS progrès pour moi

- J'essaye de faire maintenant le lien entre les données récupérée sur la base de données et le petit formulaire que j'ai créé (avec votre humble aide

ET là je galère encore car mes connaissances sont très sommaires

En gros, $_REQUEST est très très très, voir trop trop trop large.
Si tu récupère t'es variables de formulaire par $_REQUEST, ces variables peuvent venir :
- De champs de formulaire (en méthode $_POST (transparent pour l'utilisateur))
- De champs de formulaire (en méthode $_GET (affiché dans l'URL))
- De cookies
Il est largement préférable de contrôler la source de ses variables.
Donc si tu utilise $_POST tu sauras avec certitude, que les variables que tu récupères viennent du formulaire, et non pas d'un cookie ou de paramètre rajouté dans l'url.
Fin de parenthèse
Toutes mes félicitations, tu as l'air de bien progressé !
Si tu as besoin d'un coup de pouce n'hésites pas !!!
Si tu récupère t'es variables de formulaire par $_REQUEST, ces variables peuvent venir :
- De champs de formulaire (en méthode $_POST (transparent pour l'utilisateur))
- De champs de formulaire (en méthode $_GET (affiché dans l'URL))
- De cookies
Il est largement préférable de contrôler la source de ses variables.
Donc si tu utilise $_POST tu sauras avec certitude, que les variables que tu récupères viennent du formulaire, et non pas d'un cookie ou de paramètre rajouté dans l'url.
Fin de parenthèse

Toutes mes félicitations, tu as l'air de bien progressé !
Si tu as besoin d'un coup de pouce n'hésites pas !!!
Salut, merci de vos encouragements
Bon! J'arrive avec le code ci-dessous à presque obtenir l'effet souhaité:
Cela fonctionne bien si dans ma base de données, il n'y a qu'un seul utilisateur.
Mais dès que je mets un second utilisateur, mon code ne tient compte que du dernier enregistré.
Je me doute que cela vient de la boucle while
Si vous pouvez me faire avancer. ...
Modifié par Boubou57 (02 Jul 2008 - 15:38)

Bon! J'arrive avec le code ci-dessous à presque obtenir l'effet souhaité:
<?php
if($connection = mysql_connect("localhost","mon_login_bd","mon_passe_bd")){
if(mysql_select_db("ma_base_de_donnees")){
echo "succès de connexion.";
$request = "SELECT * FROM `ma_table`";
if($result = mysql_query($request)){
while($ligne = mysql_fetch_row($result)){
$id = $ligne[0];
$prenom = $ligne[2];
$nom = $ligne[1];
$identifiant = $ligne[3];
$cle_entree =$ligne[4];
}
if (isset($_POST['mot_de_passe']) && isset($_POST['login'])){
$mot_de_passe = $_POST['mot_de_passe'];
$login = $_POST['login'];
}
else {
$mot_de_passe = "";
$login = "";
}
if ($mot_de_passe == $cle_entree && $login == $identifiant){
echo "Mot de passe correct <br />";
echo "bonjour $prenom";
}
else{
?>
<form action="ma_page.php" method="post">
Identifiant:
<input type="text" name="login" /><br>
Mot de passe:
<input type="password" name="mot_de_passe" /><br>
<input type="submit" value="Valider" /><br>
</form>
<?php
}
}
else{
echo"Erreur requête";
}
}
else{
die("Echec de connexion à la base.");
}
mysql_close($connection);
}
else{
die("Echec serveur");
}
?>
Cela fonctionne bien si dans ma base de données, il n'y a qu'un seul utilisateur.

Mais dès que je mets un second utilisateur, mon code ne tient compte que du dernier enregistré.

Je me doute que cela vient de la boucle while
Si vous pouvez me faire avancer. ...

Modifié par Boubou57 (02 Jul 2008 - 15:38)
Fais une requête sur ta table par rapport au "Login de la personne, si tu ne trouve rien, c'est que l'utilisateur n'existe pas, si tu trouve quelques chose, compare le mot de passe.
Ca donnerais quelques chose comme ceci :
Modifié par Super_baloo8 (02 Jul 2008 - 15:51)
Ca donnerais quelques chose comme ceci :
<?php
$request = "SELECT password, id FROM ma_table WHERE login ='".$_POST['login']."'";
$result = mysql_query($request);
$datas = mysql_fetch_assoc($result);
if(!$datas['id'])
{
echo 'Utilisateur inexistant';
}
elseif($datas['id'] AND ($_POST['password'] != $datas['password'])
{
echo '<h1>Mauvais mot de passe</h1>';
}
elseif($datas['id'] AND ($_POST['password'] == $datas['password'])
{
echo '<h1>Bonjour !</h1>';
}
else
{
echo '<h1>BUG</h1>';
die();
}
mysql_close();
?>
Modifié par Super_baloo8 (02 Jul 2008 - 15:51)
Salut,
Comme je vois que tu avances bien, je pense qu'il serait intéressant de voir les fonctions
MD5 ou SHA1 ou CRC32 de plus près pour des raisons de sécurité supplémentaires
.
En gros, ces fonctions cryptent (non-aléatoirement) les données. même l'admin ne peut connaître le pass.
@+
Modifié par Nolem (02 Jul 2008 - 18:39)
Comme je vois que tu avances bien, je pense qu'il serait intéressant de voir les fonctions
MD5 ou SHA1 ou CRC32 de plus près pour des raisons de sécurité supplémentaires

En gros, ces fonctions cryptent (non-aléatoirement) les données. même l'admin ne peut connaître le pass.
@+
Modifié par Nolem (02 Jul 2008 - 18:39)