Autor Zpráva
slovakCZ
Profil
Zdravim Vas,

resim maly problem, a to ten, jak udelat presmerovani na chybovou stranku, kdyz dana stranka neni nalezena... samozrejme ze to jde resit pres htaccess, ale v tomto pripade bohuzel ne.

muj priklad je nasledujici:

index.php:
<?php
    include "header.php";
    echo "<div class=\"obsah\">";
    include "odkazy.php";
    echo "</div>";
?>


odkazy.php vypadaji takto:
<?php
 if (isset($_GET['page'])) {

  // pokud byl odeslán ?page= ...
  $page = $_GET['page'];
  $page2 = dirname($_SERVER['SCRIPT_FILENAME'])."/page/".$page.".php";
  if (file_exists($page2)) {

    //pokud page existuje, načteme ho do středu
    if (substr_count($page, "../") > 0) {

      // pokud je v parametru alespoň 1x ../ neumožíme page načíst
      echo "<h3>Upozornění</h3>Nelze nahrát page v nadřazeném adresáři!";
    }
    elseif ($page == "index" or $page == "/index") {

      // index načíst nepovolíme, vznikl by nekonečný cyklus
      echo "<h3>Upozornění</h3>Index nemůže načíst sám sebe!";
    }
    else {
      include $page2;
    }
  }
  else {

    //pokud page neexistuje, zavoláme error404.php
    include "page/error404.php";
  }
}
else {

  // Pokud nebyl paramentr page volaný, načteme domu.php
  include "page/domu.php";
}
?>

jednotlive stranky se tedy volaji takto: http://mujweb.cz/index.php?page=nazev-stranky

jak jiste vidite na 27. radku v pripade, ze nazev-stranky.php ve slozce pages neexistuje, tak se nacte error404.php. coz je spravne, vse funguje jak ma.. ale.
stranku error404.php mi to vypisuje tim padem do divu:
<?php
    include "header.php";
    echo "<div class=\"obsah\">";
    //zde bude prave stranka error404.php
    echo "</div>";
?>

coz se mi 2x nelibi, chtel bych, aby se pri nenalezene strance nenacitala error404.php do obsahu stranky, ale aby se nacitala jako nova stranka (tedy nejak takto: http://mujweb.cz/error404.php). Zkousel jsem presmerovani pres header ("location:") ovsem to samozrejme nejde, jelikoz mam na strance jiz nejaky vystup (hlavicka, html deklarace....) je nejake reseni jak pri nenalezeni stranky presmerovat uplne na jinou pri takoveto strukture webu?
ninja
Profil
Místo include pužijte funkci header a přesměrujte.
slovakCZ
Profil
no to jsem psal... pozil jsem header a presmeroval jem.. ovsem vypsalo mi to chybu.. jelikoz header muzu pouzit pouze, kdyz na strance pred tim neni zadny vystup.. coz v tomto pripade prave je... =o/
Taps
Profil
ninja:
Čti trošku pečlivěji
Zkousel jsem presmerovani pres header ("location:") ovsem to samozrejme nejde, jelikoz mam na strance jiz nejaky vystup (hlavicka, html deklarace....) je nejake reseni jak pri nenalezeni stranky presmerovat uplne na jinou pri takoveto strukture webu?
Taps
Profil
slovakCZ:
Před tu hlavičku zkus vložit tento kod
 if (isset($_GET['page'])){
if(!file_exists(dirname($_SERVER['SCRIPT_FILENAME'])."/page/".$_GET['page'].".php")){
  header("location:error404.php");
}  
} 
slovakCZ
Profil
neco podobneho jsem zkousel, ale s predavanim parametru a pak jsem si uvedomil ze to je blbost :) toto me nenapadlo, dik moc, vyzkousim v pozdnich hodinach a dam vedet.
slovakCZ
Profil
funguje to presne tak jak ma, dekuju moc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: