Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 21/02/2011, 21h54   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Par défaut Mise en forme php dans du HTML

Bonsoir,
je me pose des questions quand à la mise en page de mon code php et html.
Est ce 'propre' dans une page d'utiliser un if(isset $_SESSION['variable']) à plusieurs reprises pour afficher un contenu uniquement si l'administrateur est connecté et si il ne l'est pas alors on affiche pas le contenu ou alors existe t-il une manière plus 'propre' de le faire ?

j'espère avoir été clair.

Merci d'avance !
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 23h16   #2
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 561
Points : 1 561
C'est souvent plus simple de faire une page administrateur qui sera protégée par ta variable de session et une page visiteur séparée.
Mais en fait tout dépend du contexte, à toi de voir si cela ne complique pas trop les choses.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 12h39   #3
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
personnellement, j'inclus des scripts avec formulaire et édition avec un code du genre:
Code :
1
2
3
4
5
 
if ( $_SESSION['logged'] != True ) {
return False ;
exit ;
}
et le script inclus s'arrête si on est pas logué. Ainsi si on accède directement au script par l'url: page blanche!
Mais c'est reposer la question, je ne connais pas les 'bonnes pratiques'...
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 13h30   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Hello

Je profite de ce post pour faire une piqure de rappel

PHP à été créé au départ pour être intégré dans du HTML, je trouve personnellement inutile le battage qui est fait autours des moteurs de templates massivement utilisés en ce moment (SMARTY c'est à toi que je parle).
On peut très bien écrire du phtml (c'est d'ailleurs une extension valide pour PHP) à condition de respecter certaines règles:
- bien séparer les traitements de l'affichage: effectuer des requêtes, faire des calculs lourds ou des algorithmes complexes en plein milieu d'un flux xhtml doit être strictement proscrit
- penser à utiliser autant que faire se peut le short open tag <?=$ma_var?> (à condition que la directive short_open_tag soit à On dans le php.ini), ceci à des fins évidentes de lisibilité
- éviter les accolades pour délimiter des blocs: PHP peut utiliser une syntaxe proche de celle de bash (voir annexe 1)
- eviter les attributs style, onClick et autres éléments intrusifs: les styles vont dans une feuille de style séparée et les évenements JavaScript doivent être attaché dans un script séparé (voir Annexe 2)
- garder une indentation propre et ne jamais dépasser les 140 caractères en longueur (pour affichage sur un écran 17 pouces), ceci afin d'améliorer la lisibilité du code
- conserver à l'esprit que celui qui reprendra votre code derrière vous est un serial-killer qui connait votre adresse

Annexe 1: utilisation des structures de contrôles au sein des vues
Code :
1
2
3
4
5
6
7
8
 
<div id="content">
<?php if (isset($ma_var)): ?>
  <span><?=$ma_var?></span>
<?php else: ?>
  <span>$ma_var non définie</span>
<?php endif; ?>
</div>
Toutes les structures de contrôles sont disponible.

Annexe 2: du bon usage des styles et des scripts
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<!-- A eviter -->
<div style="border: 1px solid #ccc;" onClick="javascript:ma_fonction()">
 
<!-- A privilégier -->
<div class="borders-grey" id="un_id">
 
# dans le CSS
div.borders-grey { border: 1px solid #ccc; }
 
# dans le js (avec jQuery dans l'exemple)
$(function () {
   function ma_fonction () {
   // ....
   }
 
  $('div#un_id').click(ma_fonction);
});
Utiliser cette pratique réduit la lourdeur des pages car le contenu présents dans les scripts/stylesheets attachés à la page ne sont téléchargés qu'une et une seule fois par le client. Cela factorise également ces informations, ce qui facilite la maintenance et le support.

@BlindeKinder
Pense à utiliser isset sinon gare aux E_WARNING qui viendront polluer l'error log d'apache

@polux31
Citation:
Est ce 'propre' dans une page d'utiliser un if(isset $_SESSION['variable']) à plusieurs reprises pour afficher un contenu uniquement si l'administrateur est connecté et si il ne l'est pas alors on affiche pas le contenu ou alors existe t-il une manière plus 'propre' de le faire ?
Il est d'usage de définir des comportements séparés pour les administrateurs et les visiteurs. Sans connaitre les tenants et les aboutissants de ton application, ça va être difficile de répondre mais je te suggère d'employer le célèbre formalisme MVC de façon à pouvoir créer des 'routes' distinctes pour les administrateurs et les visiteurs et de spécialiser les vues d'affichage pour chacun.
Tu trouvera de la documentation par ici: http://julien-pauli.developpez.com/t...vc-controleur/

Je ne saurais que trop te conseiller de formaliser autant que possible ton application avant de te lancer dans le code. Réfléchis bien à ce que tu veux faire et comment tu souhaite y arriver, prends un bloc de papier et décrit le cheminement de ton utilisateur et les différentes pages impliquées. C'est sûr, c'est laborieux, mais ça à le mérite de t'éviter de sérieux maux de tête quand (et ce 'quand' arrivera tôt ou tard) tu devras reprendre ce que tu as fait.
Exemple habituel (j'y suis confronté en permanence): demande du client xxx "je souhaite changer la couleur des liens pour les mettre en rose fushia", pas de chance le programmeur qui a fait le site à mis des style="color: black;" dans toutes les balises ancre (<a>); c'est parti pour des heures de refactoring de code. Alors qu'avec l'utilisation d'une feuille de style, c'est juste changer UNE ligne.

Également, évite d'utiliser des WYSIWYG comme Dreamweaver, c'est tentant mais le code produit est vraiment dégueulasse et impossible à maintenir (j'ai passé 1h à indenter correctement un code de 1000 lignes qui servait pour même pas 20 lignes d'affichage et une heure de plus à faire tous les changements).

A toi de jouer
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 16h36   #5
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 196
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 196
Points : 25
Points : 25
Merci à vous tous et particulièrement à Benjamin pour ton grand investissement.

En (très) bref, en ce qui concerne mon problème, il est plutôt conseillé de faire une page pour les users lambda et une autre pour l'admin.

Merci !
polux31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 17h33   #6
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 561
Points : 1 561
Citation:
Envoyé par Benjamin Delespierre Voir le message
...
- penser à utiliser autant que faire se peut le short open tag <?=$ma_var?> (à condition que la directive short_open_tag soit à On dans le php.ini), ceci à des fins évidentes de lisibilité
...

Surtout pas !
Si les short_open_tag sont désactivés par défaut depuis php5, ce n'est pas par hasard. Cela provoque des conflits si l'on veut utiliser conjointement du php et du xml dont la déclaration est <?xml...
Donc en plus d'avoir un code peu portable (short_open_tag désactivé par défaut en php5), c'est un code qu'il faudra reprendre en cas d'utilisation des balises <?xml. Alors on se prend pas la tête et on utilise la balise d'ouverture "longue" <?php
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 20h35   #7
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
Citation:
Pense à utiliser isset sinon gare aux E_WARNING qui viendront polluer l'error log d'apache
c'est pas E_NOTICE et seulement en production? en tout les cas, je le fais toujours, depuis que j'ai téléchargé un site fait par quelqu'un d'autre pour le réviser et que j'ai passé des heures à repérer tout les bug du genre, car il ne réagissait pas pareil sur mon serveur (magic_quotes, register_global, Notices dans un script renvoyant une image, donc pas d'image pas de messages d'erreur...)

Pour revenir au sujet, j'aime bien pour l'édition voir la page telle quelle et avoir un formulaire d'édition en plus (c'est plus une question qu'une contradiction)... mais je n'ai jamais travaillé sur de très gros projets. ça me parait plus clair d'ailleurs pour le code et plus facile à maintenir d'avoir des formulaires/scripts inclus, que d'avoir "deux sites".
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 21h02   #8
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 561
Points : 1 561
Citation:
Envoyé par BlindeKinder Voir le message
Pour revenir au sujet, j'aime bien pour l'édition voir la page telle quelle et avoir un formulaire d'édition en plus (c'est plus une question qu'une contradiction)... mais je n'ai jamais travaillé sur de très gros projets. ça me parait plus clair d'ailleurs pour le code et plus facile à maintenir d'avoir des formulaires/scripts inclus, que d'avoir "deux sites".
Faut pas exagérer, ça te fait pas deux sites mais deux pages

Pour ce qui est du choix entre faire une page ou deux, encore une fois, tout dépend du contexte et de la "ressemblance" entre les pages.
Si au final ta page administrateur n'a que peu de chose en commun avec la page visiteur, ça complique grandement la vie de ne vouloir faire qu'une page qui devra être modifiée à tous les niveaux, et ça va pas aider le serveur de charger un code plus lourd parfois pour rien.
Par contre s'il s'agit d'un simple formulaire en plus ce n'est pas la même problématique
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 21h34   #9
Membre du Club
 
Inscription : mars 2007
Messages : 116
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 116
Points : 52
Points : 52
Citation:
ça te fait pas deux sites mais deux pages
à condition qu'elles soient toutes pareilles... je fais plutôt des projets personnalisé où on me demande des pages complétement différente dans la présentation...
En même temps, peut-être que je m'y prends mal, d'où ma question. J'ai fini par travailler vaguement en MVC par intuition, et là je m'y met plus sérieusement...

Mais tu réponds donc à ma question: en effet ce sont finalement des formulaires, même parfois complexes, mais qui peuvent bien apparaître au bas de la page. Par opposition à une gestion complexe genre CMS avec plein de menus et d'options...
BlindeKinder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 22h15   #10
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 561
Points : 1 561
Citation:
Envoyé par BlindeKinder Voir le message
...
en effet ce sont finalement des formulaires, même parfois complexes, mais qui peuvent bien apparaître au bas de la page. Par opposition à une gestion complexe genre CMS avec plein de menus et d'options...
Voilà, c'est exactement l'exemple type de ce que je voulais faire comprendre
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB 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 11h05.


 
 
 
 
Partenaires

Hébergement Web