Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2006, 05h56   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 18
Points : 10
Points : 10
Par défaut Cherche conseil de connaisseur

(si un sujet similaire existe mettez le lien qui le pointe svp)
voila j'ai résament débuter le php et je dois produire un site avec une gestion simple d'utilisateur(dont un administrateur) et le choix de langue (francais/anglais)
toutes les pages doivent posseder:
un sommaire (avec un contenu variable)
changement de langue
recherche
login/pass
acces a un "espece de petit forum"
contact

j'ai pensé faire comme table:
->langues : id, langue

->droits : id, droit, lecture, ecriture

un visiteur aura que des droit de lecture
un inscrits aura lecture + ecriture partiel
admin "god-mode"

->pages : id, page, #droit(, meta..).

->textes : #langue, #page, ref, ordre, texte

->utilisateur : id, pseudo, mdp, nom, prenom, mail, #droits

vos commentaire svp !!
kastha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 08h35   #2
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
dans langue je ralouterais codelangue (fr, en..) car c'est tres pratique pour la navigation et + facile à retenir
-> index.php?lang=fr

Citation:
un inscrits aura lecture + ecriture partiel
je ne vois pas le coté "partiel" dans tes tables

pour tes pages, je conseillerais de faire une table avec les info générales de pages (communes à chaque langues) et une table avec une entrée par page ET par langue.
ça te permettra d'eviter les doublons

Sinon, ça m'a l'air bien réfléchi tout ça
simple mais efficace
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 23h14   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 18
Points : 10
Points : 10
merci pour tes conseils
en faite sa ma donné une autre idee pour la gestion des informations

utiliser 2 tables :

