Autor Zpráva
danny98
Profil
Ahoj všem mám problém, na fóru: Diskuse JPW: Názor na web- yourradio database
jsem se vás ptal na názor mého webu, teď je na adrese radiodb.tk (hosting mi smazal původní účet), ale teď k věci: ze začátku jsem měl problémy s hostingem a někdo mi napsal, že pokud zadá nesmyslný parametr (ID), tak se stejně objeví bílá strana (tehdy to byl problém hostingu). Teď by mě zajímalo, jak sestrojit podmínku, které by například při zadání radiodb.tk/details.php?id=999&lang=cz hodila uživatele na 404.

Zkoušel jsem:
if ($p['id']= NULL) {
  header('Location: http://radiodb.tk/404.php');
}
což je asi blbost

Jinak mnohý věci se od tý doby s webem změnily :)

OK přišel jsem na to, k podmínce
if ($p = mysql_fetch_assoc($result)) {
}
jsem dosadil
else
    {
      header('Location: http://radiodb.tk/404.php');
    }
Kcko
Profil
Je rozdíl mezi = a ==
JimmyCz
Profil
zdravím, zde máš odpověd na tvojí otázku.
Jak píše Kcko je velký rozdíl mezi = a ==,ale to bys měl vědět.

Toto používám já, pro zobrazení profilů:

if (isset($_GET['id']) === true && id_exists($_GET['id']) === true) // zkontroluje, zda je zadané ID a zda je ID zaznamenané v DB{
OBSAH
 }  else {
         header('Location: 404.php');
         exit();
     }
A zde máš funkci: id_exists
function id_exists($id) {
    return (mysql_result(mysql_query("SELECT COUNT(`id`) FROM `uzivatele` WHERE `id` =  '$id'"), 0) == 1) ? true : false;
}
Uprav si to podle svého,protože nevím jestli používáš mysql_query.
Snad ti to pomůže :)
juriad
Profil
danny98, JimmyCz:
Je špatné jen tak přesměrovat na jinou stránku. Jepší je poslat hlavičku 404 a vypsat chybu do stránky. Tak se uživatel alespoň dozví, v čem je problém, může si zkontrolovat URL, jestli se nepřepsal, a svůj omyl opravit.

header("HTTP/1.1 404 Not Found");
echo 'Stránka s id=' . $_GET['id'] . ' neexistuje, zkontrolujete, že jste zadali adresu správně';
exit();

Samozřejmě, že můžeš klidně místo výpisu hlášky provést include chybové stránky:
include "404.php"

JimmyCz:
Funkci id_exists nepotřebuje, tu situaci mu už řeší ten else, který přidal.

Tu část příspěvku začínající „OK ...“ doplnil po 12 minutách. Chápu to tak, že si svůj vlastní problém vyřešil.

danny98:
Ještě nejspíš potřebuješ podmínku hned na začátku pro kontrolu, zda jsi vůbec parametr id dostal. To, o co jsi se snažil tím nepodařeným porovnáním s NULL. A pak ještě správně sestavit dotaz do databáze (ošetření SQL Injection). Možná to máš a jen tě podceňuji.
danny98
Profil
ok, ještě to upravím, děkuju vám

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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