Gå til innhold

side.php?=noe


Anbefalte innlegg

Skrevet

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.

Videoannonse
Annonse
Skrevet (endret)

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
Skrevet

Skjønte ikke det helt nei...

 

Jeg har hørt om et script som gjør at du ikke trenger å skrive om siden din når du skifter design i PHP. Er dette det?

Skrevet

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

{

include "hovedside/index.php";

}

 

 

dette betyr at når du skriver index.php?side=index så inkluderes hovedside/index.php der hvor scriptet ditt står slik at designet rundt blir som det er

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

{

include "hovedside/index.php";

}

 

 

dette betyr at når du skriver index.php?side=index så inkluderes hovedside/index.php der hvor scriptet ditt står slik at designet rundt blir som det er

aaah! think I got it. Thanks.

Skrevet (endret)

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
Skrevet

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.

Skrevet (endret)

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
Skrevet

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:

Skrevet

>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

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

Skrevet

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

Skrevet

Et lite ekstra spm her

 

$_GET["side"]

 

Er dette funksjonen for å hente alt som står etter f.eks: index.php?side= ?

 

Så hvis det står index.php?side=riktig så henter den ut riktig?

Skrevet

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?

Skrevet

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.

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