Gå til innhold

Bruk av php include til å endre url adresse?


Anbefalte innlegg

Hei, for å få en link til å være index.php?id=5, så har jeg brukt denne koden:

<?php
$id = $_GET['id'];
if(!isset($id) || strpos($id, "../")!==FALSE) {
$id = "1";
}
$incfil = "./id" . $id . ".php";
if(file_exists($incfil)) {
include($incfil);
} else {
include "../404.php";
}
?>

Slik siden min er i dag, har jeg en meny som er id=1,2,3,4 og 5.

Feks. på siden index.php?id=4, er det en link til en annen side.

 

Kan noen hjelpe meg slik at når man klikker på den linken, så blir urlen noe ala dette: index.php?id=4&page=1?

 

Er ganske fersk innen php, har nå holdt på med dette ett par timer uten å komme noen vei.

Takker for all hjelp. :)

Lenke til kommentar
Videoannonse
Annonse

Kanskje litt dårlig forklart, men jeg ser etter en måte å "legge til" en ny side under id4. slik at index.php?id=4 og index.php?id=4&page=2 , er to forskjellige sider...

 

Nå har jeg forresten funnet denne koden:

<?php
$id = isset($_REQUEST['id']) ? trim($_REQUEST['id']) : "";
$page = isset($_GET['page']) ? trim($_GET['page']) : "";
$self = $_SERVER['PHP_SELF'];

switch ($id) {
case "":
?>
Dette er side 1
	   <a href="<?="$self?id=4&page=2"?>">Side2</a>

<?php
break;
}


switch ($page) {
case "":
?>

<?php
break;
case "2":
?>
Dette er side 2
<?php

break;
}
?>

Nå har jeg et annet problem. Teksten "Dette er side 1" vises ikke når jeg går inn på index.php?id=4 , hvis jeg skriver id4.php (som er filen som blir inkludert ved hjelp av koden i forrige post) - så virker alt helt fint.

Hvis jeg skriver slik case "4": (den som står øverst, linje 7) , vil teksten "Dette er side 1" vises på index.php?id=4, og på siden index.php?id=4&=page2. Det ønsker jeg ikke.

 

Noen som har noen gode forslag?

Lenke til kommentar

*poff*

Utestet, og en urimelig vanskelig måte og gjøre det på, men det er kun det jeg gidder nå :p - skal se litt på det i morra :)

 

EDIT: Leif.

EDIT2: sorry, koden fungerer ikke :-/ - er jævli trøtt, å har sett meg blind på alt som heter php for idag ;) - skal sjekke det når jeg kommer på jobb i morra :)

EDIT3: Fjernet koden, fordi at for det første så fungerer den ikke og for det andre så er den like crappy som "mafia-koden" vi har rundt omkring, mest på grunn av at jeg var trøtt som h** :)

Endret av Famen
Lenke til kommentar

Herregud, for noen dårlige og ekstremt lite fleksible løsninger dere foreslår. Å hardkode sidevisning og innhold i én og samme fil er det dummeste jeg har sett hittil her. (Vel - jeg har egentlig sett det mange ganger tidligere her.. :( )

 

<?php

if ( array_key_exists ( 'page', $_GET ) &&
	 array_key_exists ( 'subpage', $_GET ) &&
	 ctype_digit ( $_GET['page'] ) &&
	 ctype_digit ( $_GET['subpage'] ) ) {

	// Include inc/x.y.php
	require_once ( 'inc/' . $_GET['page'] . '.' . $_GET['subpage'] . '.php' );

} elseif ( array_key_exists ( 'page', $_GET ) &&
		   ctype_digit ( $_GET['page'] ) ) {

	// Include inc/x.php
	require_once ( 'inc/' . $_GET['page'] . '.php' );

} else {

	// Include a default page
	require_once ( 'inc/default.php' );

}

?>

(Hevet sammen, fullstendig utestet)

Endret av Jonas
Lenke til kommentar

Tusen takk for hjelpen. :) Jeg har nå løst problemet mitt. Løsningen var egentlig ganske enkel. Jeg endret litt på koden i post 3, dette var det jeg kom frem til:

<?php
$page = isset($_GET['page']) ? trim($_GET['page']) : "";

switch ($page) {
case "":
?>
Dette er side 1
	   <a href="<?="?id=4&page=2"?>">Side2</a>

<?php
break;
}


switch ($page) {
case "":
?>

<?php
break;
case "2":
?>
<?php include"side-2.php"; ?>
<?php

break;
}
?>

Her har jeg også brukt include for å få frem side 2, takk for tipset Jonas :)

Lenke til kommentar
Hvordan kan du si at de andre poster dårlige/fleksible løsninger, når du ikke har testet din egen kode engang?

Som AlecTBM påpeker, så kan jeg si det fordi jeg har holdt på med dette lenge. Min løsning er god og fleksibel, uavhengig om den inneholder et par syntaksfeil eller andre bagateller. Slike kan eventuelt trådstarter rette på selv.

Lenke til kommentar

Det er min mening at index.php?id=x best blir brukt når du henter dynamisk innhold fra f.eks en database.

 

Det du gjør er, etter min mening bakvendt.

 

Når det er sagt så er det mulig å legge flere case på samme kodeblokken slik:

 

switch($page){
 case "":
 case 1:
...
 break;

 case 2:
...
 break;
}

 

Måten dette er (etter min mening) _ment_ å brukes er slik:

//Koble til databasen

if(!$page) $page=0;
if(!$id) $id=0;
$query = "SELECT data FROM table WHERE id=$id AND page=$page LIMIT 1";
$result = mysql_query($query);
if(!result) include('404.html');
else
{
 /*vis innhold fra databasen her*/
}

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