Automatische sidemenu's en beveiliging

  • Hoi!


    Ik zal het dit keer kort houden, aangezien mijn browser het zonet grappig scheen te vinden af te sluiten terwijl ik bijna klaar was met mijn topic.


    Ik heb voor mijn systeem een model die automatisch de sidemenu's uit de database haalt en het in de template dumpt, door eerst de categorie te loopen en vervolgens de items te loopen. Dat telt natuurlijk allemaal een aantal milliseconden bij de laadtijd van de pagina op.
    Biedt het meerwaarde om mijn menu's in de database te zetten, of is het handiger het statisch te maken?


    Ook zat ik een aantal dagen geleden te prutsen met de SQL injecties in queries van de Kohana query builder, maar met mijn extra beveiliging bleek dat het dubbel escaped wordt.
    Wordt POST data in Kohana queries automatisch beveiligd of had ik zelf een foutje gemaakt toen het dubbel escaped werd?


    Alvast bedankt!


    Groet,
    De sappigste groente op planeet aarde: Spinazie!

    Totdat Stefan en Koen terug zijn van vakantie ben ik weer actief. Daarna ben ik weer weg ;)

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Als je het dynamisch wilt hebben door het in een database te zetten lijkt caching mij een oplossing voor je.
    Maar angezien TPL_Magic niet aan caching doet en je Kohana's Fragment class ook al niet kunt gebruiken kan dit moeilijk worden...
    *gaat met een vorige discussie verder* Ik heb liever business logic en presentation logic geschijden dan PHP en HTML gescheiden, en aangezien TPL_Magic eigenlijk alleen maar simpele find and replace parser is kan je dus geen presentation logic in de templates stoppen en zal die waarschijnlijk in de controller terecht komen en dus tegen MVC in druisen.
    (Voor de nieuwkomers, ik heb over het algemeen liever bestanden die puur om presentatie gaan (maar wel PHP bevatten om dat mogelijk te maken) dan templates die door PHP geparsed moeten worden.)


    De Kohana query builder enscaped automatisch waardes voor je.
    Zie Kohana_Database::quote(), Kohana_Database::quote_table(), Kohana_Database::quote_identifier() en Kohana_Database_MySQL::enscape().
    Zie DB::expr() en hoe Kohana_Database_Expression in de bovenstaande methods gebruikt wordt om iets letterlijk in de query te stoppen.

  • Ik had ook al aan caching gedacht, maar dat leek me een beetje omslachtig, aangezien er eerst een database verbinding opgezet moet worden, het menu gegenereerd moet worden, dat bestand gedownload moet worden en vervolgens weer door de user teruggehaald wordt.
    Daar komt nog bij (ben ik vergeten te zeggen) dat het opslaan van de sidemenu's eigenlijk bedoeld was om de gebruiker de mogelijkheid te bieden om de volgorde van de menucategorieën aan te passen.


    Onderschat trouwens de kracht van templateparsers niet, door middel van een apart model is het technisch gezien mogelijk de menu's te cachen, maar caching is sowieso niet de favoriete oplossing voor mij.

    Totdat Stefan en Koen terug zijn van vakantie ben ik weer actief. Daarna ben ik weer weg ;)

  • Ik bedacht net iets:

    PHP
    $whatever = Sprig::factory('whatever', array('whatever' => 'whatever'))->load(DB::select()->cached(3600));


    Je kunt via de profiler kijken of het uit maakt of niet.


    Verder onderschat ik de kracht van template parsers in het algemeen niet...
    Maar TPL_Magic vind ik meer een gigantisch uit de kluite gegroeide preg_replace() (durf ik str_replace() te zeggen? blijkbaar wel) dan een template parser.
    Er is voor mij wel een punt waarna de extra overhead van een template parser mij de moeite waard wordt, waar dat punt ligt weet ik zelf nog niet, maar Twig en PHPTAL spreken me wel aan.


    Wat heb jij tegen caching?

  • Citaat van Darsstar

    Wat heb jij tegen caching?


    Krijg je onrelevante gegevens en maakt het minder interactief.

    Nieuwe reactie samengevoegd met originele reactie op 22.02.10 16:22:14:
    Ik ga trouwens in de toekomst eens kijken naar die Twig / PHPTAL van je :p Lijkt me inderdaad ook niet niks in het eerste opzicht.

    Totdat Stefan en Koen terug zijn van vakantie ben ik weer actief. Daarna ben ik weer weg ;)

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!