Gå til innhold

side.php?=noe


Anbefalte innlegg

Hei.

 

Er helt ny på PHP, og driver og mekker med en side, og når jeg først har fått inn PHP så tenkte jeg at jeg kunne utnytte de mulighetene jeg har.

 

Så til spørsmålet:

Hvordan fungerer egentlig disse "side.php?=noe" linkene? Jeg ser det på noen sider, f.eks. her.

Har ikke skjønt hvordan de fungerer og hadde satt stor pris på om noen kunne forklare meg...

 

Takk på forhånd.

Lenke til kommentar
Videoannonse
Annonse

de bruker noe som heter include script sånn som på siden min her

 

dette limer du inn der siden skal "inkluderes" skjønner?

 

det ser slik ut

 

<?php

if($_GET["side"] == "index")

{

include "hovedside/index.php";

}

 

else if($_GET["side"] == "news")

{

include "news/index.php";

}

 

else if($_GET["side"] == "kontakt")

{

include "kontakt/index.php";

}

 

 

 

else

{

include "hovedside/index.php";

}

?>

Endret av gatebiler.tk
Lenke til kommentar

Får vel gjøre et forsøk (det er litt videreføring av innlegget til gatebiler.tk):

Hvis du vil ha index.php?side=et_eller_annet

<?php
if($_GET["side"] == "index")
{
include "hovedside/index.php";
}

else if($_GET["side"] == "news")
{
include "news/index.php";
}

else if($_GET["side"] == "kontakt")
{
include "kontakt/index.php";
}

else
{
include "hovedside/index.php";
}
?>

Altså, hvis linken er index.php?side=news inkluderes news/index.php der hvor kodesnutten er lagt inn.

Er linken index.php?side=kontakt er det kontakt/index.php som inkluderes.

Her kan du i det hele tatt fritt endre på alt som står mellom " og "

 

Bedre nå?

 

Edit: det kom vist noen innlegg før meg gitt...

Edit#2: rette på noen skrivefeil, begynner vist å bli litt sent nå :yes:

Endret av ernie85
Lenke til kommentar

Kopiert rett fra www.raweb.net's versjon:

Kopier dette scriptet inn der du skal ha menyen:

 

<!--meny-->

<?php

 

$MenuPath = "./inc_filer/meny.inc";

 

include("$MenuPath");

 

?>

<!--/meny-->

 

 

  Du trenger bare å forandre denne linjen:

 

  $MenuPath = "./inc_filer/meny.inc";

 

  Du må bare forandre teksten mellom gåsetegnene.

 

  Her skal du angi banen/stien til INC-filen som skal fungere som meny relativt

  til index.php.

 

  Menyen lagres som en separat inc-fil slik at den korresponderer med verdien for

  $MenuPath.

 

  Linkene i meny.inc må angis slik:

 

  <a href="index.php?side=hoved">Hovedsiden</a>

  <a href="index.php?side=neste">Neste Side</a>

 

  Teksten etter likhetstegnet må tilsvare filnavnet på en inc-fil i inc_mappe

  (eller hva du nå enn kaller den). index.php vil da kalles opp på nytt og sette

  inn denne filen der scriptet nedenfor ligger.

 

  ********************************************************************************

 

  Kopier dette scriptet inn der du skal ha teksten som inkluderes:

 

<!--innhold-->

<?php

 

$IncludeDir    = "./inc_filer";

$DefaultPath  = "./inc_filer/hoved.inc";

$FileExtension = ".inc";

 

if (isset($side)) {

$side        = stripslashes(strip_tags($side));

$Forbidden1  = ereg("\.\./", $side);

$Forbidden2  = ereg("/", $side);

$IncludePath = $IncludeDir . "/" . $side . $FileExtension;

 

  if ($Forbidden1 OR $Forbidden2) {

  echo "<h1>Advarsel</h1>\n";

  echo "<p>Forespørsler på tvers av definerte \n";

  echo "områder er ikke tillatt.</p>\n";

  }

  else {

    if (@fopen("$IncludePath", "r")) {

    include ("$IncludePath");

    }

    elseif (!(@fopen("$IncludePath", "r"))) {

    echo "<h1>Server Error 404</h1>\n";

    echo "<p>Finner ikke den forespurte siden.</p>\n";

    }

  }

}

else {

include("$DefaultPath");

}

 

?>

<!--/innhold-->

 

 

  De tre verdiene du trenger å forandre på, er disse:

 

  $IncludeDir    = "./inc_filer";

  $DefaultPath  = "./inc_filer/hoved.inc";

  $FileExtension = ".inc";

 

  Du må bare forandre teksten mellom gåsetegnene.

 

  I $IncludeDir angir du mappen hvor INC-filene befinner seg relativt til

  index.php.

 

  I $DefaultPath angir du banen/stien til den INC-filen som skal fungere som

  hovedside.

 

  I $FileExtension angir du hvilken filendelse du vil ha på filene som skal

  inkluderes. Husk også at du eventuelt må forandre filnavnet på hovedsiden i

  $DefaultPath samt filnavnet på menyen i $MenuPath tilsvarende.

 

  NB! HVIS INCLUDE-FILENE DINE SKAL INNEHOLDE PHP-SCRIPTS SOM DU IKKE ØNSKER AT

  ANDRE SKAL FÅ INNSYN I, SÅ BØR DU BRUKE FILENDELSEN .php. GRUNNEN TIL DETTE ER

  AT .inc-FILER OG .txt-FILER BEHANDLES SOM VANLIGE TEKSTDOKUMENTER SOM KAN ÅPNES

  I EN NETTLESER. MED .php-ENDELSE VIL SCRIPTET I INCLUDE-FILEN KJØRES OG GI EN

  OUTPUT.

 

  $Forbidden1 og $Forbidden2 vil forhidre at de besøkende inkluderer filer fra

  andre områder eller foldere enn den du har angitt i $IncludeDir.

