Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: index.php?page=jokumuu

Sivun loppuun

juhaz [13.06.2004 09:34:16]

#

Kuinka tuollainen otsikon mukainen juttu oikein tehdään? Sehän tehdään jollain PHP:llä, mutta miten? Sorsalammessa oli joku koodiesimerkki, mutta en saanut sitä toimimaan jostain syystä.

kaviaari [13.06.2004 10:17:27]

#

Tässä on index.php

<a href="index.php?page=1">Sivu 1</a><br>
<a href="index.php?page=2">Sivu 2</a><br>
<a href="index.php?page=3">Sivu 3</a><br>
<a href="index.php?page=4">Sivu 4</a><br>

<?php
  if ($page == 0)
    include("1.txt");
  else
    include($page .".txt");
?>

Ja kaikki sivujen tekstit ovat numeroiduissa tekstitiedostoissa: 1.txt,2.txt,3.txt,4.txt.

Tuossa index.php:ssä on tuo if sitävarten että kun tullaan etusivulle niin page:lla ei ole mitään arvoa joten se laittaa siihen oletusarvoisesti tuon ykkösen.

makeuu [13.06.2004 11:09:17]

#

<?php
    $pages = Array (
                "etusivu" => "etusivu.txt",
                "linkit" => "linkit.txt",
                "palaute" => "palaute.txt"
             );

    // Jos ?page= on tyhjä niin viedään etusivulle

    $page = ($_GET["page"] != "") ? $_GET["page"] : "etusivu";

    // Kokeillaan löytyykö kyseistä tekstitiedostoa kuten palaute.txt
    if (isset($pages[$page]) AND file_exists($pages[$page])) {
        // Sivu löytyi ja se näytetään eli includetetaan.. :D
        include ($pages[$page]);
    } else {
        // Jotain on nyt väärin.. näytetään virheilmoitus
        echo "Error 404 - The page cannot be found.";
    }
?>

Tämä koodi on alunperin muistaakseni odyksen tekemä ja otin siitä enkunkieliset kommentit pois ja suomensin muutamia.. huonosti kylläkin.. :D

Olga [14.06.2004 08:58:21]

#

Array_key_exists-funktio on myös aika kova sana assosiatiivisten taulukoiden avainten olemassaolon tutkimisessa.

Linkku [14.06.2004 09:20:50]

#

Eikös se ole yksinkertaisinta näin

<?php
$sivu = $_GET['sivu'];
switch($sivu) {
  case etusivu:
    include "etusivu.php"; // tai include $sivu;
    break;
  case vieraskirja:
    include "vieraskirja/index.php";
    break;
  default:
    echo '<h1>404 Sivua ei löytynyt</h1>';
}
?>

ajv [14.06.2004 12:20:05]

#

Linkku kirjoitti:

Eikös se ole yksinkertaisinta näin

No jaa, entäpäs jos sivuja paljon esim. yli 100 kpl? Tulee turhaa koodia aika paljon.

renni [14.06.2004 14:25:38]

#

Laitat ne sivut taulukkoon. Taulukon voit luoda atomaattisesti tai käsin, ihan kumpi enempi miellyttää.

Anssi V [14.06.2004 14:31:33]

#

Kyllä minusta tuo "Kaviaarin" systeemi on paras. Eihän sen sivun nimen tieten tarvi välttämättä numero olla, vaan voihan se olla ihan mitä vaan.

Linkku [14.06.2004 14:54:42]

#

ajv kirjoitti:

Linkku kirjoitti:

Eikös se ole yksinkertaisinta näin

No jaa, entäpäs jos sivuja paljon esim. yli 100 kpl? Tulee turhaa koodia aika paljon.

No mä ainakin käytän tota. Voi siihen kehitellä parempiakin systeemejä jos tekee isoja sivustoja.

llr [14.06.2004 21:33:13]

#

Kyllä se ihan yksinkertaisin on:

<?php
$page2 = $_GET['page'];
$page = "./kansio jossa sivut/" . $page2 . ".php";

if (!file_exists($page)) {
   $page = ""./kansio jossa sivut/" . "pääsivu" . ".php"; // Jos ei sivua löydy otetaan pääsivu
}
?>

ajv [14.06.2004 22:45:53]

#

Suosin myös tuota llr:n tyyliä, tosin siinä on yksi tietoturva-aukko: osoiteriville voi kirjoittaa index.php?sivu=../admin/adminsalasanat. Tässä omani:

<?
if(!$sivu = $_GET['sivu'])
   $sivu = "etusivu";

//pysytään siellä hakemistossa tai kuollaan:
if(ereg("^\\.",$sivu))
   die("<h3>h4x0ring my homepages is not that easy!</h3>");

if(file_exists("kansio jossa sivut/$sivu.php"))
   include("kansio jossa sivut/sivu.php");
