Pour les questions, erreurs, modifications à apporter et assimilés, utilisez ce topic !
Vous pouvez également laisser des messages dans les commentaires de tuto.
Enfin, une question à ceux qui l'auront lu. Pour la suite, vous préférez quoi en premier ?
1) Encore une chapitre sur l'espace membre pour la connexion automatique ;
2) Le TP sur le livre d'or ;
Pour ma part j'opte pour l'espace membre avec connexion automatique ça vas aider pour la sécurité qui n'est pas toujours bien mise dans la tête des débutants
Merci, les premiers retour sont très bons, même s'il subsiste quelques problèmes...
La classe Form a été mise à jour suite à un bug.
La classe Image n'est pas disponible dans le tuto : c'est une erreur ! Vous pouvez la trouver ici.
La connexion automatique a effectivement des exigences de sécurité fortes, d'où le besoin d'une sous-partie complète ! (faire des erreurs pour les corriger )
Tout d'abord, merci pour ce big tutoriel. Je l'attendais depuis un petit bout de temps, voir comment tu t'y prenais pour coder, etc.. Et c'est vraiment excellent.
J'ai trouvé quelques erreurs :
_ ici, dans le premier code que tu donnes, tu mets ton codes dans une balises html au lieu de php. Rien de grave, c'est juste pour que ça soit mieux.
_ ici, juste au-dessus du deuxième code php, il y a une faute dans la phrase suivante : " Et voilà comment se protéger de cette faille. "
_ ici, tout à la fin de cette partie dans " Les vues associées ", tu dis qu'il faut mettre dans " ~/modeles/membres/vues/ " alors que ça devrait plus tôt être dans " ~/modules/membres/vues/ ". Et pour les deux codes !
_ ici, dans " Les vues associées " pour la connexion, tu mets dans le deuxième encadrée : " ~/modules/membres/connexion_ok.php ", mais ça ne devrait pas plutôt être " ~/modules/membres/vues/connexion_ok.php " ?
_ Dans les pages inscription.php, connexion.phpet modifier_profil.php, ce n'est pas " include chemin_librarie('Form.php'); ", mais " include CHEMIN_LIB.'Form.php'; ", et " include CHEMIN_LIB.'image.php'; " pour seulement modifier_profil.php
_ Ca été dit dans un commentaire, mais il y a aussi une faute dans la page index.php à la racine. Il faut remplacer ça : " $action = (!empty($_GET['action'])) ? $_GET['action.php'].'.php' : 'index.php'; " par " $action = (!empty($_GET['action'])) ? $_GET['action'].'.php' : 'index.php'; "
_ Dans config.php, il y a un petit oubli : " define('CHEMIN_MODELE', 'modeles/'); "
Dans le chapitre sur l'espace membre, au tout début quand tu donnes la bdd, tu dis que c'est intéressant d'utiliser les clés index et uniques. Pour les clés uniques, il n'y a pas besoin d'explication, ça coule de source, mais pas pour les index, même si la doc existe. Je dis ça, mais il se peut que les zéros savent très bien ce que sont les indexs.
Pour la suite, je pense qu'il serait préférable de faire le chapitre sur " l'espace membre pour la connexion automatique ". Ca suivra un peu plus la logique.
Tout d'abord, merci pour ce big tutoriel. Je l'attendais depuis un petit bout de temps, voir comment tu t'y prenais pour coder, etc.. Et c'est vraiment excellent.
De rien. J'ai du adapter le tutoriel pour qu'il soit plus simple que ce que je fais en vrai. Ca serait vraiment compliqué sinon !
Ceci dit, merci à toi pour les encouragements et toutes les erreurs relevées. La moitié m'avait déjà été rapporté, mais t'as tout synthétisé dans un seul post : pratique pour moi !
Citation : Mon premier post
Enfin, une question à ceux qui l'auront lu. Pour la suite, vous préférez quoi en premier ?
1) Encore une chapitre sur l'espace membre pour la connexion automatique ;
2) Le TP sur le livre d'or ;
Comme je l'avais dit dans les commentaires, j'opte pour la connexion automatique et ce avant samedi soir
Non plus sérieusement, je pense que la connexion automatique est un point très important ne serait-ce qu'au niveau de la sécurité, et on ne trouve pas de tutoriel sdz qui en parle pour le moment...
Or pouvoir poster sur un livre d'or quand on s'est connecté en auto c'est classe !
Sinon c'est un boulot superbe et bien pratique ! Je commençais à me mettre à l'organisation de mes fichiers de cette façon et regrettais de ne pas pouvoir faire tout çà en POO, et en plus devoir réadapter tout plus tard à PHP6, je crois que je trouve dans ton tuto toues les infos dont j'ai besoin
[MODE DEVOREUR DE TUTO PHP OFF]
De rien. J'ai du adapter le tutoriel pour qu'il soit plus simple que ce que je fais en vrai. Ca serait vraiment compliqué sinon !
Une petite question : on peut encore faire plus compliqué ? C'est une question très bête, certe, mais j'ai appris sur ce site les bases en php et j'ai toujours continué à coder seul. Alors, l'organisation des fichiers, la factorisation du code, les bonnes pratiques et les petites astuces.. je les apprend au fur et à mesure en regardant le code des autres. Et là, avec ton tutoriel, j'en apprend encore plus.
Je me doute bien qu'on peut faire encore plus compliquer, mais je ne vois pas quoi. Peux-tu m'en dire deux mots sur le sujet, si tu as le temps, ou prévois-tu dans une partie annexe de dire ce qu'on peut améliorer, etc ?
Citation : Savageman
Ceci dit, merci à toi pour les encouragements et toutes les erreurs relevées. La moitié m'avait déjà été rapporté, mais t'as tout synthétisé dans un seul post : pratique pour moi !
Il n'y a pas de quoi ! Content d'avoir pu t'aider.
En fait, on peut surtout faire plus pratique. Avec un autoload(), les classes Form, Pdo2 et Image n'auraient pas besoin d'être incluent : c'est même plus pratique en fait, mais j'avais pas trop envie d'expliquer l'autoload()...
Ensuite, dès qu'on va vouloir changer les CSS, le titre de la page, ajouter des mots-clés, spécifier un comportement pour les moteurs de recherche (index,nofollow par exemple), il y quelque chose à rajouter et qui manque, clairement. Ca n'est vraiment pas très compliqué à mettre en place, car l'architecture que je propose a prévu le coup (les template ~/global/haut.php est affiché après l'éxécution du contrôleur, on peut donc facilement modifier des variables depuis le contrôleur pour influer sur le ~/global/haut.php). En attendant, ça n'est pas fait et c'est un manque.
Pour des raisons de référencement, on peut vouloir rewriter les URL. Apache il est bien gentil, mais le jour où tu veux changer quelques trucs, t'es bien emmerdé. J'ai un petit système perso en PHP pour gérer ça et c'est vraiment bien pratique.
Ca peut ne paraître pas grand chose comme ça, mais en fait c'est plutôt long à expliqer. Si tu sens le besoin d'un truc particulier dans tout ça, fais-moi en part, je pourrais (éventuellement) développer plus le sujet !
J'envisageai de faire du Rewrit assez rapidement sur un site que je fais en suivant ton tuto, quel est le problème avec apache et que tu gères avec php ?
Je suis le tuto pas à pas.
C'est un grand changement pour moi, je découvre PDO, l'orienté objet, MVC toussa toussa
Je l'ai déjà mis dans les commentaires du tuto mais je le répète ici :
Un tout grand BRAVO et un tout grand MERCI
Ce tuto est énormissime et tombe vraiment au bon moment pour moi, encore merci
Petite question, je débute le tuto, j'ai donc créé les fichiers haut, bas etc.
Sur la page d'accueil, tout les caractères accentués son remplacés par des �.
C'est pas très joli :/ ( Déjà que avec le CSS fourni... xD (joke) )
J'ai vu dans haut.php un meta pour dire d'utiliser UTF-8.
Est ce lié à ça ? Je dois faire quelque chose de spécial avec mes fichiers ?
J'utilise Notepad++
<?php
/**
* Classe implémentant le singleton pour PDO
* @author Savageman
*/
class PDO2 extends PDO {
private static $_instance;
/* Constructeur : initialisation et appel du constructeur "père" */
public function __construct( ) {
}
// End of PDO2::__construct() */
/* Singleton */
public static function getInstance() {
if (!isset(self::$_instance)) {
try {
self::$_instance = new PDO(SQL_DSN, SQL_USERNAME, SQL_PASSWORD);
} catch (PDOException $e) {
echo $e;
}
}
return self::$_instance;
}
// End of PDO2::getInstance() */
}
// end of file */
Imaginons que je souhaite développeur un site contenant plusieurs contrôles (blocs) riches (liste avec possibilité d'ajout d'information par exemple). Certains de ces contrôles peuvent figurer sur plusieurs pages.
@jordan : Pas faux, je viens de remarquer que sans l'héritage, ça fonctionnerait pareil...
@Tracker : Question pas facile, mais tu peux respecter MVC en l'appliquant. Tu définis des vues globales (équivalentes des partials dans symfony) pour tes listes, et tu les appelles dans tes différents contrôleurs qui en ont besoin (les modèles étant déjà globaux de toutes manières).
[edit] Je sais, ça ne répond pas vraiment à la question, mais je te connais aussi et je sais que tu n'aimes pas spécialement MVC et que tu veux nous faire parler de tes concepts orientés-évènements basés sur des composants (PRADO), donc je ne t'en veut pas !
Mais en réalité je veux une réponse, car l'enthousiasme béat des gens pour MVC m'allucine. Une application dans 99% des cas est l'assemblage de blocs (blocs ayant un comportement propre == des actions qui lui appartiennent) réutilisés un peu partout dans l'application. C'est d'ailleurs le fondement de toute application informatique utilisant un système de fenêtrage. Suffit de regarder magento, prestashop, facebook etc, pour s'en convaincre.
La question est donc:
"Comment simplement avec MVC (car MVC est bien là pour apporter de la simplicité :-°, non ?) arriver à ce type de développement ?"
Bah je dirais qu'un "bloc" comme tu appelles ça est un contrôleur (qui a un comportement propre == des actions qui lui appartiennent). Il suffirait donc d'un méta-contrôleur qui assemble plusieurs "blocs" et ça roule, non ?
Enfin... C'est pas trop le sujet de ce topic : si tu veux débattre, il faut peut-être créer un autre topic ?
Tracker on sentait qu'il y avait anguille sous roche dans ta question
Néanmoins tu es en train de baisser dans mon estime :
Franchement, ça fait maintenant plus de 6 mois que je te fais chier pour que tu pondes ou que tu contribues à pondre un tuto.
Savageman se bouge, et propose certes de traiter un aspect à la mode (et qui, comme toutes les modes, finira par passer (?)), à savoir le MVC, et là tu démontes le truc.
Moi je dis pourquoi pas, mais tu ne peux pas, avec ton niveau de compétence te contenter de cette posture.
Je pense que tu dois t'engager un peu plus...genre : participer à la rédaction d'un tuto ou de ce tuto ou d'une partie de ce tuto.
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
En réalité je suis pas certain d'avoir des réponses, et encore moins qu'MVC en soit une. La question cachait effectivement quelque chose, car je trouve étrange de faire de la fumée autour d'un truc qui parait ne pas apporter de solution au besoin.
Mais en même temps j'apprécierais réellement qu'un d'entre vous démontre l'efficacité de la solution pour des architectures complexes car le besoin se limite rarement à un livre d'or.
@cafeine, parfait, tu vas pouvoir nous faire un exemple concret en utilisant Zend,
ps: Désolé Savageman de polluer ton post.
C'est à nouveau moi
Je suis toujours occupé à lire le tuto Je dois parfois relire certains passages pour bien tout comprendre et saisir les finesses de cette nouvelle façon d'organiser son site
J'ai relu plusieurs fois la première partie, le concept de Controleur, Modele, Vues, Module, Action etc étant tout à fais nouveau pour moi
J'ai fais un petit résumé afin de mieux structurer le fonctionnement de tout ça
Qu'en pensez vous ? Ais je bien compris ou bien xD pas du tout
Ton couple "module/action", on appelle ça un contrôleur.
Le contrôleur créé effectivement le formulaire. C'est discutable, mais j'ai choisis de faire comme ça par simplicité.
Par contre, le contrôleur peut utiliser 0, 1 ou plusieurs modèles, mais ceux-ci ne font pas partie du contrôleur... (donc le rectangle "modèle" ne doit pas être dans le rectangle "module / action"). Il les utilise pour assigner des variables qui porteront les données.
Ta flèche du modèle vers une vue, c'est quoi ça ? Un modèle ne fait jamais appel à une vue...
Le contrôleur sélectionne les vues qui ont besoin d'être affichées.
Ensuite, le index.php affiche toutes les vues sélectionnées avec les données du contrôleur (qui sont de simples variables).
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)
Si y'a pas d'accents dans mes messages c'est parce que je suis sur un clavier norvegien :)