Avatar billede niklas1 Nybegynder
08. oktober 2009 - 17:34 Der er 10 kommentarer og
1 løsning

Include problemer!

Hej eksperter.

nu er det ved at være langtid siden jeg har rodet php. jeg kan ikke få mine includes til at virke. den viser ikke noget i min content.

min kode er som følgende:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-language" content="da" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>hej.</title>
<link href="stylesheet.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="wrapper">
<div id="top"></div>
<div id="lefttop"></div>
<div id="header"></div>
<div id="righttop"></div>
<div id="menuleft"></div>
<div id="menu" class="center">

<a class="menulink" href="default.php?side=forside">forside</a>&nbsp;&nbsp;|&nbsp;&nbsp;
<a class="menulink" href="default.php?side=hvemervi">hvem er vi?</a>&nbsp;&nbsp;|&nbsp;&nbsp;
<a class="menulink" href="default.php?side=voresprodukter">vores produkter</a>&nbsp;&nbsp;|&nbsp;&nbsp;
<a class="menulink" href="#">vi tilbyder dig</a>&nbsp;&nbsp;|&nbsp;&nbsp;
<a class="menulink" href="#">links</a>&nbsp;&nbsp;|&nbsp;&nbsp;
<a class="menulink" href="#">kontakt os</a></div>
<div id="menuright"></div>
<div id="left"></div>
<div id="content"><div align="center">
<?php
      include(.$_GET['side'].'.php');
?>
 
    </div></div>
<div id="contentline"></div>
<div id="content2"></div>
<div id="right"></div>
<div id="footer" class="footertekst">h</div>



</div>
</body>
</html>



_________________________
mine undersider ser sådan ud:

<h1>Velkommen</h1>
<p>Dette er forsiden, fantastisk og sp&aelig;ndende!</p>



Håber i kan hjælpe.
Avatar billede arne_v Ekspert
08. oktober 2009 - 17:46 #1
stryg et punktum:

<?php
      include($_GET['side'] . '.php');
?>
Avatar billede arne_v Ekspert
08. oktober 2009 - 17:47 #2
Jeg er iovrigt ikke helt tryg ved konstruktionen fra et sikkerheds synspunkt.
Avatar billede niklas1 Nybegynder
08. oktober 2009 - 17:52 #3
Forklar gerne hvad jeg kan ændre, for at lave den mere sikker :)
Avatar billede arne_v Ekspert
08. oktober 2009 - 18:17 #4
Som absolut minimum skal der laves noget input data validering.

Men proev og google paa:
  php include security
Avatar billede jakobdo Ekspert
08. oktober 2009 - 18:19 #5
Du bør evt. opbygge et array af godkendte sider, f.eks.:

$sider = array('side1.php','side2.php',etc.....);

if(in_array($_GET['side'],$sider)){
require($_GET['side'].'.php');
}else{
echo 'Standard indhold, som vises når vi ikke kender siden eller siden er "tom"';
}
Avatar billede niklas1 Nybegynder
08. oktober 2009 - 18:40 #6
Jeg kan stadig ikke få mit include til at virke.
jeg prøvet at rette det.

er her evt. en som gider prøve, hvis jeg sender filerne i en rar fil, med hele sitet i.
Avatar billede zips Juniormester
08. oktober 2009 - 19:23 #7
Undskyld niklas1 at jeg blander mig :-)
Hvis det er kan du godt sende filerne til mig, dog er jeg slet ikke php haj som jakobdo og andre her inde i php

jakobdo > er denne måde også sikker eller skal det være i et array som du viser.

if (!is_file("indhold/".$_GET['side'].".php") || eregi("../",$_GET['side'])) {
    $_GET['side']="404"; header("HTTP/1.0 404 Not Found");
}
Avatar billede niklas1 Nybegynder
08. oktober 2009 - 19:33 #8
Zips : hvis bare du kan få min include til at fungere, må du meget gerne prøve ! :)

bare jeg får mit indhold ind i min content, er jeg tilfreds .
så må sikkerheden komme derefter :)
Avatar billede jakobdo Ekspert
08. oktober 2009 - 21:51 #9
zips:
Jeg tror:
!is_file("indhold/".$_GET['side'].".php") er en bedre løsning.
Men man vil stadig kunne kigge teste på:

$_GET['side'] = './../../hemmeligt';
Og på den måde, så vil den vise indholdet af hemmeligt.php, hvilket jo ikke er meningen.
Så man bør evt. tjekke for . og ..
Måske man burde bruge:

$filename = basename($_GET['side']);
if(!is_file('indhold/' . $filename . '.php'))
echo 'FEJL';

Så sikrer du ihf. filen ikke indeholder directory traversal og kun en fil.
Dog kan man stadig forsøge at finde filer i indhold, som måske ikke skal vises.
Avatar billede zips Juniormester
08. oktober 2009 - 22:09 #10
1000 tak jakobdo, scripet er fundet her http://www.martin-nielsen.com/dynamiske-sider-med-php-include_47.html

Dvs at så længe man kun har sider alle må se er det sikkert nok, jeg prøver at sætte det tillæg ind som du kommer med, som lidt ekstra sikkehed.

Det var faktisk det samme script niklas1 brugte, jeg fik filerne og de virkede fint, eneste ændring jeg lavede var at ændre fil navnet default.php til index.php som ikke burde gøre noget.
Avatar billede niklas1 Nybegynder
22. maj 2011 - 13:49 #11
....
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