Pour un projet d'école, je dois produire un site Web utilisant PHP qui permet à l'utilisateur de générer son propre article ou de commenter des nouvelles ou d'autres articles. Je me demandais comment il est préférable d'utiliser la fonction GET pour afficher le contenu d'un fichier include et utiliser la fonction get pour d'autres fichiers include tels que la page de connexion et tout autre contenu ajouté par le développeur au site. mais en tant que liens, etc. N'importe qui a eu des suggestions ou de bons tutoriels qu'ils pourraient poster.Comment démarrer avec un site web PHP?
Répondre
Vous aurez certainement envie aseptiser tout ce qui vient à travers le paramètre GET avant y compris un fichier. Vous le faites normalement en vérifiant les caractères valides, et comme il appelle directement un fichier du système de fichiers, j'entre habituellement les actions de navigation valides. Ce n'est pas la solution la plus élégante mais souvent la plus simple et la plus sûre pour une petite application.
J'utilise généralement des commutateurs de cas pour cela, mais j'ai vu des gens utiliser des expressions régulières de fantaisie ainsi.
Quelque chose le long des lignes de:
if (isset($_GET['nav'])) {
switch ($_GET['nav']) {
case 'login':
case 'logout':
case 'article':
include($_GET['nav'] . '.php');
break;
default:
die('Invalid nav parameter');
break;
}
}
Wheel a été inventé, testé, roulé pour un million de miles: WordPress
C'est ce que je l'utilise ...
function safeIncludeFile($path)
{
$regex = '/[a-z0-9\-_]+/i'; // match only a to z, 0 to 9 and the minus and unscore character. case insensitive. adjust to accommodate your file naming schema.
return preg_match($regex, $path);
}
Et puis faire quelque chose comme ça
if (isset($_GET['page']) && safeIncludeFile($_GET['page'])) {
require PATH_TO_INCLUDES . $_GET['page'] . '.inc.php';
}
Vous pouvez aussi avoir un tableau qui agit comme une liste blanche
$allowedIncludes = array('home', 'about', 'news');
puis vérifiez si la page est là
if(in_array($_GET['page'], $allowedIncludes)){
include $_GET['page'].'.php';
}else{
die('Forbidden!');
}
donc, vous ne devez pas ajouter un « cas » à votre commutateur chaque fois que vous ajoutez quelque chose.
- 1. Vous cherchez un ensemble d'outils/objets pour démarrer un site Web en PHP
- 2. Comment démarrer une application web avec eclipse
- 3. Faire un site Web avec des profils
- 4. Démarrer le site Web spécifique d'IIS 6.0 via le script
- 5. Comment intégrer un site web avec un backend Java?
- 6. Lire un site Web avec asyncore
- 7. Démarrer avec OpenID
- 8. Comment démarrer avec J2ME?
- 9. Comment démarrer avec Rspec?
- 10. Grattez un prix sur un site Web
- 11. Comment démarrer avec le contrôle de version et PHP
- 12. Démarrer avec Hessian
- 13. Comment créer un résumé de site Web avec Perl?
- 14. Comment rediriger vers un site Web externe avec des rails?
- 15. PHP - Comment démarrer une session après l'authentification HTTP
- 16. L'optimisation d'un site web php statique
- 17. comment créer un site Web ASP.Net enfichable?
- 18. Comment trouver un port vide pour démarrer WCF web ServiceHost
- 19. Comment déployer/publier un site Web ASP.NET?
- 20. Comment mieux emballer un site Web
- 21. Comment accéder à un site Web sécurisé dans un site Web sharepoint?
- 22. VS2008 ASP.NET Site Web et application Web
- 23. Démarrer avec l'API Zimbra
- 24. télécharger un fichier sur un site web avec ruby / rails
- 25. Comment démarrer Tomcat avec un server.xml spécifique sous Windows?
- 26. Démarrer avec WebParts
- 27. Diagrammes à barres sur un site Web
- 28. Construire un site web - meilleures pratiques et architecture avec Ruby
- 29. Enveloppez MediaWiki dans un autre site Web
- 30. Vidéo dans un site Web
Nous étions tous en train de le penser ... – cole
Donc je suis le seul à avoir les boules à faire remarquer qu'il est ridicule de perdre du temps sur des problèmes qui ont déjà été résolus –
+1 .. mais parfois ça peut être amusant 'ou au moins une bonne expérience d'apprentissage. Bien que si c'était pour un client que j'étais payé pour faire, je laisserais à wordpress. – alex