[technique] identification + membres dans un site
Forum Programmation : [technique] identification + membres dans un site
un peutit topiqueu pour clarifier c qu'est une identification.
s'identifier ou etre membre.... vaste programe ;-)
en gros faut une table (MySQL) qui contient les infos des membres (ben oui)
-pseudo
-mot_de_passe
-email
-nom
-prenom
...
donc faut déja un formulaire d'inscription...
puis faut valider (ou pas cette inscription...)
ensuite ya le systeme d'identification...
ya plusieurs techniques en voila une :
dans un petit formulaire on entre login mot de passe, le script (php) verifie que le login correspond à un membre existant et que le mot de passe est le bon !
en meme temps on genere un identifiant unique et assez compliqué.... avec un code style $id_session=md5(uniqid(rand()));
cet id_session est stocké côté serveur dans une table par ex
table connexion :
- id_session
- login
- expiration
expiration peut servir a definir jusqu'a quand la connexion est valide
coté client (navigateur) l id_session est stocké dans un cookie.
à chaque fois que le visiteur appelle une page on verifie si son id_session correspond a quelque chose dans la table connexion... si c le cas c que c un membre identifié !!!! CQFD
en plus en interrogeant la table connexion on a des infos sur qui s'est logé quand !
autre technique :
apres le formulaire login/mot de passe on met le login et le mot de passe dans des cookies et on teste a chaque fois si c OK (moin elegant et le mot de passe transite a chaque requete...)
voilou les bases
oui c bien mais quant on connais pas le php c'est grave chaud j'essaye d'apprendre mais c'est un truc de fou!!
salut ! y'a pas un petit script qui traine tout simple comme l'explication ? lol :$
oki je vais faire un petit script tout simple avec commentaire ....
mais la y a bobonne qui me rearde mechamment...
alors po tout de suite ;-/
hmm
ça m'interesse ça
je vous potasserais bien un système d'authentification, simple et secure (si possible)
en plus en lisant ton message, c'était grosso modo mon idée
bon on a qu a commencer simple et le faire evoluer comme ça ça sera didactique en plus !
hmm un projet php/sql qui née sur IDN sa promet ...
bonne chance ;-)
voila pour la partie d'identification
reste a faire un formulaire d'inscription...
login : toto
password : azerty
----------------------------------------------------------------------
fichier mapage.php
----------------------------------------------------------------------
<?
$link = mysql_connect("localhost","root","" );
mysql_select_db("test",$link);
// pour l'instant pas de membre
$login_membre="";
// si une cle existe cote client dans un cookie
if(isset($_COOKIE['cle']))
{
// je cherche si cette cle existe cote serveur...
$query="select * from connexion where BINARY cle = '$_COOKIE[cle]'";
$results=mysql_query($query,$link);
$connexion=mysql_fetch_array($results);
mysql_free_result($results);
//si une connexion correspond ! on resupere le login
if($connexion) $login_membre=$connexion['login'];
}
?>
<html>
<body>
<b><?
// il suffit de tester la variable $login_membre...
if($login_membre)
{
?>
bonjour membre <? echo $login_membre; ?> connecté<br>
ça va bien ?
<?
}
else
{
?>
bonjour invité
<?
}
?>
</b><br><br>
blabla<br>
la c le formulaire d'identification qui appelle verifier.php
<form method=post action="verifier.php">
un champ caché qui contient l'url à afficher si l'identification réussit
<input type=hidden name=urlok value="mapage.php"><br>
un champ caché qui contient l'url à afficher si l'identification echoue
<input type=hidden name=urlko value="ko.php"><br>
login <input type=text name=login value=""><br>
password <input type=password name=password value=""><br>
<input type=submit value="OK">
</form><br>
blabla<br>
</body>
</html>
----------------------------------------------------------------------
fin : fichier mapage.php
----------------------------------------------------------------------
----------------------------------------------------------------------
fichier verifier.php
----------------------------------------------------------------------
<?
$link = mysql_connect("localhost","root","" );
mysql_select_db("test",$link);
//cle vide
$cle="";
// je cherche le membre qui correspond au login tapé...
$query="select * from membre where login = '$_POST[login]'";
$results=mysql_query($query,$link);
$membre=mysql_fetch_array($results);
mysql_free_result($results);
//si aucun membre ne correspond >> urlko
if(!$membre) $url=$_POST['urlko'];
//si le mot de pass n'est pas le bon >> urlko
else if($membre['password']!=$_POST['password']) $url=$_POST['urlko'];
else
{
//si c ok creation d'un identifiant unique...
$cle=md5(uniqid(rand()));
//on le stock dans une table connexion en l'associant au login...
$query="replace into connexion(cle, login) values ('$cle','$membre[login]')";
mysql_query($query,$link);
// l'url de destination est l'url OK...
$url=$_POST['urlok'];
}
//on stock la clé côté client dans un cookie...
setcookie("cle",$cle);
// elle est vide si l'identification a echoué
?>
<html>
<body onLoad="location.href='<? echo $url; ?>'">
</body>
</html>
----------------------------------------------------------------------
fin : fichier verifier.php
----------------------------------------------------------------------
----------------------------------------------------------------------
fichier ko.php
----------------------------------------------------------------------
<html>
<body>
tu t'es gourré
<a href="mapage.php">retour</a>
</body>
</html>
----------------------------------------------------------------------
fin fichier ko.php
----------------------------------------------------------------------
----------------------------------------------------------------------
script pour la base de donnée MySQL
----------------------------------------------------------------------
USE test;
# --------------------------------------------------------
#
# Table structure for table `connexion`
#
CREATE TABLE `connexion` (
`cle` varchar(32) NOT NULL default '',
`login` varchar(16) NOT NULL default '',
PRIMARY KEY (`cle`)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Table structure for table `membre`
#
CREATE TABLE `membre` (
`type` varchar(8) NOT NULL default '',
`login` varchar(16) NOT NULL default '',
`password` varchar(16) NOT NULL default '',
PRIMARY KEY (`login`)
) TYPE=MyISAM;
#
# Dumping data for table `membre`
#
INSERT INTO `membre` VALUES ('membre', 'toto', 'azerty');
----------------------------------------------------------------------
fin script pour la base de donnée MySQL
----------------------------------------------------------------------
Ah ouais, c'est basique ton système !
moi je suis en train d'écrire ...
si vous voulez une idée du système (ça varie encore)
http://lissyx.dyndns.org/www.infos [...] c-auth.txt
ben ouais j'ai di que je simplifier c un topic pour faire comprendre pas pour en mettre plein la vu ...
j'ai enlevé toute utilisation de fonction, utilisation d'include et autre ....
c basic mais c le meme principe
je dirais meme que tu te complique la vie ;-)
pourquoi faire simple quand on peut faire compliqué ?
Bon, j'ai quelque chose de fonctionnel, mais pas utilisable forcément
fais voir !!!! fais voir !!!!
ya toujours a apprendre en voyant le code d'autrui ;-)
http://lissyx.dyndns.org/www.infos [...] ources.php
et voilà l'horreur, allez y doucement
(si vous vous mangez des timeout, réeessayez ...)
bonjour,
j'ai commence a faire ce qui est expliqué plus haut mais je bloque ...
que fait on du script pour la base SQL ????
on le met dans un fichier .txt .html .php .sql ?????
merci de m'aider, c ma 1ere base
salut pour te repondre
| Citation : j'ai commence a faire ce qui est expliqué plus haut mais je bloque ...
|
pour le script tu va dans phpmyadmin de ton hébergeur et tu entre les commandes en copier/coller dans la boite de dialogue sql
sinon tu crée un fichier install.php et un fichier config.php avec tous les détails de ta bdd
puis voila un exemple du contenu de ton fichier install.php:
---install.php contenu:---
<?php
require("config.inc.php" );
include("$functions/functions.inc.php" );
USE test;
# --------------------------------------------------------
#
# Table structure for table `connexion`
#
connecter();
$query="CREATE TABLE `connexion` (
`cle` varchar(32) NOT NULL default '',
`login` varchar(16) NOT NULL default '',
PRIMARY KEY (`cle`)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Table structure for table `membre`
#
CREATE TABLE `membre` (
`type` varchar(8) NOT NULL default '',
`login` varchar(16) NOT NULL default '',
`password` varchar(16) NOT NULL default '',
PRIMARY KEY (`login`)
) TYPE=MyISAM;
#
# Dumping data for table `membre`
#
INSERT INTO `membre` VALUES ('membre', 'toto', 'azerty');
$result=@mysql_query($query);
?>
voila
A+
Il y a 362 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
