17. januar 2004 - 11:02
Der er
40 kommentarer og 1 løsning
hent fil fra en mappe
Hej
Jeg har for langt tid siden fået en af mine venner til at lave denne kode, som henter filerne ind fra mappen sider via. index.php?side=forside
Nogen der kan lave så den er hurtigere om at finde filen, for syntes ikke den er få hurtig..
<?php
$side_mappe='./sider/';
$side_type='.php';
$side_standard='forside';
$indhold_height = '750';
if(!$side)
{
$side=$side_standard;
}
$side_komplet=$side_mappe.str_replace(array('/','.'),'',$side).$side_type;
if(!is_readable($side_komplet))
{
echo '
<table border="0" width="100%" cellspacing="0" cellpadding="3" height="661" style="border: 1px solid #FFFFFF">
<tr>
<td width="100%" bgcolor="#556379" height="21" style="border-bottom: 1px solid #FFFFFF">
<p align="center"><font face="Verdana" style="font-size: 12px;"><b><font color="#FFFFFF">404 Fejl</font></b></p>
</font></td>
</tr>
<tr>
<td width="100%" bgcolor="#7989A2" height="'.$indhold_height.'" valign="top">
<font face="Verdana" style="font-size: 11px;"><center>Siden '.$side.' eksistere ikke, <a href="java script:history.go(-1)">klik her for at komme tilbage</a></center></font>
</td>
</tr>
</table>';
$msg = 'Link:
http://www.scooter-eksperten.dk/index.php?side='.$side; $recipient = 'mpj@scooter-eksperten.dk';
$subject = '404 Fejl!';
mail($recipient, $subject, $msg);
}
else
{
include $side_komplet;
}
?>
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
17. januar 2004 - 11:03
#1
Altså i skal lave den så god & hurtig som overholdet muligt
17. januar 2004 - 11:06
#2
der er ingen ting det umidbart får det til at køre langsomt... usikker, ja - men ikke langsomt... Morten
17. januar 2004 - 11:07
#3
Ok hvis den ikke kan blive hurtiger, så vil jeg godt have den så sikker som overholdet muligt.....
17. januar 2004 - 11:12
#4
det gør du fx ved at definere hvilke filer der er mulighed for at indkludere... ex: <?php $filer[] = "forside; $filer[] = "links"; // osv if(isset($_GET['side'])){ if(in_array($_GET['side'], $filer)) include('/sider/' . $_GET['side'] . '.php'); else{ echo "siden findes ikke"; // send email - kaldte side findes i $_GET['side'] } } else{ include('./sider/forside.php'); } ?> Morten
17. januar 2004 - 11:15
#5
Kan du så ikke lave en kode som henter alle filnavene i mappen sider, for gider ikke skrive vær navn ind :/
17. januar 2004 - 11:28
#7
Ser dette rigtigt ud? <?php if ($handle = opendir($_SERVER['DOCUMENT_ROOT'].'/sider/')) { while (false !== ($file = readdir($handle))) { echo $file.'<br>'; } closedir($handle); } ?> Men hvorfor udskriver den: . .. film.php osv.... Hvordan laver jeg så den ikke udskriver: . ..
17. januar 2004 - 11:29
#8
se hvordan ex. 2 gør det ;)
17. januar 2004 - 11:30
#9
17. januar 2004 - 11:32
#10
hvad bruger du af kode? Morten
17. januar 2004 - 11:33
#11
Jeg har fundet ud af det, det skal se sådan ud: <?php if ($handle = opendir($_SERVER['DOCUMENT_ROOT'].'/sider/')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo '$filer[] = '.$file.'<br>'; } } closedir($handle); } ?>
17. januar 2004 - 11:35
#12
Har du en ide om hvordan man laver så den sletter .php på alle filerne?
17. januar 2004 - 11:35
#13
tja - og så evt lave noget der stripper .php væk ;) echo '$filer[] = '.substr($file,0,-4).'<br>'; fjernet de sidste 4 tegn (.php) Morten
17. januar 2004 - 11:39
#14
Er det ikke lidt fusk? Eller vil det 100% virke?
17. januar 2004 - 11:42
#15
det fjener de sidste 4 tegn - hundrede... du får også lige et svar så du kan fyre nogle point efter mig hvis du får sådanne lyster ,) Morten
17. januar 2004 - 11:43
#16
Hvordan skal denne linje se ud? $filer[] = substr($file,0,-4)\n; ?
17. januar 2004 - 11:43
#17
Den skal jo lave denne liste: $filer[] = "forside; $filer[] = "links"; osv..
17. januar 2004 - 11:43
#18
$filer[] = substr($file,0,-4) . "\n";
17. januar 2004 - 11:45
#19
17. januar 2004 - 11:46
#20
dvs: <?php echo "<pre>"; if ($handle = opendir($_SERVER['DOCUMENT_ROOT'].'/sider/')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo '$filer[] = ' . substr($file, 0, -4) . "\n"; } } closedir($handle); } echo "</pre>"; ?> og så kan du copy-paste dens output ind i den første kode jeg skrev... Morten
17. januar 2004 - 11:47
#21
gør som jeg jeg skrev lige før istedet for af genere listen hver gang - det gør den ca. lige så usikker... du skal validere mod kendte informationer for at sikre sig at folk ikke kan udnytte det... Morten
17. januar 2004 - 11:48
#22
Den siger der er fejl i denne linje: if(in_array($_GET['side'], $filer))
17. januar 2004 - 11:49
#23
gør lige som jeg skrev 11:46:01, og vis så koden+ fejl... så ser jeg på det Morten
17. januar 2004 - 11:51
#24
17. januar 2004 - 11:52
#25
så mangler du bare "og så kan du copy-paste dens output ind i den første kode jeg skrev..."... dvs: --- <?php $filer[] = film $filer[] = tuning $filer[] = styling $filer[] = tips_tricks $filer[] = anbefal $filer[] = kontakt $filer[] = faq $filer[] = tagwall $filer[] = add_tag $filer[] = nyheder $filer[] = forside $filer[] = tilkoersel_af_cylinder $filer[] = begraensninger_sonic_03 $filer[] = speedoplader $filer[] = hastighedsmaaling $filer[] = Bedoem_af_netshops $filer[] = begraensninger $filer[] = cylinder_oversigt $filer[] = afstemning $filer[] = fjernelse_af_klistermaerke $filer[] = olieblanding $filer[] = kobling $filer[] = billeder $filer[] = bannerbyt $filer[] = motoline_racing $filer[] = udskaering_i_skjold $filer[] = anmeldelser $filer[] = anmeldelser_model $filer[] = anmeldelser_motortyper $filer[] = anmeldelser_tunmaerker $filer[] = anmeldelser_skriv if(isset($_GET['side'])){ if(in_array($_GET['side'], $filer)) include('/sider/' . $_GET['side'] . '.php'); else{ echo "siden findes ikke"; // send email - kaldte side findes i $_GET['side'] } } else{ include('./sider/forside.php'); } ?> --- Morten
17. januar 2004 - 11:55
#26
smutter en tur - så svare nok ikke lige forløbigt... leg selv med det Morten
17. januar 2004 - 11:55
#27
Jeg ville jo have så hvis jeg laver en ny side feks. forside2.php så skal den selv ligge den ind i $filer[]
17. januar 2004 - 12:10
#28
Hov vi mangler lige at lave så den kode som henter filerne skal hente dem sådan: $filer[] = 'film'; Og ikke som det er nu med: $filer[] = film
17. januar 2004 - 12:39
#29
Kan man ikke bare gøre sådan? Er den så sikker? <?php $side_mappe='./sider/'; $side_type='.php'; $side_standard='forside'; if(isset($_GET['s'])) { if(!$side) { $side=$side_standard; } $side_komplet=$side_mappe.str_replace(array('/','.'),'',$side).$side_type; if(!is_readable($side_komplet)) { echo 'Siden '.$side.' eksistere ikke'; } else { include $side_komplet; } } ?>
17. januar 2004 - 13:53
#30
der skal slf lige '-er uden om, ja... for at lave det på den sikreste måde - så SKAL det laves på den måde... ellers kan man, på den ene eller den anden måde, få adgang til filer man ikke burde have adgang til... du SKAL validere siden mod et array du kender, og ikke et det bliver genereret ! Morten
17. januar 2004 - 15:23
#31
ok hvordan får jeg den til at udskrive dem sådan? $filer[] = 'film';
17. januar 2004 - 15:29
#32
?php echo "<pre>"; if ($handle = opendir($_SERVER['DOCUMENT_ROOT'].'/sider/')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo '$filer[] = ' . "'" . substr($file, 0, -4) . "';\n"; } } closedir($handle); } echo "</pre>"; ?> Morten
17. januar 2004 - 15:47
#33
17. januar 2004 - 15:52
#35
Fejlen: Warning: main(/sider/nyheder.php): failed to open stream: No such file or directory in /web/www.scooter-eksperten.dk/www/test.php on line 37 Warning: main(): Failed opening '/sider/nyheder.php' for inclusion (include_path='.:/usr/local/lib/php') in /web/www.scooter-eksperten.dk/www/test.php on line 37
17. januar 2004 - 16:06
#36
lav det om til <?php // $filer[]... // osv if(isset($_GET['side'])){ if(in_array($_GET['side'], $filer)) include('./sider/' . $_GET['side'] . '.php'); else{ echo "siden findes ikke"; // send email - kaldte side findes i $_GET['side'] } } else{ include('./sider/forside.php'); } ?> du havde forglemt et . ;) Morten
17. januar 2004 - 16:14
#37
Nu virker det :) Er det så sikker lavet som overholdet muligt?
17. januar 2004 - 16:16
#38
Er det ikke sådan det skal være? if(isset($_GET['side'])) { if(in_array($_GET['side'], $filer)) { include('./sider/' . $_GET['side'] . '.php'); } else { echo "siden findes ikke"; // send email - kaldte side findes i $_GET['side'] } } else { include('./sider/forside.php'); } Har tilføjet en } & {
17. januar 2004 - 18:40
#39
begge burde virke... Morten
Slettet bruger
17. januar 2004 - 19:13
#40
mpj86: Morten har bare et eller andet imod {} når de ikke er påkrævet. Hvis du gerne vil have dem, så skader de ikke. Jeg foretrækker at have dem altid - selv når jeg laver en enlinies-if.
17. januar 2004 - 19:21
#41
sandbox -> thi er rygtet om mig kommet så langt ;) hæhæ... forklaring: {} indekranser en blok, så de er påkrævet når der er mere end en linie - hvis der derimod ikke er det så behøves blokken ikke... se dette lille ex: <?php if(false) echo "1"; // ikke udført echo "2"; // udført if(false){ echo "1"; // ikke udført echo "2"; // ikke udført } Morten
Vi tilbyder markedets bedste kurser inden for webudvikling