else
   include("kansio jossa sivut/error_404.php");
?>

TETRIS [15.06.2004 17:02:27]

#

Itse käytän tällaista.

<?php
// Tarkistetaan millä sivulla ollaan
$sivu = $_GET['sivu'])

// Includetetaan etusivu
if($sivu == "etusivu"){
  include('sivut/etusivu.php');
}
//Includetetaan etusivu
elseif($sivu == ""){
  include('sivut/etusivu.php');
}
// Includetetaan uutiset
elseif($sivu == "uutiset"){
  include('sivut/uutiset.php');
}
// Tulostetaan virhe viesti
else{
  echo "<b>Eipäs onnistu :P</b>";
}
?>

tsuriga [15.06.2004 18:09:50]

#

Eikö kannattaisi mieluummin olla vaikka taulukossa nuo mahdolliset vaihtoehdot ja jos $sivu löytyy taulukosta niin includetaan se. Vaikka key=$sivu:narvo ja value=sivunosoite. Kuten Olga tuolla mainitsikin.
TETRIS: Tuon etusivusi includettamisen voi yhdistellä:

// Includetetaan uutiset
if ($sivu == "etusivu" || $sivu=="etusivu"){
  include('sivut/etusivu.php');

EDIT: Hups väärä sivu eka :).

Olga [15.06.2004 20:11:23]

#

tsuriga kirjoitti:

if ($sivu == "etusivu" || $sivu=="etusivu"){
  include('sivut/etusivu.php');

Vieläkin hieman viilattavaa? :)

tsuriga [15.06.2004 23:14:50]

#

Jääköön harjoitustehtäväksi :).
EDIT: Kopioin tuossa epähuomiossa väärän rivin kuten kommentista saattaa huomata.

Juice [05.07.2004 23:27:16]

#

Ei mitään hajua, että mikä tässä meni väärin. Koodi vaikuttaa minusta täysin oikealta. Anteeksi, että tässä on koko sivun koodi. Voisitteko auttaa?

***index.php***

<html>
<head>
<title>Arkisto</title>
<link rel="stylesheet" href="../style.css" type="text/css">
</head>
<body>
<table height="100%" width="100%">
<td height="100%" width="20%" valign="top">
<a name="menu" id="menu"></a>
<?php include("../menu.php"); ?>
</td><td height="100%" width="80%" valign="top">
<a href="index.php?page=farcry">Far Cry v1.0 ongelmia Radeon 8500-9200</a><br>
<a href="index.php?page=adpcm">Intel/DVI IMA ADPCM-koodekkiongelma</a><br>
<?php
$page = $_GET['page'];
  if ($page == 0)
    include("selostus.php");
  else
    include($page.".php");
?>
</td>
</table>
</body>
</html>

Olen varma, että tässä on joku n00b-virhe(Aloin opetella PHP:tä toukokuussa). Dokumentit adpcm.php ja farcry.php ovat olemassa samassa hakemistossa.

Draiz [05.07.2004 23:53:10]

#

***index.php***

<html>
<head>
<title>Arkisto</title>
<link rel="stylesheet" href="../style.css" type="text/css">
</head>
<body>
<table height="100%" width="100%">
<td height="100%" width="20%" valign="top">
<a name="menu" id="menu"></a>
<?php include("../menu.php"); ?>
</td><td height="100%" width="80%" valign="top">
<a href="index.php?page=farcry">Far Cry v1.0 ongelmia Radeon 8500-9200</a><br>
<a href="index.php?page=adpcm">Intel/DVI IMA ADPCM-koodekkiongelma</a><br>
<?php
$page = $_GET['page'];
  if (!$page) {
    include("version.php");
}
  else {
    include($page.".php");
}
?>
</td>
</table>
</body>
</html>

Kokeileppas noin...

Juice [06.07.2004 18:47:34]

#

Juu... keksin tuon jo itsekin tässä vähän aikaa sitten.. no kiitos kumminkin.

tejeez [06.07.2004 18:53:27]

#

Kaviaari kirjoitti:

Tässä on index.php

<a href="index.php?page=1">Sivu 1</a><br>
<a href="index.php?page=2">Sivu 2</a><br>
<a href="index.php?page=3">Sivu 3</a><br>
<a href="index.php?page=4">Sivu 4</a><br>

<?php
  if ($page == 0)
    include("1.txt");
  else
    include($page .".txt");
?>

Tuohon oikeastaan pitäisi laittaa alkuun $page=$_GET['page'];, kaikki servut kun eivät laita niitä automaattisesti. :)

TETRIS [06.07.2004 20:31:33]

#

Ei pidä, mutta se on suositeltavaa. Servut eivät myöskkään laita sitä itse vaan jos register_globals on off asennossa niin pelkkä $page ei edes toimi.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta