ThomasQ Skrevet 1. desember 2008 Forfatter Skrevet 1. desember 2008 (endret) '\' må være "\ 0" (uten mellomrom), altså med dobbeltfnutter rundt (de her: " " ) Er det ikke bedre å bruke chr(0) da? Slik da: if(strpos($side, '/') || strpos($side, '.')) { die("<h1>Ulovlige tegn i adresse!</h1>"); } if($side = chr(0)) { die("Test"); } ?? Fungerte hvertfall ikke -.- Endret 1. desember 2008 av ThomasQ
OISNOT Skrevet 1. desember 2008 Skrevet 1. desember 2008 Hvis du bare skal ha alphanumeriske tegn kan du prøve ctype_alnum. if (!ctype_alnum($side)) { // ikke en gyldig side }
Epower Skrevet 1. desember 2008 Skrevet 1. desember 2008 (endret) if(strpos($side, '/') || strpos($side, chr(0)) || strpos($side, '.')) { die("<h1>Ulovlige tegn i adresse!</h1>"); } Endret 1. desember 2008 av Eirikkkkkk
ThomasQ Skrevet 1. desember 2008 Forfatter Skrevet 1. desember 2008 if(strpos($side, '/') || strpos($side, chr(0)) || strpos($side, '.')) { die("<h1>Ulovlige tegn i adresse!</h1>"); } Takker Er scriptet mitt "bra" nå? <?php $mappe = "sider/"; $default = "index"; $fil = ".php"; $side = trim($_GET['side']); if(!$side) { include_once $mappe.$default.$fil; } $fa_side = $mappe.$side.$fil; if($side) { if(strpos($side, '/') || strpos($side, chr(0)) || strpos($side, '.')) { die("<h1>Ulovlige tegn i adresse!</h1>"); } if(!file_exists($fa_side)) { die("<h1>Beklager, siden du leter etter finnes ikke!<br>Vennligst gå tilbake til forsiden, å prøv igjen!</h1>"); } include_once $mappe.$side.$fil; } ?>
ThomasQ Skrevet 6. desember 2008 Forfatter Skrevet 6. desember 2008 Hva er feil her? Warning: include_once(.php) [function.include-once]: failed to open stream: No such file or directory in C:\wamp\www\hjemmeside\index.php on line 27 Warning: include_once() [function.include]: Failed opening '.php' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\hjemmeside\index.php on line 27 Når jeg skriver: http://127.0.0.1/hjemmeside/ i url'en. Index, inkluderes. Men ikke vis jeg skrev ?side=om da blir skjermen hvit. Script: <?php error_reporting(E_ALL); $mappe = "sider/"; $endelse = ".php"; $sider = array( 'index', 'om', '', '', '' ); $side = isset($_GET['side']) ? $_GET['side'] : include_once $mappe.'index'.$endelse; if($side) { $side = str_replace('\\', '/', realpath($side . '.php')); if(!in_array($side, $sider)) { die("Siden finnes ikke"); } include_once $side.$endelse; } ?>
Runar Skrevet 6. desember 2008 Skrevet 6. desember 2008 Som du ser utifra feilmeldingen, prøver den å åpne en fil med filnavn .php, altså en av de blanke filene i $sider-arrayen din.
OISNOT Skrevet 6. desember 2008 Skrevet 6. desember 2008 Noe slikt? <?php error_reporting(E_ALL); $mappe = "sider/"; $endelse = ".php"; $sider = array('index', 'om'); if (isset($_GET['side'])) { $side = $_GET['side']; if (ctype_alnum($side) && in_array($side, $sider)) { include_once $mappe . $side . $endelse; } else { die("Siden finnes ikke"); } } else { include_once $mappe . 'index' . $endelse; }
ThomasQ Skrevet 6. desember 2008 Forfatter Skrevet 6. desember 2008 Sånn Er scriptet mitt sikkert nå ? <?php // Raporterer alle feil som oppstår error_reporting(E_ALL); // Variabler $mappe = "sider/"; /* hvor sidene ligger */ $endelse = ".php"; /* endelse på filene */ // Sidene i array's $sider = array('index'); // Variablene $side $side = $_GET['side']; // Vis side er tilfelle if($side) { // Gjør om \\ til / $side = str_replace('\\', '/', $side); // Vis siden er gyldig, inkluder siden if (ctype_alnum($side) && in_array($side, $sider) && !strpos($side, '/') && !strpos($side, chr(0)) && !strpos($side, '.')) { include_once $mappe . $side . $endelse; } else { die("Siden finnes ikke"); } } else { // Vises vis ikke $_GET['side'] finnes include_once $mappe . 'index' . $endelse; } ?>
Peter Skrevet 12. desember 2008 Skrevet 12. desember 2008 (endret) Hvorfor skulle strpos finne ? Det høres jo helt banalt ut. Søker strpos utover i minnet normalt sett da, eller bruker den noe annet enn C-implementasjonen? Terminerer i èn funksjon, hvorfor ikke i strengefunksjoner. EDIT: Dette gjelder visst bare underliggende filsystemfunksjoner i libc. Endret 12. desember 2008 av Peter
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå