Accès protégé php vers page unique

Fermé
Troturier51 - 16 août 2008 à 13:17
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 14 nov. 2010 à 17:41
Tout d'abord bonjour,

Alors le sujet n'est pas clair, je vais donc vous expliquez ma situation.

Voila je suis technicien de maintenance PC et Mac, et je m'occupe également du site web de la société ou je travail.

Sur ce site je souhaite intégrer un espace client, donc jusque la aucun problème je sais protéger l'accès a une page par php en utilisant une base SQL.

C'est sur ce que je souhaite faire que cela devient plus complexe, car pour explication cette espace servirait a diverses choses pour le client, comme par exemple accéder a ces factures ou autres.

Donc pour cela au lieu de pointer par exemple vers une page membre.php a la connexion, je souhaiterais pointer vers une page unique pour chaque client!

exemple:
login: Salade
pointe vers la page salade.php

login: Carotte
pointe vers la page carotte.php

donc voila... je ne vois pas comment être plus explicite, maintenant je m'adresse a la communauté de CCM pour m'aider, tout d'abord est t'il possible de faire ce que je souhaite a l'aide du php et d'une base SQL?

dans le cas contraire que me conseiller vous...

(PS: mes premier essais c'étaient basé sur du CMS, cependant trop contraignant a intégrer juste la parti login dans une page existante et système souvent trop lourd a mon gout)

Merci d'avance pour vos lumière...
A voir également:

3 réponses

La solution de redirection vers telle ou telle page en fonction de l'identifiant est discutable ... Il faudrait entre autres s'assurer que l'utilisateur Salade ne puisse pas accèder à carotte.php ... Et qu'il faudrait donc qu'il existe une page spécfique à chaque utilisateur (comment est créée cette page ?)

Mais il y a peut-être des raisons justifiées à ce besoin, donc voici une solution possible :


$nouvelle_page = 'orange.php';

if($isUtilisateurEnregistre)
{
header('Location :'.$nouvelle_page);
}

La valeur de cette "nouvelle page" peut venir de la base de données, ou construite à partir du login ( avec éventuel appel à rawurlencode ou urlencode )
0
[A.Nonymous]
Et qu'il faudrait donc qu'il existe une page spécfique à chaque utilisateur (comment est créée cette page ?)

justement il y aurait une pages pour chaque client (nous ne somme pas une succursale internationale donc cela ne pose pas de problème de créer une page pour chaque client, certes un gros boulot pour la réalisation mais une fois cela fait il n'y a plus qu'a créer une nouvelle page lors de l'arrivée d'un nouveau client)

moi je sais faire les accès de base du style une page membre contenant

session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();

donc cela ne serais pas le problème suffirais de modifier cette parti sur chaque page pour que seul l'utilisateur authentifié y est accès (du moins j'imagine..)

le problème viendrai plus de la page de login.

donc le but serais si un client par exemple s'appellait "Thomas Hurtier" sont login serais "thomashurtier" et en fonction de ce login pointerais vers la page thomashurtier.php cette page en question contiendrais une valeur session_start propre.

c'est donc pour la page ou se trouve le login ou je ne sai pas comment faire pour appelé une page précise en fonction du login donc en jouant sur cette parti... (ou en replacent cette parti)

if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();

enfin voila j'ai pas mal de notion dans le php mais ne suis pas non plus un pro..
c'est pour sa que je ne m'en sort pas! et ne sais pas comment faire...
0
de nouvelles questions qui me turlupine

serais t'il possible dans cette parti

if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();

d'utiliser une variable pour remplacer "membre.php", c'est variable utiliserais le login et un .php a la fin se qui dirigerais automatiquement le client vers sa page..

ensuite autre question dans cette parti sur la page perso sur lequel le client arriverais

session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();

Est t'il possible de remplacer "login" de $_SESSION['login'] par un variable qui utiliserais ce fameux login ainsi si un des client essai d'atteindre une autre page qui ne lui est pas consacrer il ne peu pas!