Lenke til kommentar

Synes disse includene var litt "backvendte"... Prøv heller dette:

 

<?php
if(IsSet($_GET['section']) && file_exists($_GET['section']."_include.php"))
{
include($_GET['section']."_include.php");
} else {
include("main_include.php");
}
?>

 

Denne koden legger du der du vil siden skal vises. Og kaller hver side for:

 

dinside_include.php

 

bare skift på "dinside"....

 

Linkene lager du sånn som dette:

 

 <a href="index.php?section=dinside">Link</a>

 

Husk å ha en side som heter main_include.php da dette vil være "default" siden.....

 

Spørr hvis det var noe du lurte på :mrgreen:

 

DanielP

Endret av DanielP
Lenke til kommentar

okei, henger nesten med nå, men:

 

> må alle sidene ligge i en mappe som heter f.eks. "section" eller "sider" siden det er med i linken?

 

> og jeg har foreløpig ikke klart å installere apache på maskinen min så jeg har ikke mulighet til å frohåndsvise php script. og i dreamwaver får jeg bare opp et php ikon når jeg setter in en php kode. hvordan kan jeg da sette inn den teksten jeg vil ha i de forskjellige tabellene?? :shrug:

Lenke til kommentar

>Nei, viss du ser på koden, så står det GET section.... vet helt ærlig ikke hvorfor, men det bare er sånn. Hehe en som er bedre på PHP får forklare :p Så de trenger ikke å være i egen mappe

 

> Jeg greier heller ikke å forhåndsvise. men det du jør er å legge den kodesnutten der du vil at alt skal vise. Så skriver du d som skal vises i egne filer. altså dinside_include.php. Viss jeg ikke svarte på spørsmålet ditt, så får jeg beklage.

 

DanielP

Lenke til kommentar
>Nei, viss du ser på koden, så står det GET section.... vet helt ærlig ikke hvorfor, men det bare er sånn. Hehe en som er bedre på PHP får forklare :p Så de trenger ikke å være i egen mappe

 

> Jeg greier heller ikke å forhåndsvise. men det du jør er å legge den kodesnutten der du vil at alt skal vise. Så skriver du d som skal vises i egne filer. altså dinside_include.php. Viss jeg ikke svarte på spørsmålet ditt, så får jeg beklage.

 

DanielP

joda, fikk delvis svar,

men lurer på hvordan jeg kan velge hvilken tabeller teksten fra f.eks. nyheter skal inn i.

Lenke til kommentar

skrev egentlig dette i en annen post, men ålreit:

 

index.php?page=/aboutme/photos/photo1.html <-- sånn skriver du da linken til fil i "subdir"

 

index.php?about <-- den skal fungere også, men bare på enkelt inkludering, altså du kan ikke bruke flere sånne i samme script...

 

bruker en fil for selve scriptet og så inkluderer du det i f.eks index fila di:

 

dynamic.php

<?php

error_reporting(E_ALL ^ E_NOTICE);

$basepath = '/apache2/htdocs/dynamic2/';

function fixpath($file) {
 $file = preg_replace('/\.{2,}/', '', $file);
 return $file;
}

function dynamic($inc_dir='', $inc_ext='', $var_name='', $default_page, $error_msg='') {
 global $basepath;
 if (!empty($_POST[$var_name])) {
     $var = fixpath($_POST[$var_name]);
 } elseif (!empty($_GET[$var_name])) {
     $var = fixpath($_GET[$var_name]);
//}elseif (!empty($_SERVER['QUERY_STRING'])) {
//  $var = fixpath($_SERVER['QUERY_STRING']);
 } else {
     $var = $default_page;
 }

 $file = $inc_dir.$var.$inc_ext;
 // echo "<h2>$file</h2>";

 if (file_exists($file)) {
     if (!include_once($file)) {
         echo $error_msg;
     }
 } else {
     echo $error_msg;
 }
}

?>

 

nå kommer all koden i funksjoner så man kan inkludere flere ganger

 

på denne måten kalles funksjon:

 

dynamic([includes_dir], [includes_ext], [var_name], [default_page], [error_msg]);

 

<?php include_once('dynamic.php'); ?>
<html>
<head>
<title>Test Page</title>
</head>

<body>

<div id="news">
<?php dynamic('news/', '.html', 'id', 'index', 'File does not exist!'); ?>
</div>

<div id="content">
<?php dynamic('files/', '.html', 'page', 'welcome', 'File does not exist!'); ?>
</div>

</body>
</html>

 

spør hvis du lurer på noe...

Lenke til kommentar

greit, men la oss si at jeg har en index.php side( som er malen som skal inkluderes). så vil jeg legge innhold inn i denne malen slik at jeg kan får opp den ferdige siden, men så kommer problemet mitt; jeg vil legge innholdet i en tabell som allerede er i index.php filen. hvordan gjør jeg dette?

Lenke til kommentar

midt i tabellkoden, må du kjøre include.

 

include er egentlig barnslig enkelt. den setter inn php-kode der du sier at den skal gjøre det.

 

så er det bare å tenke seg om hvordan man skal angi hvilken fil man skal sette inn, og hvor i dokumentet man vil sette det inn.

 

hvis man har et ferdig rammeverk som man vil fylle med innhold f.eks (som alle gjør), så er include en fin ting.

Lenke til kommentar

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...