12. januar 2007 - 15:00
Der er
13 kommentarer
Problemer med php navigation
Hejsa Jeg er ved at sætte en mac os x server op, men jeg har problemer med at køre følgende navigationsscript på de sider jeg smider på serveren: php if(!isset($id)) { $id = "frontpage"; } if(file_exists("$id.html")){ include ("$id.html"); } elseif (file_exists("$id.php")){ include ("$id.php"); } elseif (file_exists("$id.txt")){ include ("$id.txt"); } elseif (file_exists("$id")){ include ("$id"); } else{ include ("error404.php"); } PHP4 synes ellers at køre. Nogle der har en idé? (den kan fx. godt vise phpinfo)
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
12. januar 2007 - 15:07
#1
prøv at erstatte $id med $_GET['id']
12. januar 2007 - 15:28
#2
Samtlige steder?
12. januar 2007 - 15:30
#3
hvis du får det som en get fra querystrengen så ja alle steder eller du kan også skrive: $id = $_GET['id']; øverst
12. januar 2007 - 16:04
#4
Det virkede. :) I må gerne få point begge to hvis man kan det :)
12. januar 2007 - 16:39
#5
nej det var coderdk der kom med svaret jo
12. januar 2007 - 17:36
#6
Tag nogle af dem selv, 200 er for mange ;)
12. januar 2007 - 18:47
#7
Lige en detalje, file_exists() returner sand hvis der er et dir af samme navn, så is_file() vil være bedre.
12. januar 2007 - 19:08
#8
Den er også sårbar over for f.eks. ?id=/etc/passwd
12. januar 2007 - 19:35
#9
Jow, men afhænger jo så af hvordan man tjekker om filen findes. Og den sidste her, } elseif (file_exists("$id")){ include ("$id"); er jo "kriminel" !
12. januar 2007 - 19:39
#10
Hehe jamen så forklar lige hvordan det skal være :D
12. januar 2007 - 19:51
#11
ville selv bruge et array, evt lavet ved at læse et dir igennem for filer som kan includes. Men "manuelt" <?php $files = array("frontpage.php", "kontakt.txt", "guestbook.php"); $inc_file = (isset($_GET["id"]) ? $_GET["id"] : $files[0]); if(in_array($inc_file, $files)) { include($inc_file); }else{ include($files[0]); } ?>
12. januar 2007 - 19:57
#12
evt. uden filendelser: <?php $files = array("php" => "frontpage", "txt" => "kontakt", "php" => "guestbook"); $inc_file = (isset($_GET["id"]) ? $_GET["id"] : $files[0]); if(in_array($inc_file, $files)) { include($inc_file .".". array_search($inc_file, $files)); }else{ include($files[0] .".php"); } ?> ( stadig utestet! )
13. januar 2007 - 05:15
#13
Prøver lige igen. Sørg ALTID for at sikre dig hvilken fil som evt. includes, enten ved at lave et array eller definere fra hvilket dir du includer. Mit sidste ex. uden filnavn skal være: <?php $files = array("txt" => "kontakt", "php" => "guestbook"); $inc_file = "frontpage.php"; if(isset($_GET["id"]) && in_array($_GET["id"], $files)) { $inc_file = $_GET["id"] .".". array_search($_GET["id"], $files); } include($inc_file); ?>
Vi tilbyder markedets bedste kurser inden for webudvikling