Avatar billede kreldk Nybegynder
03. december 2008 - 16:46 Der er 9 kommentarer

simpel menu includes

Hej jeg vil bare spørge til hvordan man kan få ens menu til at lave links så de bliver mere "fancy" oppe i adresse linjen.

min menu ser sådan her ud nu:

<a href="news.php">news</a>

osv osv. Men jeg ville gerne have det sådan at jeg bruger includes i min index fil, så at hvis linket nu hed index.php?side=news fx, så ville den inkludere fx news.php

nogen der kan hjælpe?? :)
Avatar billede Slettet bruger
03. december 2008 - 17:04 #1
Du kan eventuelt:

<?php
$side = $_GET['side'].".php";
if(file_exists($side))
{
include($side);
}
?>

Så tilføjer den .php til den variable, som du henter fra adresselinjen vha. $_GET.
Avatar billede olebole Juniormester
03. december 2008 - 17:52 #2
<ole>

Pas ekstremt meget på, når du laver includes udfra bruger-input! Bruger-inputs må du _aldrig_ bruge til noget, før det er gennemtjekket for, at det _kun_ indeholder, hvad du forventer.

Med kaloer's eksempel kan en bruger således inkludere et hvilket somhelst php-dokument på hele serveren ... både indenfor som udenfor webspace. Det er i de fleste situationer rent selvmord!  ;o)

/mvh
</bole>
Avatar billede Slettet bruger
03. december 2008 - 17:57 #3
Det kan der være noget om :)

Men så kan man eventuelt vælge, at den kun skal checke i en bestemt mappe. Eller kan det "brydes"? :)
Avatar billede kreldk Nybegynder
03. december 2008 - 18:27 #4
Kaloer hvordan får jeg scriptet til at virke hvis jeg så har min index.php fil og en news.php jeg gerne vil include, hvis der er linket til index.php?side=news ??

Hilsen kreldk
Avatar billede Slettet bruger
03. december 2008 - 18:44 #5
Den letteste måde (hvis vi ikke snakker sikkerhed) er hvis du indsætter følgende i index.php, der hvor du vil vise den includede side:


<?php
$side = $_GET['side'].".php";
if(file_exists($side))
{
include($side);
}
?>

Hvis du så går ind på index.php?side=news, includer den news.php, hvis den eksistere.
Avatar billede kreldk Nybegynder
03. december 2008 - 19:42 #6
tak for det, men er det ikke muligt at linke til en side i en anden mappe så?
Avatar billede olebole Juniormester
03. december 2008 - 19:59 #7
Jojo ... det er jo det, der hele pointen i det, jeg skrev  ;o)

Brugeren retter bare lidt i stien, så kan han få vist ethvert PHP-dokument på hele serveren. Der er jo intet i vejen for at skrive:
    http://www.domain.dk/some_page.php?side=../hemmelig_mappe/hemmeligt_dokument

Så har du sat vand over til alle mulige hackerangreb  =8-O

Søg lidt i PHP-kategorien. Der ligger tonsvis af eksempler på, hvordan man med PHP inkluderer sider, uden på mest åbenlyse måde at indbyde til hackerangreb.

kaloer >> "hvis vi ikke snakker sikkerhed" ... jamen, hvem pokker taler ikke sikkerhed i forbindelse med webkodning? Fremgangsmåden er jo komplet ubrugelig til noget somhelst realistisk!
Avatar billede Slettet bruger
03. december 2008 - 20:14 #8
Olebole -> Ja, det var også kun for at fortælle hvordan man gjorde på den måde, da jeg ikke vidste hvordan man gjorde det på den mest sikre måde. Jeg er da helt enig i, at det er vigtigt med sikkerhed, men jeg viste blot hvordan man brugte mit eksempel.
Avatar billede Slettet bruger
04. december 2008 - 15:28 #9
Et sikkert eksempel kunne f.eks. være:

<?php
$pages = array("news", "login", "gallery");
if (in_array($_GET['side'], $pages)) {
den side, der er skrevet i url'en findes i vores array, og er derfor sikker at indsætte.
include($_GET['side'].".php");
}
else {
//Siden er ukendt, og derfor indlæses nyhedssiden
include("news.php");
}
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester