Autor Zpráva
Vencos
Profil *
Ahoj ...

Našel jsem tu pěkný zdroják PHP, který by měl každý den otevřít jinou HTML.

Chci se zeptat, jestli je to bezpečný kód, jestli to nemůže házet nějakou chybu. Chci to použít na stránkách, kde je relativně vysoká návštěvnost (100-200 za hodinu)... takže hrozí ten problém s tím, že se např. setkají v jeden okamžik 2 uživatelé a vyhodí to chybu? Nebo je to bezpečné.

Děkuju moc za Váš názor, případně nějaké vyplepšení

$dnes=date("w");

switch ($dnes)
{
case 0 :
require"ahoj.html";
break;

case 1 :
require"cau.html";
break;

case 2 :
require"nazdar.html";
break;

case 3 :
require"ahoj.html";
break;

case 4 :
require"cau.html";
break;

case 5 :
require"nazdar.html";
break;

case 6 :
require"nazdar.html";
break;
}
Hugo_jinde
Profil *
Vencos

Pokud budou ty html soubory dostupné, tak to pojede bez problémů.
Kos
Profil *
Nehrozí tedy ten problém s tím, že 2 různý uživatelé kliknou na odkaz, které bude odkazovat na toto PHP současně, že to hodí nějakou chybu (jako že ještě dřív než se zpracuje první požadavek, už je žádost o to samé od někoho jiného)

Díky moc
Hugo_jinde
Profil *
Kos

Pokud to ustojí server, tak se nic nestane. A server to ustojí (pokud to nebudou tisíce požadavků za sekundu).
Vencos
Profil *
Kdyby náhodou někdo s Hugo_jinde nesouhlasil, dejte mi prosím vědět :)
jozob
Profil
Bezpečné to bude určite, žiadna výnimka ako si uvádzal (pri tom, keď sa stretnú dvaja useri v rovankom čase) by nemala nastať. Jediné, čo by som pozmenil - funkciu require by som nahradil funkciou include a ošetril chybové hlášky. Ak funkcia require nenájde zadaný súbor, skončí sa to Fatal Error-om, takže beh skriptu sa pozastaví a to čo sa stihlo vygenerovať sa odošle, ostatné nie. Pri funkcii include toto nenastáva, táto funkcia vráti len chybové hlásenie.
jozob
Profil
"jako že ještě dřív než se zpracuje první požadavek, už je žádost o to samé od někoho jiného"
Toto by mal server ustriehnúť, viacnásobné požiadavky by mal zaradiť do rady a postupne vybavovať (ako na úrade :-))
Hugo
Profil
Vencos

Pokud by apache neustál dva současné požadavky, tak by např. tato diskuze moc nejela :-).
jozob
Profil
Hugo
A čo taký cnn.com :-)
Vencos
Profil *
jozob

TO nahrazení require bych zvládnul :)

Ale s tím ošetřením chyby bych asi potřeboval pomoci, jestli bys mi to mohl přičmárnout do toho kodu.

Díky

P.S.: A jaktože třeba u nějakého fóra mi přišli na chybu, že mi to někdy vrací 0 (v reálu se mi vymaže databáze TXT) ... a prý je to tím, že odesílali vzkaz 2 uživatelé najednou. Je to možný?
Falcon16
Profil
nj, lenze je rozdiel ked ti Apache vklada nejaku stranku do inej a ine, ked ti cita, zapisuje alebo inak pracuje s obycajnym textakom. V tom co si napisal nebol problem v php kode, ale v tom, ze to ten txt subor nezvladol, ak sa to tak da napisat. Ine by to bolo v pripade databaze, kde si to dokaze ustriehnut a spravi to tiez nejaky akokeby poradovnik
jozob
Profil
Vencos
"Ale s tím ošetřením chyby bych asi potřeboval pomoci, jestli bys mi to mohl přičmárnout do toho kodu."
No nemyslel som ani tak ošetrenie chyby, ale skôr potlačenie chybového hlásenia. Jednoducho:
@include "subor.html";

Čiže pred každý include hoď zavináč (nie údenáča :-)).

"a prý je to tím, že odesílali vzkaz 2 uživatelé najednou. Je to možný?"
No ak to fórum ZAPISUJE do súboru, je to možné. Ale aj to sa da ošetriť.
Vencos
Profil *
jozob

A jaký bude tedy rozdíl v tom, když se budu odkazovat na "soubro.html"

1) budu mít include "subor.html";
2) budu mít @include "subor.html";

??? Když přeci ten soubor nebude existovat, tak se musí něco vypsat. Nebo se to prostě neotevře?
hugo_jinde
Profil *
Vencos

Ten zavinac potlaci vypis chyby. Takze soubor se nezobrazi, ale skript pojede dal.
jozob
Profil
hugo_jinde
"Takze soubor se nezobrazi, ale skript pojede dal."
Skript bude pokračovať vždy, pokiaľ nenastane Fatal error. Takže pri použiti funkcie include sa nikdy skript nezastaví. Len sa vypíše chybové hlásenie.
Hugo
Profil
jozob

No, přesně to jsem napsal. Jen se ta chyba nevypíše, protože je tam ten zavináč.
jozob
Profil
Hugo
OK. Ja som nejak z toho pochopil to, že v inom prípade skript ďalej nepôjde.
Vencos
Profil *
Aha.. tak to už chápu. Díky
mila
Profil
Můžeš taky něco jako
if (! @include $page) {
echo 'stranka nenalezena...';
}
Toto téma je uzamčeno. Odpověď nelze zaslat.

0