Validering af URL alias

Tags:    php

Hej
Jeg er nu kommet en hel del videre med mit lille projekt om at lave et fleksibelt og brugervenligt CMS-system.
Jeg har lavet et system der sørger for at alt indhold gemmes i et array og ikke laver output før det hele er klar og alle tjek er gennemført, således at jeg kan lave 404 eller 403 fejl hvis det er nødvendigt.

Dog har jeg et lille problem der involverer en masse kode.
Min overordnede funktion der klargører det hele hedder initialize()
Fold kodeboks ind/udPHP kode 

Denne funktion skal, når den er færdig, gøre alt klar og placere i et array. Dette virker også fint, men jeg har bygget en funktion ind i systemet hvor det er muligt at lave et alias til siderne således at Om os ikke skal hedde example.com/page/12, men i stedet kan hedde example.com/om-os. Dog har jeg et lille problem med at få tingene til at fungere. Denne del af funktionen starter ved linje 27
Min initialize() funktion anvender nogle andre funktioner. Nogle af dem er direkte fra PHP, mens andre er nogen jeg har skrevet selv.
Funktionen getFieldFromDB() giver mig mulighed for at hente indhold fra databasen og returnere det i en variabel.
Fold kodeboks ind/udPHP kode 

Den sidste funktion page_exists() gør nøjagtig det som navnet siger. Den tjekker om den side jeg har forespurgt findes og returnerer sandt eller falsk.
Fold kodeboks ind/udPHP kode 

Sammen med indholdet af min init.php skulle det jo virke, men jeg får 404-fejl fra min funktion når jeg skriver example.com/om-os, mens example.com/page/12 fungerer fejlfrit.
Fold kodeboks ind/udPHP kode 


Jeg ved at min SQL-query finder og returnerer data korrekt da jeg kan gøre følgende på en fil der inkluderes senere i forløbet:
Fold kodeboks ind/udPHP kode 


Her vil den printe Array( [0] => page [1] => 12) på siden, som også er det den skal, da page/12 er system-URL til Om os.

Er der nogen der kan se hvad der går galt? Jeg får ingen fejl i min php_error.log og heller ikke på selve siden.



Indlæg senest redigeret d. 10.10.2013 20:30 af Bruger #17072
2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Var jeg dig, så ville jeg løbe alle værdierne igennem, og være ekstra sikker på, at det er de rigtige elementer, som bliver kørt i din initialize funktion.
I første omgang skal du være sikker på, at dit else-statement på linje 41 bliver kørt. Tjek herefter om de værdier som du forventer, er de værdier, som er tilknyttet både $get_url og $url.

Du tjekker på linje 30, om $get_url er numeric i din anden key i dit array. Men hvis du kalder /om-os er der kun én key, og ikke 2, som der er ved page/12. Tag et ligeledes et kig her. Tjek først om der kun er én key. Såfremt der ikke er, så kør dit if-statement, som tjekker, hvorvidt din anden key i $get_url er numeric.



Hej
Nu løb jeg koden igennem ved at udkommentere de dele der laver 404-fejl og så prøvede jeg med example.com/om-os for at se om den returnerede de korrekte værdier.
Jeg placerede koden i den fil der vises indholdet af mit body-element og erstattede mine funktioner med output som skulle vise hvordan den opførte sig.
Dette resulterede i at den gav mig 404-fejl fordi $get_url[1] ikke var sat og derfor skulle den returnere 404-fejlen. Dette har jeg nu lavet om så jeg har kopieret linje 42-53 og sat ind i stedet for linje 58-60. Nu kan den validere mit page_alias op mod en page_url.



t