car le système de session php de base une fois authentifier permet d'accéder a toute les pages qui utilise ce système.

voila encore des questions, toujours des questions merci d'avance si l'on peu me renseigner.
0
wwapwapdadoowap
14 nov. 2010 à 14:02
Salut,

J'ai exactement le meme besoin. Pareil je prefere creer physiquement la page client .. donc ca devrait etre plutot simple a realiser .. juste des identifiants pointant vers une page unique...

As- tu reussi a faire ce que tu voulais ?

Des idées?
0
Bonjour,
Page identification du membre :
<?php
// Pour l'exemple $_POST['login'] contient la valeur 'Twinpics'
// Requête pour chercher dans la table membre
// si le login et le mot de passe associé existent
$query = mysql_query("SELECT login FROM membre WHERE login={$_POST['login']} AND password={$_POST['motdepasse']}");

if(mysql_num_rows($query) != 0) {
	// Si la requête contient 1 résultat
	session_start();
	$_SESSION['login'] = $_POST['login'];
	// Redirection vers la page perso du membre 'Twinpics.php'
	header("Location: " .$_SESSION['login']. ".php");
} else {
	// Redirection page accueil site web
	header("Location: index.php");
}
?>

Dans la page physique du membre (pour l'exemple Twinpics.php) :
<?php
session_start();
// Renseigner cette variable dans chaque page perso
// en fonction du login du membre
$page_perso = 'Twinpics';

if($_SESSION['login'] != $page_perso) {
	// Redirection page accueil site web
	header("Location: index.php");
}
?>
<html>
<!-- Ici le code HTML de la page Twinpics.php -->
</html>
0
wwapwapdadoowap
14 nov. 2010 à 16:04
super, ca a l'air assez simple pour moi ! vais essayer tout de suite! merci beaucoup
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
Modifié par arthezius le 14/11/2010 à 16:14
Ce serai plus simple de faire une page unique qui changerai en fonction du login ou d'une variable dans l'url (voire une combinaison des deux).


Exemple:
Une fois identifié avec une variable de session/cookie, il est facile de faire varier le contenu d'une page.

Supposons que les données client soit contenu dans une table "membres".
Le nom du membre est contenu dans une varaible de session.
On peu donc créer une page membre qui commencera comme ça:
Page: membre.php
<?php 
$sql = 'SELECT * FROM tr_client WHERE login="'.mysql_real_escape_string($_SESSION['login']).'"';  

$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
$data = mysql_fetch_array($req); 

echo'<h1>Membre: '.$data['login'].'</h1>'; 

//Reste de la page 
?>


La variable $data est un tableau contenant tout les données de la table "membres" concernant le membre actuellement identifié.
Autrement dit, cette même page unique variera pour chaque membre.

Autre solution, suivant le même principe, plutôt que d'utiliser la variable de session directement dans la requete SQL, on peux utiliser une variable contenu dans l'url de la page.
Page: membre.php?login=arthezius

<?php 
if(isset($_SESSION['login']) && isset($_GET['login'])) 
 { 
 $sql = 'SELECT * FROM tr_client WHERE login="'.mysql_real_escape_string($_GET['login']).'"';  

 $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
 $data = mysql_fetch_array($req); 

 echo'<h1>Membre: '.$data['login'].'</h1>'; 

 //Reste de la page 
 } 
else{ 
 header("Location: index.php"); 
 exit(); 
 } 
?>

Avec un url rewriting, tu peux aussi réécrire l'url en arthezius.html par exemple
0
Twinpics, J'ai une petite question ... Pourriez vous m'envoyer une de vos adresses mail si vous avez 1 minute? Je tiens a ce que l'echange reste entre nous. Merci! mon mail: justinmeter@gmail.com
0
wwapwapdadoowap
14 nov. 2010 à 17:06
Merci Arthezius pour la réponse je vais me pencher dessus .. Avec du mal mais beaucoup d'interet!
0