PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 13-01-2010 15:02:10

santino1704
Membre
Inscription : 13-01-2010
Messages : 4

PHP5 et classes

Bonjour à tous,

Je me met doucement aux classes et j'avoue que j'hésite encore pas mal
sur certaines façon de faire, pourriez-vous me donner votre avis.

J'essaye de comprendre comment agencer mes scripts et veiller à bien
séparer le code de la mise en forme.

J'essaye de mettre en place un simple formulaire d'identification.

La classe:


class Identification
  {
  private $user;
  private $password;
  private $db;
  private $identification_result;
 
  public function __construct($user, $password, $db)
    {
    $this->user = $user;
    $this->password = $password;
    $this->db = $db;
    $this->identification_result = false;

    $query_txt = "  SELECT
              cms_user.*,
              cms_user_group.*
            FROM
              cms_user,
              cms_user_group
            WHERE
              cms_user.login = '"
.mysql_real_escape_string($user)."'
            AND
              cms_user.my_password = '"
.mysql_real_escape_string($password)."'
            AND
              cms_user.fk_user_group = cms_user_group.idx"
;
              //echo $query_txt;
    $query = mysql_query($query_txt, $this->db->link);
   
    if(mysql_num_rows($query) > 0)
      {
      $result = mysql_fetch_array($query);
     
      $_SESSION['logged'] = 1;
      $_SESSION['user_idx'] = $result['idx'];
      $_SESSION['user_prenom'] = stripslashes($result['prenom']);
      $_SESSION['user_nom'] = stripslashes($result['nom']);
      $_SESSION['user_group_idx'] = stripslashes($result['fk_user_group']);
      $_SESSION['user_group_name'] = stripslashes($result['group_name']);
     
      $_SESSION['user_privileges'] = array('priv_site'=>$result['priv_site'], 'priv_user'=>$result['priv_user'], 'priv_structure'=>$result['priv_structure'], 'priv_files'=>$result['priv_files'], 'priv_appli'=>$result['priv_appli'], 'priv_stat'=>$result['priv_stat'], 'priv_aide'=>$result['priv_aide']);
     
      $this->identification_result = true;
      }
      else
      {
      session_destroy();
      }
    }
 
  public function check_identification()
    {
    return $this->identification_result;
    }
  }
 

...et la page de traitement


include('../includes/constants.php');
include('../includes/Db.class.php');
include('../includes/Session.class.php');
include('../classes/classes.php');

/*$current_session = new Session($db);
session_start();*/

if(!isset($_POST['action']))
  {
  header('location: ../../login.php?login=error');
  die();
  }
switch($_POST['action'])
  {
  case 'identification':
 
  if(!isset($_POST['login_login']) || !isset($_POST['login_password']))
    {
    header('location: ../../login.php?login=error');
    die();
    }
 
  $current_identification = new Identification($_POST['login_login'], $_POST['login_password'], $db);
 
  if($current_identification->check_identification() == true)
    {
    header('location: ../../admin.php');
    die();
    }
    else
    {
    header('location: ../../login.php?login=error');
    die();
    }
 
  break;
  }
 

Il y a en plus un formulaire qui envoie en POST l'id et le mot de passe.

Ceci vous parait-il correct en terme de POO.

Merci d'avance pour vos réponse.

++
santino

Hors ligne

#2 13-01-2010 15:22:20

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : PHP5 et classes

Saluton,
POO ou pas POO la guerre des étoiles continue


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 15-01-2010 11:19:16

santino1704
Membre
Inscription : 13-01-2010
Messages : 4

Re : PHP5 et classes

Personne pour me répondre ?

Hors ligne

#4 16-01-2010 07:04:40

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : PHP5 et classes

Kris a déjà soulevé un problème très intéressant dans ton code. ^^
Je rajouterai pour ma part qu'il faudrait mieux vérifier les informations que tu envoies à ta base de donnée.
Si j'ai bien compris cela provient directement d'un formulaire et donc on peut y insérer n'importe quoi.

Hors ligne

#5 16-01-2010 12:04:11

santino1704
Membre
Inscription : 13-01-2010
Messages : 4

Re : PHP5 et classes

Salut,

Merci pour ta réponse.

ok pour le *.

Par contre, au niveau de ma classe, je fais mysql_real_escape_string, ceci
devrait me protéger non ?

Sinon au niveau agencement des scripts:

J'avais un doute sur mes header et sur le fait de passer $db en paramètres de fonction,
ceci te parait-il correct ?

Merci d'avancve

++
santino

Hors ligne

#6 16-01-2010 12:25:46

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : PHP5 et classes

santino1704 a écrit :

Par contre, au niveau de ma classe, je fais mysql_real_escape_string, ceci
devrait me protéger non ?

Disons que tu protèges qu'on ne fasse pas n'importe quoi mais cela n'empêche que tu ne vérifies pas proprement que les variables contiennent ce que tu veux.

Pour les headers je ne saurais te dire, je ne suis vraiment pas fan de ça et n'en utilise jamais.

Pour le paramètre $db si tu es sûr de ne passer que par une et une seule BDD dans tout le site tu peux passer ta classe DB en static et en faire un singleton. Tu n'auras plus besoin de passer l'une de ses instances par paramètre.

Hors ligne

#7 16-01-2010 12:39:34

santino1704
Membre
Inscription : 13-01-2010
Messages : 4

Re : PHP5 et classes

Merci xTg pour tes précieuses réponses,

Je vais corriger ca.

Pour la db, je préfère me donner la possibilité de me connecter à plusieurs db...

++
santino

Hors ligne

Pied de page des forums