***peres definit en faite des groupes sa peut etre des pages, des menus ou juste des groupes
peres( codname varchar(64) index, description varchar(64), #right varchar(64) references rights(codmane))

ex :

peres("index", "contenu toujours present", "visiteur")
peres("sommaire", "sommaire du site", "visiteur")
peres("accueil", "page d'accueil", "visiteur")
...
peres("admin", "page d'administration de la bdd", "admin")

***fils qui definit le contenu qui est present dans la page pere
fils(#langue varchar(64) references langues(codname), #pere varchar(64) references peres(codname), codname varchar(64), order int(3), texte text);

ex :
fils('fr', 'sommaire', 'accueil',1,'Accueil'')
fils('fr', 'sommaire', 'forum',2,'Forum'')
fils('fr', 'sommaire', 'media',3,'Média')

fils('fr', 'accueil', 'ch_lang',0,'Veuillez choisir votre langue :')
fils('en', 'accueil', 'ch_lang',0,'Choice your language :')

...etc

sa permet de tout definir ... je crois du sommaire aux contenu des pages en passant par le contenu qui doit etre present dans toutes les pages

est-ce que c faisable et si oui est-ce que les table sont bien construites?
vos commentaire svp
kastha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2006, 03h01   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 18
Points : 10
Points : 10
bonjour tout le monde, je viens de finir de taper ce code et vu que c'est mon premier dans le genre est-ce que vous pouriez me dire si ya des failles ou des truc a changer.


index.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
<?php
//demarage session
session_start();
 
//recupere les lib php
require "database.php";
require "other.php";
 
$conn_id=connexion("my_db");
 
//recupere les variables sessions et verifie si le couple username et password sont valide
if(!( isset($_SESSION['usr_name']) && isset($_SESSION['usr_pwd']) ) || !verif_id($_SESSION['usr_name'],$_SESSION['usr_pwd']))
    {
    $_SESSION['usr_name']="visiteur";
    $_SESSION['usr_pwd']="";
    }
 
$usr_name=$_SESSION['usr_name'];
 
 
//recupere les variables
if(!isset($_SESSION['page'])) $_SESSION['page']="accueil";
if(!isset($_SESSION['lang'])) $_SESSION['lang']="fr";
 
$page=$_SESSION['page'];
$lang=$_SESSION['lang'];
 
if(isset($_SESSION['act'])) $act=$_SESSION['act'];
?>
 
<html>
<head>
 
<?php
//recupere les lib js
require "test.js";
require "md5.js";
?>
 
</head>
<body>
 
<?php
 
echo $page."//".$lang;
if(isset($act))
    {
    echo "//".$act."//<br />";
    if($act=="login") echo "Bienvenue, ".$usr_name.".\n";
    else if($act=="fail_login") echo "Bienvenue, Visiteur.\n";
    }
 
?>
 
<hr />
 
Espace membre :<br />
<form name='login_form' action="login.php" method="post">
Nom d'utilisateur :
<input type='text' name='usr_name' value=''><br />
Mot de passe :
<input type='password' name='usr_pwd' value=''><br />
<input type='hidden' name='page' value='<?php echo $page?>'>
<input type='hidden' name='lang' value='<?php echo $lang?>'>
<input type='hidden' name='md5_usr_pwd' value=''>
<input type='button' name='go' value='Go' OnClick="check_login(login_form)");
</form>
 
<hr />
 
</body>
 
<?php deconnexion($conn_id)?>
 
</html>
login.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
session_start();
 
require "database.php";
$conn_id=connexion("my_db");
 
if(isset($_POST['usr_name'])&&isset($_POST['md5_usr_pwd']))
    {
    if(verif_id($_POST['usr_name'],$_POST['md5_usr_pwd']))
        {
        $_SESSION['usr_name']=$_POST['usr_name'];
        $_SESSION['usr_pwd']=$_POST['md5_usr_pwd'];
        $_SESSION['act']="login";
        }
    else $_SESSION['act']="fail_login";
    header("Location: http://localhost/new/index.php");
    }
 
deconnexion($conn_id);
 
?>
merci d'avance
kastha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2006, 08h39   #5
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Code :
1
2
3
4
5
<?php
//recupere les lib js
require "test.js";
require "md5.js";
?>
faut inclure le js à l'HTML, pas au PHP.
-> balise <script>

Code :
1
2
3
4
5
6
7
8
9
10
11
12
if(isset($act))
{
    echo "//".$act."//<br />";
    if($act=="login") 
    {
        echo "Bienvenue, ".$usr_name.".\n";
    }
    else if($act=="fail_login") 
    {
        echo "Bienvenue, Visiteur.\n";
    }
}
ça, c'est juste pour le bonheur des oeil des correcteurs
La place que tu prend pour ecrire ton code n'influencera en rien le perf. Donc exagère le coté espacé, c'est mieux que tout recroquivillé (et les { démarra soit un espace aprés le dernier caractère de la condition if (s'il s'agit d'un if), soit à la ligne du dessous, sous le i du if (ma façon de faire)
A qqs polèmiques près, ce sont des normes universelles.
Place bien des incolades à tous te if, meme s'il y a qu'une ligne, de temps en temps (rarement j'avoue) ça peu jouer des tours

Sur le coté fonctionnel, hormis les js, j'ai rien vu de mauvais. Tu devrais aussi mettre le contenu de
la fonction verif_id

Un dernier truc, dans ta BDD, pour chaque table place des ID et manipule plutot ceux-ci pour les jointures, car il est plus rapide de faire des opération sur des nombres que sur des varchars, de plus niveau sécurité, ça place un tampon entre l'utilisateur et la BDD
exemple au lieu d'appeler index.php?page=accueil , tu aura index.php?page=4 et seul la bdd saura faire la correspondance
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2006, 20h38   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 18
Points : 10
Points : 10
modification effectuées.

voila la fonction verif_id() (qui s'est transformée en check_id() lol):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//verification du couple username/password
 function check_id($usr_name,$usr_pwd)
     {
      $req="SELECT usr_name,usr_pwd FROM registered WHERE usr_name='$usr_name' and usr_pwd='$usr_pwd'";
      $req=mysql_query($req);
     if(mysql_num_rows($req)==1)
          {
          return true;
          }
     else
          {
          return false;
          }
     }
Ah oui, c'est quoi des fichiers ".inc"?
j'ai vu souvent des truc du genre :"require file_name.inc"... sa correspond a quoi?

Est-ce que c'est embétant d'utiliser des var session pour faire passer la $page et la $lang?
Ou au contraire est-ce qu'il faut en abuser ? c'est-a-dire de faire passer toutes les variables qui definissent le contenu de la page en variable session?
Du genre, rajouter une page redir.php qui prend les arguments que l'on veut faire passer (donc en $_GET) et qui les transforme en $_SESSION et qui appel index.php (quand elle a finit de verifier les $_GET et de les transformer en $_SESSION) avec
Code :
header("Location: http://localhost/new/index.php");
Dans mon code, j'ai mis une vérification de nom d'utilisateur et de mot de passe a chaque lancement de index.php, est-ce que sa rajoute un niveau de sécurité ou c'est complètement inutile ?

sa devrait etre tout XD
merci pour l'aide !!!
kastha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2006, 12h35   #7
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut injection SQL

fait aussi une vérification sur la request pour être sûr que personne n'a fait un OR 1='1' dans le champ password

tu peux le faire avec eregi("OR 1='1' ", $request);
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h39.


 
 
 
 
Partenaires

Hébergement Web