Espace membre objet constructeur sans paramètres...
alphacrash
Messages postés55Date d'inscriptionjeudi 7 novembre 2002StatutMembreDernière intervention17 août 2012
-
19 déc. 2008 à 15:22
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
21 déc. 2008 à 12:59
Salut, voilà j'essaye de créer un espace membre en objet PHP5 et j'ai un souci, je n'arrive pas à utiliser un objet crée dans une portion de if.
En fait sur ma page index.php j'ai un formulaire dont l'attribut action envoie vers index.php?page=membre.
Dans cette page membre j'ai ce traitement:
<?php
?>
Mais le problème est que mon objet ne pourra etre utilisé que dans mon bloc IF et ne sera crée que si le formulaire a été soumis.
je voudrais pouvoir appliquer ma méthode deconnection(), mais je ne le peux :-( si quelqu'un a un coup de main a me filer ...merci d'avance.
Coding is not a crime!
A voir également:
Espace membre objet constructeur sans paramètres...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 20 déc. 2008 à 10:39
Hello,
j'ai lu ton post hier, mais j'avais la flemme d'y répondre...comme personne ne l'a fait depuis, bah, je me dévoue...
Et si j'avais la flemme, c'est parce que ton truc, c'est un problème de modélisation, de conceptualisation, et que c'est tjrs le plus long à expliquer!
Déjà, commence par débroussailler un peu ton bin's : explique mieux ce que tu veux faire, pourquoi, et comment. Parce que ça reste très flou.
Je vais quand même me hasarder... : en gros, t'as un formulaire d'identification en POST, sur ta page d'accueil. Ton code vérifie si l'identification est réussie, et dans ce cas, instancie l'objet "user", qui contient une méthode de déconnexion. Mais, une fois le gars loggé, s'il bouge, il reste loggé mais le formulaire n'est pas soumis (forcément, il s'est déjà loggé), et comme tu n'instancies ton objet QUE si le formulaire est soumis, tu ne peux plus faire appel à la déconnexion.
C'est ça ?
Si c'est ça, tu t'y prends très mal :-)
Ton objet users se construit avec un login et un pwd...pourquoi? C'est ta 1ère erreur. Cela implique que sur chaque page, tu es obligé de lui passer un login et un mot de passe...si tu veux pouvoir réinstancier ton objet, et donc, tu dois te trimballer ces 2 variables en session. C'est inutile...D'autant plus qu'un "utilisateur" n'est pas forcément un "membre" de ton site.
Dans l'absolu, tu devrais avoir une classe abstraite users, et des classes étendues derrière, pour le membre, l'admin, etc...(c'est juste UN exemple, il y a des milliers de façons de faire).
Mais bon...en conservant ton idée, il te manque un truc seulement : teste ta session. Si $_SESSION['login'] existe, c'est que le gars est identifié, donc tu peux instancier ton objet. Manque le mot de passe...d'où ma suggestion de ne pas créer un constructeur aussi restrictif. Selon ton modèle, tu dois alors trimballer aussi le mot de passe en session, et le passer au constructeur du coup.
Mais je le répète, c'est tordu...
Tu devrais plutôt avoir un constructeur sans argument, et une propriété $iUserId, par exemple. Et une méthode : login() prenant un login et un mot de passe, qui renvoie le $iUserId, et remplit la propriété, si le gars est identifié, false sinon.
Cette version oblige à vérifier pour la plupart des actions que tu aies un $iUserId avant de faire quoi que ce soit. Il y a d'autres moyens...beaucoup d'autres, mais restons simples, d'autant que je ne connais pas ton niveau.
alphacrash
Messages postés55Date d'inscriptionjeudi 7 novembre 2002StatutMembreDernière intervention17 août 2012 21 déc. 2008 à 12:48
ok , merci !
C'est vrai que j'ai codé ça à l'arrache en faisant un test. Mais il est clair qu'au niveau de la modelisation c'est n'importe quoi.
Je vais revoir ma modélisation en mettant une classe users et un constructeur sans paramètres pour instancier un objet user de cette manière : $myUser = new user();
Et si le formulaire est soumis alors j'appellerais une méthode publique par exemple setUserSettings($login,$pass).
Je pense que c'est plus judicieux non ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 21 déc. 2008 à 12:59
Par exemple. Voire statique...ça peut faire l'objet d'une usine (voir design pattern factory), dont on testerait le retour. Si c'est un objet, l'identification est réussie, si c'est false, elle est échouée...
Enfin, encore une fois, il y a mille façons de faire. Trouve celle qui t'arrange.