Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  10 991
Hei og hå!

Har for øyeblikket denne koden på siden min:

Kode

<?php 
$pages['spill'] = 'flash/index.php';
$pages['tf2'] = 'tf2/main.php';
$pages['team'] = 'team/index.php'; 
$pages['contact'] = 'contact/index.php';
$pages[''] = 'forside.php'; 

$file = $pages[$_GET['nav']];
if ($file != '') include $file; 
?>
og den virker bra. Det jeg vil er å vite hvordan man kan bygge videre?
Nå blir jo URL'en "?nav=spill", men vil også kunne gå videre, som "?nav=spill&spill=1".

Vil gjøre det enklest som mulig hvis noen kan dette=)

På forhånd takk

<3 NaBzOr
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Da sjekker du $_GET['spill'] for å få ID?
Gjør som Robhol sa.

Forøvrig synes jeg arrayet ditt var tåpelig satt opp, slik ville jeg gjort det:

Kode

$pages = array(
'' => 'forside.php',
'p1' => 'side1.php',
'p2' => 'side2.php');
// Osv.
Sist endret av lsrr; 21. november 2009 kl. 15:11.
Jeg ville heller satt dette opp ved å bruke switch

Eks.:

Kode

<?php

switch($_GET['nav']) {

	default:
	
		include('forside.php');

		break;

	case 'spill':

	switch($_GET['spill']) {

		default: 

			include('spill.php');

			break;

		case '1':

			include('spill-1.php');

			break;

		case '2':

			include('spill-2.php');

			break;

	}

	break;

	case 'tf2':

		include('tf2.php');

		break;

}

?>
Trådstarter
45 0
Sitat av lsrr Vis innlegg
Gjør som Robhol sa.

Forøvrig synes jeg arrayet ditt var tåpelig satt opp, slik ville jeg gjort det:

Kode

$pages = array(
'' => 'forside.php',
'p1' => 'side1.php',
'p2' => 'side2.php');
// Osv.
Vis hele sitatet...
Gjør om til det oppsettet her tror jeg =)

SÅ det jeg gjør er å lage det samme i fila som det blir hendvist til som er i forsiden?

Altså jeg har det jeg skrev tidligere i index.php, så har jeg det samme i "flash/index.php", bare med en annen $_GET verdi?

Kode

$file = $pages[$_GET['spill]];
f.eks?

<3 NaBzOr

Løst Mana mana
z0p
uʍop ǝpısdn
z0p's Avatar
Sitat av lsrr Vis innlegg
Gjør som Robhol sa.

Forøvrig synes jeg arrayet ditt var tåpelig satt opp, slik ville jeg gjort det:

Kode

$pages = array(
'' => 'forside.php',
'p1' => 'side1.php',
'p2' => 'side2.php');
// Osv.
Vis hele sitatet...
Da kan man vel like gjerne generere strengen selv?

Kode

require_once('side' . $_GET['file'] . 'php');
Om det ikke er en mulighet vil jeg heller anbefale å definere konstanter. Ikke at det har noe å si akkurat her, men tabeller i php er virkelig minneslukere.

Kode

define("NAVN", "verdi");
Sist endret av z0p; 21. november 2009 kl. 22:41.
Sitat av z0p Vis innlegg
Da kan man vel like gjerne generere strengen selv?

Kode

require_once('side' . $_GET['file'] . 'php');
Om det ikke er en mulighet vil jeg heller anbefale å definere konstanter. Ikke at det har noe å si akkurat her, men tabeller i php er virkelig minneslukere.

Kode

define("NAVN", "verdi");
Vis hele sitatet...
Jeg antar at grunnen til at han bruker array er med tanke på sikkerhet, tenk deg alt man kan gjøre om

Jeg ville gjort det annerledes ved at jeg legger filene som skal inkluderes i èn mappe og brue ereg() på strenger for å sjekke at filene som blir inkludert kommer fra den mappen .

Her er et scriptet jeg brukte før jeg laget mitt eget.
Sist endret av lsrr; 22. november 2009 kl. 01:08.
z0p
uʍop ǝpısdn
z0p's Avatar
Sitat av lsrr Vis innlegg
Jeg antar at grunnen til at han bruker array er med tanke på sikkerhet, tenk deg alt man kan gjøre om
[/url]
Vis hele sitatet...
Man må selvføgelig sjekke input.
For dette eksempelet ville nok regular expression være unødvendig, en enkel test for numerisk innhold skulle være nok (i tilfelle man skulle ha en katalog kalt 'side' i cwd)

Kode

if(!isnumeric($_GET['file']))
    die('no numeric input');
require_once('side' . $_GET['file'] . 'php');
Som sagt mener jeg uansett at man bør bruke konstanter her. Det gir i tilegg også selvdokumenterende og langt penere kode.
Sist endret av z0p; 22. november 2009 kl. 04:29.
▼ ... noen uker senere ... ▼
Gi KP hvis du syns dette er et bra forslag da

For å sikre det litt bør du ha et array med gyldige sider som du sjekker opp mot.

Kode

$allowed_sites = array("forside","omoss","priser");
$requested_site = $_GET['site'];
if(in_array($requested_site, $allowed_sites))
{
include_once("sites/".$requested_site.".php");
}else{
include_once("sites/forside.php");
}
Slik gjør jeg det hvis jeg ikke lagrer sidene i en database.
Lite kontroversiell
ticks's Avatar
Støtter danielsk sin løsning med switch.
synes det er mye kluss for å legge til sider der, 3 linjer vs et ekstra array-element.. Men smak og behag