YapfHoofdpagina | Info | Hulp | FAQ (veelgestelde vragen) | Speciale pagina's | Aanmelden


Printervriendelijke versie | Voorbehoud | Privacybeleid

PHP code in de database

Uit Yapf

Is het ook mogelijk PHP code in een database te zetten en dat uit te voeren wanneer het gesecteerd wordt?

Het voordeel hiervan zou zijn dat je hele lappen HTML in de database zou kunnen zetten met 'echo $var;' op de plek waar je een variabele uit je script wilt laten zien.

Inhoud

Technisch: ja natuurlijk.

Ja, het kan, PHP kan een string interpreteren als PHP en uitvoeren.

Praktisch: liever niet.

Het kan wel, maar het is geen echt goed plan.

Waarom niet?

Je zet PHP code in de database, dat betekent dat je de code moet uitvoeren om er enig resultaat uit te krijgen. De enige manier om dat voor elkaar te krijgen is eval() en het vervelende daarvan is dat het net als require() en include() de code rechtstreeks in je script opneemt, alle variabelen die in je script bestaan zijn ook beschikbaar in de code die je uitvoert.

Dat heeft één groot nadeel en één groot gevaar.

Het nadeel: Je mag in je databasecode niets, maar dan ook echt helemaal niets doen buiten het printen van die variabele. Doe je meer, dan loop je het risico dat wat je doet spaak loopt met de rest van het script. Iets sufs als een FOR lusje met een variabele $i kan de boel helemaal slopen als je vergat dat het script zelf ook een $i gebruikte om bijvoorbeeld een paginanummer bij te houden.

Het gevaar: Je voert code uit. Als een hacker om welke reden dan ook zelf PHP kan invullen in een veld dat jij eval()t, dan kan hij via cross-site-scripting allerlei data van jou en je bezoekers gaan stelen, ook zonder dat jij het merkt.

Wat moet je dan wel doen?

De meestgebruikte toepassing van PHP in de database is gewoon een verkapte vorm van templates en voor templates zijn al compleet uitgewerkte oplossing te krijgen, zoals Smarty.

Mocht dat teveel zijn voor jouw toepassing, dan is er een extreem simpel alternatied: str_replace(). Ook daarmee kun je voorgeprogrammeerde woorden vervangen door waaren uit je script. Je moet dan wel van tevoren weten welke variabelen er gebruikt kunnen worden, maar dat betekent tegelijk dat variabelen die jij niet beschikbaar wilt maken ook niet beschikbaar zijn.

Teruggeplaatst van "http://www.yapf.net/index.php/PHP_code_in_de_database"

Deze pagina is 366 maal bekeken. Deze pagina is het laatst bewerkt op 21 dec 2008 om 13:22.


Zoeken

Bladeren
Hoofdpagina
Gebruikersportaal
In het nieuws
Recente wijzigingen
Willekeurige pagina
Hulp
Bewerken
Brontekst bekijken
Hulp bij bewerken
Paginaopties
Overlegpagina
Opmerking toevoegen
Printervriendelijke versie
Pagina-informatie
Paginageschiedenis
Verwijzingen naar deze pagina
Verwante wijzigingen
Mijn pagina's
Aanmelden / registreren
Speciale pagina’s
Nieuwe pagina's
Bestandslijst
Statistieken
Foutrapporten
Meer …