Acces securise : session membre : uniquement en php

Soyez le premier à donner votre avis sur cette source.

Vue 31 759 fois - Téléchargée 2 886 fois

Description

Vous trouverez dans le zip 7 fichiers
un index un fichier log un fichier secure et deux repertoires contenant chacun deux fichiers

le principe est simple une identification par nom d'utilisateur et mot de passe
le traitement des informations par le fichier log
puis l'acces au donnees

un id est genere et sert de securite celui mis dans l'exemple et peut etre un peu leger mais a chacun de creer un nombre ou un mot qui varie mais que l'on peut genere plusieurs fois pendant une duree (determinee par l'algo ki genere l'id si dependant de heure --> en heure , ... etc)

Ici l'ip du client, l'ip du serveur et la date sont pris en compte par une simple addition a vous de creer quelquechose de plus performant.......

Les trois bouts de codes interessants:

Source / Exemple :


//dans le fichier log

$ipserv = $_SERVER['HTTP_HOST'];//l'ip du serveur
$ipclient = $_SERVER['REMOTE_ADDR'];//l'ip du client
$id = (($ipclient*strftime('%d.%m.%Y')+$ipserv)*1000000);//creer le calcul que vous voulez tant kil varie suffisamment

if(!empty($_POST['user']))//verif d'existence de la variable
{
	$user = $_POST['user'];
	$url = $user.'/index.php?id='.$id;//creation de la destination

	if(!empty($_POST['pass']))//verif d'existence de la variable
	{
		$pass = $_POST['pass'];
		
		if($user == 'test')//pour le premier utilisateur
		{
			if($pass != 'test')
				Header('Location: index.php?error=fo');//renvoi lerror fo a lindex
			else
				Header('Location: '.$url);
		}
		else if($user == 'test2')//pour le deuxieme
		{
			if($pass != 'test2')
				Header('Location: index.php?error=fo');//renvoi lerror fo a lindex
			else
			{
				Header('Location: '.$url);
			}
		}
		else
			Header('Location: index.php?error=fo');//renvoi lerror fo a lindex
	}
	else
		Header('Location: index.php?error=padpass');//renvoi lerror padpass a lindex
}
else
	Header('Location: index.php?error=paduser');//renvoi lerror paduser a lindex

//dans un fichier secure.php par exemple

$ipserv = $_SERVER['HTTP_HOST'];//l'ip du serveur
$ipclient = $_SERVER['REMOTE_ADDR'];//l'ip du client
$id = (($ipclient*strftime('%d.%m.%Y')+$ipserv)*1000000);//creer le calcul que vous voulez tant kil varie suffisamment

$url = "../";

if(!empty($_GET['id']))//verif d'existence de la variable
{
	if($_GET['id'] != $id)//renvoi si id faux
		header('Location: '.$url);
}
else
	header('Location: '.$url);//renvoi si pas d'id

//chaque page a protoge doivent posseder le code (en haut c mieux)
<?
include('secure.php');//gerer la localisation de secure.php a partir de du fichier ou vous ecrivez cette ligne
?>
//pour les acces a d'autres pages du meme compte

a href='index1.php?id=<? echo $id; ?>'>test a l'interieur d'un compte</a>

//important car si certaines pages ne sont pas proteges elles sont donc accessible en piquant l'url et si le ?id=<? echo $id; ?> est oublie on se fait jete

Conclusion :


J'espere que mes explications sont claires si vous voulez des precisions sur ce code ecrivez des commentaires ou envoye moi un message je repondrais...

Attention car le fichier secure.php peut etre facilement exploiter peut etre c'est plus lourd mais plus sur de mettre le code dans chaque page et pas d'include

Si certains trouvent cela leger je suis interesse par leur methode pour detourner cette securite et aller voir sur http://www.alexscott.cjb.net/vos_pages_persos/ piquer des mots de passes ou des noms d'utilisateurs ou envoyer moi l'algo de l' id cela me permettra si vous m'expliquer votre methode d'afiner ce systeme..........

Je ne dis pas que ce systeme est le mieux mais il a l'avantage d'etre essentiellement en php cela est fait pour des acces assez restreint pour un nombre d'utilisateur pas tres important sinon le fichier log devient vite enorme et l'acces hyperlent!!!!!!!

alexscott

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
5
Date d'inscription
samedi 3 mars 2007
Statut
Membre
Dernière intervention
9 avril 2007

comment fait 'on pour ajouter un utilisateur?
unr fois logger sur quel dossier dois ton ariver?

merci
Messages postés
3
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
7 mars 2005

oki merci :)

voila juste une confirmation en réponse a kirua (la partie sur les routeurs est en fin d'articles)

[URL]http://frederic.bouchery.free.fr/?2004/09/12/17-Ip-Ip-Ip-Houra/URL
Messages postés
54
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
10 novembre 2006

"Ici l'ip du client, l'ip du serveur et la date sont pris en compte par une simple addition a vous de creer quelquechose de plus performant......."
"$id = (($ipclient*strftime('%d.%m.%Y')+$ipserv)*1000000);//creer le calcul que vous voulez tant kil varie suffisamment"

Ce qu'il faut comprendre de ces 2 "phrases" :
- generation d'un $id unique "sauf exceptions" donc il suffit de creer une formule adapte au cas
- la formule presente n'est pas interessante VU QU'ELLE EST PRESENTEE
- c'est un EXEMPLE pour montrer le type de calcul "ABSURDE" qui permettent de generer un $id

BIEN SUR !!! Ce code n'a d'interet QUE si on ne peut pas utiliser les sessions (generation d'un SID automatique et bien plus sur) ou qu'on ne le veut pas.
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

C'est intéressant sa remarque, ne le mords pas comme ça.
Et pour ta réponse, je ne sais pas si le serveur forwarde l'IP d'origine du paquet, mais ça me paraît le plus sensé (le routeur doit agir comme une sorte de gate dans ce cas). Alors, il n'y a pas de problème. Sinon, faut creuser, mais je pense que c'est safe.
Messages postés
3
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
7 mars 2005

houla t un nerveux toi :)
t'enflamme pas jme suis surement mal exprimé:
ce que je voulais dire c'est si on utilise ton code en local dans le cas d'un intranet par exemple.
Si le reseau local est structuré en plusieur sous reseau. Pour relier les differents sous reseau on a besoin de routeurs.
Or si ton server est sur un sous reseau lorsqu'il recevra une requette http ($_SERVER['REMOTE_ADDR']; par exemple) ce sera l'adresse ip du routeur et non celle du client qui s'affichera. Le probleme qui me venait a l'esprit ct comment tu différencies différents utilisateurs de ce sous reseau ?
ct juste une question comme ca j'avais besoin d'aide pas de me faire traiter... :/
Je n'utilise pas du tout ton code mais j'aime bien matté différent codes pr voir les bonnes idées.
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.