Gå til innhold

include og id


Anbefalte innlegg

Skrevet

Lurte på om det var noen som hadde giddet å lage et fullt lite eksempel med php, der jeg kan bruke include og id...noe lignende dette til meg og poste det her:

 

<?php printf("<a href=\"%s?id=\">", $_SERVER['PHP_SELF']); ?>hjem</a>

<?php printf("<a href=\"%s?id=2\">", $_SERVER['PHP_SELF']); ?>test<br>

 

<?php

$id=$_GET['id'];

 

if($id)

{

switch ($id)

{

case $id==2:

include("tull.php");

break;

}

}

ELSE

{

include("startside.php");

}

?>

har litt problemer med det,,

Videoannonse
Annonse
Skrevet

Er det ikke bedre og bare ha egne sider for startside.php, tull.php etc istedet for å bruke en fil til å hente slike ting i?

 

evnt trenger du jo ikke å bruke mer en

 <?PHP include ("".$_SERVER['PHP_SELF'].""); ?> 

for å hente ut en fil da ;)

Skrevet

stemmer det,

 

du bør og legge inn en funksjon som sjekker om at filen du vil legge ved faktisk er "godkjent" så du slipper diverse pornosider mm ;)

Skrevet

Syntaksen er feil.

Du skal ikke bruke $id==2, og du trenger ikke å ha if($id). Bruk heller default, slik:

switch ($id)
{
case 2:
 include("tull.php");
 break;
default:
 include("startside.php");
}

Skrevet
stemmer det,

 

du bør og legge inn en funksjon som sjekker om at filen du vil legge ved faktisk er "godkjent" så du slipper diverse pornosider mm ;)

...for ikke å nevne at det å inkludere seg selv vil stå i evigheter og kjøre (php har riktignok en max recursive depth sjekk og en max time sjekk) ;)

Skrevet
stemmer det,

 

du bør og legge inn en funksjon som sjekker om at filen du vil legge ved faktisk er "godkjent" så du slipper diverse pornosider mm ;)

...for ikke å nevne at det å inkludere seg selv vil stå i evigheter og kjøre (php har riktignok en max recursive depth sjekk og en max time sjekk) ;)

index.php inneholder en include og da vil den kun bli kjørt en gang, ikke flere sålenge det ikke inkluderes index.php

Skrevet

mulig jeg misforstår her, men hvis index.php inneholder kommandoen include $_SERVER['PHP_SELF']; så vil den inkludere seg selv og pånytt støte på include, (rekursjon) om og om igjen, inntil det gir en memory allocation feil eller.

 

Riktignok kun på kommandolinja.

 

På webserveren vil ikke PHP_SELF vise til en gyldig phpfil for inkludering.

følgende eksempel vil demonstrere samme effekt:

 

<?php
$a++;
echo "$a. kjøring<br>\n";
include($_SERVER['SCRIPT_FILENAME']);
?>

 

På min hjemmeside så det slik ut:

[klippe-klippe]

6969. kjøring
6970. kjøring
6971. kjøring
6972. kjøring
6973. kjøring
6974. kjøring

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 8 bytes) in /usr/webdir/lindahl/****.php on line 4

Skrevet

Notice: Undefined variable: id in c:\inetpub\wwwroot\testing\main.php on line 19

 

hvor skal jeg definere den? viss jeg i det hele tatt skal det..

Skrevet

ai, har en lei tendens til å spore av.

 

$id vil settes til det du har i url'en, $id = $_GET['id'];

 

hvis du ikke har noe i url, så blir den ikke satt.

 

merk at dette er ingen feil, bare en advarsel.

du kan pakke inn suppa i if(isset($_GET['id'])){ //suppa }

Skrevet (endret)

Vel etter å ha lest Torbjørns avsporinger husker jeg ikke helt hva du var ute etter :p

Men synes å demre noe om at du ville ha et ?id=hvilkenside osv.

Da kan du jo la linkene være:

index.php?id=main

index.php?id=downloads

index.php?id=aboutus osv osv

 

I tabellcellen hvor innholdet skal være har du:

if($_GET["id"] == "main")
{
   include("main.php");
}
else if($_GET["id"] == "downloads")
{
   include("downloads.php");
}
else if($_GET["id"] == "aboutus")
{
   include("aboutus.php");
}
else
{
include("main.php");
}

 

Det er sikkert et dårlig script med tanke på funksjoner, men det fungerer ihvertfall veldig bra!

 

 

 

#Edit: latterlig norsk setning

Endret av Andeplane
Skrevet (endret)

det er et meget bra skript :)

 

edit: det er en god tommelfingerregel å ha minst mulig dynamikk i utvelgelse av inkluderte filer basert på URL-parametere

Endret av Torbjørn
Skrevet

syns det er greiest med switch, som er trygt, og samtidig veldig oversiktlig:

switch($_GET['side']){
case 'downloads': include("downloads.php");
break;

case 'blabla': include ("blabla.php");
break;

default include("default.php");
break;
}

Skrevet (endret)

Jeg bruker dette.

 <?

if (!isset ($_GET['page'])) {

$_GET['page'] = 'main.php';

}

if (file_exists($_GET['page'].".php")) {

include($_GET['page'].".php");

}

else {

echo "<img src=\"images/404.gif\">";

}

?>

 

Veldig enkelt og greit :)

Endret av SirIce

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...