Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
1,84 MB
Nội dung
leur apparence aux pages ou à des parties de page. Il suffit de créer un dossier de même nom dans l’application particulière en y insérant un fichier template modifié, avec le même nom de fichier, pour qu’il soit utilisé en lieuet place de l’original. Index.php Le fichier index.php indique la vue par défaut de l’application, le chemin vers le fichier xataface-public-api.php et l’URL vers le répertoire de Xataface sur le serveur. Ensuite, il charge une instance de l’objet Xataface et l’affiche dans l’interface standard ou une autre interface : $time = microtime(true); if (!@$_GET[’-sort’] and @$_GET[’-table’] == ’fichestravaux’){ $_GET[’-sort’] = ’moment desc’; $_REQUEST[’-sort’] = ’moment desc’; $_GET[’-table’] = ’fichestravaux’; $_REQUEST[’-table’] = ’fichestravaux’; } if (empty($_GET[’-action’])) $_GET[’-action’] = "list"; require_once ’/var/www/html/dataface-0.7.1/dataface-public-api.php’; // include the initialization file df_init(__FILE__, ’http://lintranet/dataface-0.7.1’); // initialize the site $app =& Xataface_Application::getInstance(); // get an application instance and perform initialization $app->display(); // display the application; ?> conf.ini Le fichier conf.ini est un fichier texte qui contient la configuration générale comprenant le codage des caractères, la langue, les coordonnées de connexion à la base de données MySQL, les tables qui s’afficheront, les coordonnées de l’authentification et les préférences. Chaque partie dans ce fichier est introduite par le nom entre crochets : [languages], [_database], [_tables], [_auth], [_prefs]. Ces 5 parties gèrent respectivement la langue du site, les données de connexion de la base de données, les tables qui seront affichées, la table et les champs utilisés pour l’authentification et les préférences d’affichage. Xataface, donnez un visage humain à votre base de données Double Poche PHP & MySQL • 351 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Les tables Ensuite, la partie la plus importante est celle des tables. Le répertoire tables contient un répertoire pour chaque table, chaque répertoire portant le nom de la table.Ces répertoires contiennent 3 fichiers texte avec une extension .ini. fields.ini Le premier, fields.ini, est attaché aux champs du formulaire qui attaque- ront la table pour agir sur les données. Ce fichier permet de choisir les champs qui seront affichés, d’agir sur leur nature, sur leur mode d’affichage, sur l’ordre d’affichage . Le fichier .ini est un fichier texte où les lignes commençant par un ; sont des commentaires. relationships.ini Le deuxième, relationships.ini, contient les modalités de relation entre la table et les autres tables (clé étrangère) : Le code est de type : table.id = "$id_table" Ici le premier membre désigne la clé étrangère de la table en relation et le deuxième membre concerne la clé de la table courante. b Figure 10.4 : Exemple d’arborescence 10 Les frameworks ou cadriciels PHP 352 • Double Poche PHP & MySQL Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Ou alors, il est possible d’y inscrire une requête SQL qui identifie la relation entre les deux tables. __sql__ = "SELECT * FROM table1, table2 WHERE table1.id= table2.id_table1" Plusieurs relations peuvent ainsi être définies sur ce même fichier, chaque table étrangère étant identifiée par [table1], [table2] . valuelists.ini Ce fichier regroupe les valeurs des champs de sélection (select, checkbox, boutons radio .) et celles des champs autocomplétés. Autocomplétion L’autocomplétion est cette fonction qui, quand on commence à saisir un mot dans le champ d’un formulaire, fait apparaître une liste de mots commençant par les mêmes lettres et qui ainsi peuvent être validés comme valeur du champ. Ces valeurs sont données sous forme de liste ou par une requête SQL sur une valeur : [select_OUI] __sql__ = "SELECT clef, libelle from select_OUI" [Creneaux] M = Matin A = Après-midi J = Journée Classe pour la table La classe de la table peut être créée quand le besoin de fonctions originales se fait sentir. Ainsi il peut être nécessaire de formater les dates dans les champs date ou d’afficher une valeur par défaut dans un champ quelconque. Le fichier prend le nom de la table table.php, table étant mis pour le nom de la table et donc du répertoire où le fichier se trouve. Xataface, donnez un visage humain à votre base de données Double Poche PHP & MySQL • 353 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. class tables_repertoires { function after_action_new(){ header(’Location: ’.’http://www.monsite.net/admin/ index.php?-action=list&-table=’.@$_REQUEST[’-table’]); exit; } } Les fonctions ont des conventions de nommage dans la classe. Ainsi, par exemple, cette fonction est déclenchée une fois qu’on a créé une nouvelle entrée dans une table quelconque comme repertoires. Cette fonction, dans cet exemple, affiche la liste des répertoires dans la table. De nombreuses fonctions existent, en particulier pour afficher une date avec un format spécifique, ou afficher par défaut les valeurs d’un champ, avec, à chaque fois, une convention de nommage dans le nom de la fonction. Application Déléguée dans le répertoire conf L’application Déléguée est une application qui agit sur toutes les actions déployées. Ainsi ce fichier peut contenir l’authentification. Il se trouve dans le répertoire conf : class conf_ApplicationDelegate { function getPermissions(&$record){ $auth =& Dataface_AuthenticationTool::getInstance(); $user =& $auth->getLoggedInUser(); if ( !isset($user) ) return Dataface_PermissionsTool::NO_ACCESS(); $role = $user->val(’role’); return Dataface_PermissionsTool::getRolePermissions($role); } } Cette fonction, ici, identifie chaque utilisateur et retourne la permission qu’il détient. Il est possible d’affiner la granularité en définissant les accès aux tables et même aux champs d’un formulaire qui dès lors que l’usager n’y aura pas accès, ne sera pas actif. Conclusion Xataface permet de monter un site en quelques minutes. Ce qui prend le plus de temps est de changer l’interface graphique mais si vous créer juste une application pour quelques personnes, elle sera opérationnelle immé- 10 Les frameworks ou cadriciels PHP 354 • Double Poche PHP & MySQL Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. diatement. Une autre utilisation possible consiste à créer toute l’adminis- tration d’un site qui lui, se sert de la base de données gérée par Xataface. C’est une plateforme dont on ne peut plus se passer une fois qu’on y a goûté. La documentation est encore en anglais mais l’application a été traduite et la prochaine version sera plus aboutie, avec une traduction plus complète et une documentation en français. 10.4 CakePHP, c’est du gâteau Le projet CakePHP (www.cakephp.org, www.cakepourtous.org) a dé- marré en 2005, avec comme ambition de proposer un Ruby on Rails pour PHP. Ruby on Rails ou RoR Ruby on Rails est sorti en juillet 2004 et a été créé à partir du langage Ruby qui est un langage de script orienté objet. La sortie de RoR fut un coup de tonnerre dans la communauté des développeurs car il répondait exactement aux exigences d’interactivité du Web 2.0. Il permettait de créer rapidement un site avec du code concis, peu de configuration et de l’ajax pour la convivialité. Il est utilisé par un certain nombre de sites web 2.0. L’arborescence reflète parfaitement ce modèle. Le répertoire cake est le répertoire auquel le développeur ne touche pas, excepté quand il fait une mise à jour pour passer à la version supérieure de Cake. L’autre répertoire important est app qui contient l’application avec les dossiers models, controller et views. Chaque partie de l’application doit avoir sa part de modèle, de contrôleur et de vue. À ces répertoires s’ajoutent le répertoire tmp qui contient les b Figure 10.5 : Cake CakePHP, c’est du gâteau Double Poche PHP & MySQL • 355 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. fichiers de cache, de sessions, de logs et tous les fichiers temporaires. Le dossier config contient les rares fichiers de configuration dont les réglages pour la base de données. Le dossier vendors sert à ajouter des scripts à l’application. Un autre dossier vendors, situé en dehors du répertoire app, rassemble les scripts génériques destinés à toutes les applications. Cake offre les mêmes fonctionnalités que Xataface, avec un plus large spectre (différents types de bases de données) mais aussi plus de complexité. Cake simplifie l’usage des bases de données et il présente un certain nombre de caractéristiques. Cake utilise le mod_rewrite d’Apache pour réécrire les URL à la volée. Ainsi l’URL http://localhost/club/edit/1/ ira chercher le contrô- leur club, la méthode edit(), le modèle pour aller trouver la donnée avec l’id 1 puis l’affichera dans la vue edit.thtml. C’est très logique et pour utiliser cette application, il suffit de se conformer à ces conventions. En ajoutant la variable $scaffold (échafaudage) dans le contrôleur, Cake crée les fichiers par défaut. Il suffit ensuite de les modifier pour les rendre conformes au résultat désiré. var $scaffold; m Figure 10.6 : www.cakephp.org 10 Les frameworks ou cadriciels PHP 356 • Double Poche PHP & MySQL Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Sous le dossier app, il reste deux dossiers importants : webroot qui contient tous les fichiers qui apparaissent en vitrine (images, css, javascript .) et le dossier helpers. Ces helpers ou aides sont des fichiers PHP qui modifient l’affichage d’un élément dans les vues. Il existe des helpers natifs pour Cake comme les helpers HTML qui permettent au développeur d’écrire son code très rapidement. Ainsi pour écrire le code d’une aire de texte : $html->textarea(’Note/body’, array(’cols’=>’60’, ’rows’=>’10’)); La notion de rappel (callback) qui a déjà été vue pour Xataface intervient. Ainsi une action déclenche une nouvelle action qui se déroule avant ou après. Cake est une application copiée sur Ruby on Rails ; la conception est dérivée de Ruby contrairement à Xataface qui est plus axée MySQLet PHP et respecte davantage l’esprit de Ruby on Rail dans un sens de légèreté. 10.5 JOOMLA, le meilleur gestionnaire de contenu Joomla (www.joomla.fr) est le meilleur gestionnaire de contenu car il est très complet et utilisé largement. Ainsi, il enrôle de nombreux déve- loppeurs et contient de nombreuses fonctionnalités pour répondre à diverses situations. Joomla est né d’une scission avec la plateforme Mambo. Joomla signifie "tous ensemble" en Swahili. Le principe de ce type d’application est que le contenu est géré séparément de la présentation : ¶ Ils permettent à plusieurs rédacteurs de travailler sur un même document. b Figure 10.7 : Joomla JOOMLA, le meilleur gestionnaire de contenu Double Poche PHP & MySQL • 357 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. ¶ Ils suivent un document de la conception à la publication. ¶ Ils regroupent et gèrent des documents de nature différente (articles, documents à télécharger, formulaires, FAQ, calendriers d’événe- ments .). Joomla permet de séparer la technique web de la rédaction de billets. Ainsi un site Joomla a un webmestre qui s’occupe de la technique et plusieurs rédacteurs pour rédiger le contenu. Les rédacteurs sont aidés par des traitements de texte avec leur barre de texte et des mini-calendriers pour choisir une date et l’insérer dans un bon format. À une plateforme commune s’agglutinent des extensions, petites applica- tions qui ajoutent des fonctionnalités au tronc commun. Joomla est donc un standard avec une grande diversité en raison de ses extensions. Cette diversité explique aussi la possibilité de failles de sécurité ou d’impasses, l’extension n’étant plus mise à jour au gré des nouvelles versions de Joomla. m Figure 10.8 : Joomla 10 Les frameworks ou cadriciels PHP 358 • Double Poche PHP & MySQL Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Permissions Joomla propose un diagnostic de votre site à l’installation. Un certain nombre de répertoires demandent une permission 0777 pour l’installation. Veillez à remettre 0755, une fois l’installation finie. Les extensions personnalisent Joomla. Elles sont de quatre types : ¶ Les composants sont des mini-applications, agissant aussi bien en avant-scène (frontend) qu’en coulisses (backend ou administration) et rattachées souvent à une ou plusieurs tables de la base de données. ¶ Les modules sont des éléments d’interface qui se trouvent générale- ment dans les colonnes de droite et de gauche dans la page d’accueil. Ils présentent souvent une information, des liens d’une manière différente pour les mettre en valeur. ¶ Les mambots sont des fonctions qui sont actionnées par des événe- ments et permettent de transformer les informations avant leur affichage. ¶ Les templates (ou patron, comme des patrons de couture) sont la peau dans laquelle se glisse l’application. Un patron est composé d’un fichier PHP, d’images et d’un ou plusieurs fichiers CSS pour régler l’apparence de votre site. Choisir Joomla 1.0.15 ou 1.5 La version 1.0.15 est la plus ancienne et propose 2 700 ex- tensions qui fonctionnent. La version 1.5 est internationalisée et elle est normalisée pour un développement. Si les extensions sont primordiales, il vaut mieux adopter l’ancienne version. Si c’est pour un nouveau site où les extensions ne sont pas fondamentales, il vaut mieux passer au 1.5.1 directement. Le code a été simplifié et normalisé. Son développement a demandé deux ans de travail. JOOMLA, le meilleur gestionnaire de contenu Double Poche PHP & MySQL • 359 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Drupal contre Joomla Un autre CMS très complet et bien écrit est Drupal (http://drupalfr .org/ ).Son code est mieux écrit et répond mieux aux normes de codage. Il a cependant moins de thèmes et d’extensions disponibles. S’il fallait départager les deux, il faudrait tenir compte de l’utilisation et du type de site. Drupal 6.8 permet : ¶ de créer un site multi-sites et donne plus de latitude pour moduler les catégories ; ¶ de déployer une granularité plus fine des permissions ; ¶ de modifier facilement les quelques thèmes pour les rendre originaux ; ¶ de monter un site communautaire avec de nombreux membres ; ¶ de l’intégrer dans d’autres sites grâce à son code aux normes. Joomla 1.5.8 est : ¶ facile à comprendre, à installer et à enrichir ; ¶ implémenté avec un espace d’administration ergonomique ; ¶ parasité par des interactions entre les modules (SEF…) et des bogues dû à un code mille-feuilles ; ¶ difficile à intégrer à d’autres sites ; ¶ riche d’innombrables modules et extensions. b Figure 10.9 : Drupal 10 Les frameworks ou cadriciels PHP 360 • Double Poche PHP & MySQL Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. [...]... paire pour les accolades et les parenthốses Si le nombre de parenthốses ouvrantes et celui des parenthốses fermantes ne sont pas identiques, le problốme se situe cet endroit Pour les guillemets, en gộnộral, la ligne faussement accusộe est un peu plus bas que la fautive Remontez et vous trouverez un guillemet manquant, un guillemet double qui rộpond un guillemet simple, un guillemet interne sans signe... maintenant dutiliser exclusivement $_POST, $_GET, 13.7 Les extensions in et out ô Et les laurộats sont : ằ ả Les modules XMLReader et XMLWriter qui permettent de lire ou dộcrire des ux XML ; ả Le module leinfo qui permet de dộterminer le type de codage dun chier Et les sortants sont : ả Lextension ereg et toutes les fonctions attenantes disparaissent du noyau et gagne le domaine des extensions PECL La... qui comprend un temps dexpression et un temps dộcoute Cest pour cette raison que le langage PHP et les bases de donnộes MySQL ont tant de succốs Ils rendent en effet le site interactif Ce dernier vous ộchappe car il appartient tous ceux qui possốdent les mờmes goỷts que vous De nombreux outils sont prộsents sur lInternet et gratuits Vous voulez un portail personnel et interactif, vous avez lembarras... & MySQL Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark Les ajouts 13.5 Utiliser Freetype 2 et GD 2 Pour utiliser les free fonts et les graphiques sous PHP 6, il est nộcessaire de se servir des fonctions propres ces versions de Freetype et de GD car leur version 1 nest plus dans PHP 13.6 Plus de HTTP_*_VARS Ce terme dộsigne tous les HTTP_*_VARS (HTTP_POST_VARS, HTTP_GET_VARS,... commoditộs ont permis au PHP davoir cette popularitộ mais ont ni par encombrer lAPI Le site Netlobo.com propose une fonction pour sộcuriser les formulaires et qui tient compte de toutes les versions de PHP et emploie la fonction PHP mysql_ real_escape_string() qui a lavantage de permettre dộchapper tous les caractốres spộciaux function quote_smart($value) { // Stripslashes if (get_magic_quotes_gpc()) { //si... "rien"; affiche: echo "huit"; } ifsetor() Ifsetor est un raccourci Ainsi ce code if(isset($_POST[õge])) { echo Vous avez $_POST[õge] ans; } else { return Vous navez pas indiquộ votre õge; } peut ờtre dộsormais remplacộ par cette ligne $õge = ifsetor($_POST[õge], non mentionnộ); Tableaux multi-dimensionnels avec foreach Les tableaux multidimensionnels sont courants et PHP 6, l encore, simplie la syntaxe... sites diffộrents que de placer deux messages contradictoires sur un seul site La nộtiquette La nộtiquette est lộtiquette du Net, lensemble des rốgles qui permettent une communautộ de vivre harmonieusement dans le respect mutuel Un certain nombre de comportements sont mal perỗus Si vous envoyez des Double Poche PHP & MySQL 375 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark... tờte les sites dont on retrouve le lien sur de nombreux autres sites Pour cette raison, nouez des liens autour de vous Utilisez les champs meta, surtout keywords et description Le titre, les mots-clộ et la description de votre site ont la plus grande importance, comme vous laurez constatộ dans le programme de moteur de recherche inclus dans le chapitre Moteurs de recherche et expressions rationnelles... que vous ne pouvez dộpasser Vous construisez un rapport de conance avec linternaute et cette conance peut ờtre mise mal par une intrusion, une maladresse ou une tricherie Au fur et mesure que linternaute se promốne sur lInternet, son discernement saiguise et les artices ne lamusent plus Lhumour La machine ne permet pas de se dộtendre comme lors dun contact avec un ờtre vivant Cest pourquoi il est... linternaute et vộrier que pour chaque action, une rộponse est prộvue Votre application nest pas linộaire, elle est arborescente et vous devez, en tant quauteur, visiter la moindre ramure Dessinez un arbre de possibilitộs et certaines ộventualitộs oubliộes vous sauteront aux yeux Rendez les pages derreur agrộables lil Reprenez les fonctions qui retournent un rộsultat ou un entier boolộen et crộez un . getPermissions(&$record){ $auth =& Dataface_AuthenticationTool::getInstance(); $user =& $auth->getLoggedInUser(); if ( !isset($user) ) return. $user->val(’role’); return Dataface_PermissionsTool::getRolePermissions($role); } } Cette fonction, ici, identifie chaque utilisateur et retourne la permission