[php] explode probleem

Pagina: 1
Acties:

  • radial
  • Registratie: Augustus 2000
  • Laatst online: 31-08 21:57

radial

Watch out

Topicstarter
Als eerste de titel is moeilijk te omschrijven hiervoor dus indien iemand een betere heeft graag aanpassen


Het volgende is het probleem:

De bedoeling is dat de waarde "letters/naam" achter de / gecontroleerd wordt met wat ik in de map data heb staan.
Tot nu toe gaat het goed hij controleerd het, maar als het fout gaat komt er ipv de echo "Error" een failed opening van het foute bestand te staan.
het vreemde is dat indien er achter de / een . staat het wel goed gaat

?topic=../data/nieuws ==>> goed
?topic=../data/aaa ==>> fout, dus error melding

PHP:
4
5
6
7
8
9
10
11
$topic_ext=$topic.".inc"; 
list($voor,$midden,$laatst)=explode("/", $topic_ext); 
list($naam,$extensie)=explode(".", $laatst); 
    if ($extensie != "inc" || $naam != $name){  echo "Error 404"; }
    else {
        
        INCLUDE $topic_ext;
    }


dit zijn de echo waardes die eruit komen:

$naam = aaa
$name = file naam
$topic = ../data/aaa
$topic_ext = ../data/aaa.inc

De originele bestanden hebben de extensie .inc

eens even kijken hoe het duidelijker kan

als er op een link geklikt wordt moet ie die pagina openen ?topic=../data/nieuws dit gaat dus goed
indien er handmatig ?topic=../data/hhh bv ingetikt wordt moet ie het gaan controleren of die die file bestaat dit gaat dus fout,
als je ?topic=../data/ laat staan met niks erachter gaat het ook fout

?topic=../data/hhh.ext dan gaat het goed en geeft ie fout 404

wat dus de bedoeling is dat indien er ?topic=../data/ of ?topic=../data/hhh staat hij foutmelding 404 geeft (404 is gewoon een echo "error 404"

hopelijk is het zo iets duidelijker omschreven het is nog vroeg mn 1e vakantiedag

20xSF170s - ozo


Verwijderd

Kan je een voorbeeld geven van wanneer het *wel* goed gaat?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Kun je het geheel even wat duidelijker uitleggen?
Voor zover ik het versta, heb je een string die er als volgt uitziet: "dir/bestand". Nu wil je hetgeen dat achter de / staat, in dit geval 'bestand' gaan gebruiken om te kijken of er een dergelijk bestand bestaat in de opgegeven directory?

Heb je al eens gedebugged?

https://fgheysels.github.io/


  • vinnux
  • Registratie: Maart 2001
  • Niet online
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$topic_ext=$topic.".inc";  
list($voor,$midden,$laatst)=explode("/", $topic_ext);  
list($naam,$extensie)=explode(".", $laatst);  
    if ($extensie != "inc" || $naam != $name){  echo "Error 404"; } 
    else { 
         
        INCLUDE $topic_ext; 
    }
?> 

Misschien moet die && || zijn. Echter heb je ook een functie :
is_readable() en file_exists() en met dirname() kun je de dir name er vanaf slopen. en basename() voor de bestandsnaam.

Verwijderd

Die || spreekt sowieso voorzich, je wilt namelijk eruit klappen als 1 van de 2 dingen (of alletwee niet kloppen... met && klapt ie er alleen uit als alletwee de dingen fout gaan.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Het is een beetje onlogische code, want wat je wilt bereiken is met niet helemaal duidelijk.


$topic_ext=$topic.".inc";
Hier plak ".inc" achter.

if ($extensie != "inc" &&
En hier controleer je of het gelukt is?

Waar komt $name vandaan?

Verder zou ik eens kijken naar de post van vgouw over file_exists en is_readable

Misschien kan je ook werken met default dir en files?
dus

in pseudocode stijl...
1 $topic="blaat" // Geef je door via de url
2 controleer of "blaat" toegestaan is via een array van toegestaande namen en in_array
3 plak aan de topic jouw default directory
4 include dit bestand


HTH

Programmer - an organism that turns coffee into software.


  • radial
  • Registratie: Augustus 2000
  • Laatst online: 31-08 21:57

radial

Watch out

Topicstarter
Bedankt het is gelukt

PHP:
4
5
6
7
8
9
10
11
12
13
14
15
$topic_ext=$topic.".inc"; 

if (file_exists($topic_ext)){

list($voor,$midden,$laatst)=explode("/", $topic_ext); 
list($naam,$extensie)=explode(".", $laatst);

    if ($extensie != "inc"){  echo "Error 404"; }
    else {
        
        INCLUDE $topic_ext;
    } } else {  echo "Error 403"; }


De code is niet supermooi, maar ga daar nog mee bezig

20xSF170s - ozo

Pagina: 1