Autor Zpráva
Dranel
Profil
Dobrý den,
rád bych se zeptal, zdali je lepší použít stávající fci (popřípadě jak ji upravit)...

<?php
function ukazstranku() {
if ((string)$_REQUEST["str"] <> '') $mojestranka = $_REQUEST["str"]; else $mojestranka = "uvod";
if (is_file("./".$mojestranka.".php")):
$nazevstranky = $mojestranka.".php";
require $nazevstranky;
elseif (is_file("./".$mojestranka.".htm")):
$nazevstranky = $mojestranka.".htm";
require $nazevstranky;
elseif (is_file("./".$mojestranka.".html")):
$nazevstranky = $mojestranka.".html";
require $nazevstranky;
else:
$nazevstranky = $mojestranka.".htm";
require "./notfound.php";
endif;
}
?>

...nebo je lepší to převést na switch (jestli to vůbec jde).
tiso
Profil
Aký má význam funkcia ktorú použiješ iba raz? Žiadny.
Aleš Janda
Profil
Na switch to převést nejde, nechal bych to asi tak jak to je.

Nicméně bych ještě zabránil změně adresáře (tedy v názvu se nesmí vyskytovat /), jinak ti někdo může lézt kam nechceš.

tiso
Funkce má (mimo jiné) význam pro přehlednost. Je jedno, jestli je použiješ jednou nebo tisíckrát.
Str4wberry
Profil
Pokud takto budeš vkládat hodně stránek bude to jednodušší. Se switchem bys je musel všechny vyjmenovávat (vypisovat).
Kcko
Profil
Ja bych v zadnem pripade nedelal include do funkce ... , no vsak poznas casem proc
Str4wberry
Profil
Odpovídám Kcko:
„Ja bych v zadnem pripade nedelal include do funkce ... , no vsak poznas casem proc“
Ale vždyť nikdo žádné include nikam nedává, ne?
BetaCam
Profil
Ja bych v zadnem pripade nedelal include do funkce ... , no vsak poznas casem proc

A mohu se zeptat co by měl jako časem poznat?? A je jedno jestli se redná o i, io, r nebo ro.
tiso
Profil
Aleš Janda - blok kódu s komentárom má ten istý význam. Netreba to zbytočne komplikovať...
Dranel
Profil
Vysvětlíte mi pls o čem se to tu bavíte? Díky tomu, že tam mám is_file() a ještě ke všemu ./ tak se mi do toho nikdo nabourat nemůže (obrazně).
Na swith to nejde - mohl jsem si to myslet.
Ostatním částem vašeho rozhovoru nějak nerozumím :(
BetaCam
Profil
Ostatním částem vašeho rozhovoru nějak nerozumím :(

Například?? :)
Dranel
Profil

Nicméně bych ještě zabránil změně adresáře (tedy v názvu se nesmí vyskytovat /), jinak ti někdo může lézt kam nechceš.
...
Ja bych v zadnem pripade nedelal include do funkce ... , no vsak poznas casem proc
...
A mohu se zeptat co by měl jako časem poznat?? A je jedno jestli se redná o i, io, r nebo ro.
...
blok kódu s komentárom má ten istý význam. Netreba to zbytočne komplikovať
...
Například?? :)


Například :)
Str4wberry
Profil
Odpovídám Dranelovi:
1) Díky „/“ mohu vložit téměř libovolný soubor z Tvého webu (z jiné složky).
3) i — include, io — include_once, r — require, ro — require_once
BetaCam
Profil
Dranel

Nicméně bych ještě zabránil změně adresáře (tedy v názvu se nesmí vyskytovat /)

Pokud ti do $_REQUEST["str"] někdo pošle abc/xyz tvůj script se bude snažit načíst stranku xyz (htm/php/html) ale adresáře abc tudíš si človek může "listovat" adresáři.

Ja bych v zadnem pripade nedelal include do funkce ... , no vsak poznas casem proc

Toto jsem sice pochopil, ale neznám důvod tohoto opatrení, proto jsem se zeptal :

A mohu se zeptat co by měl jako časem poznat?? A je jedno jestli se jedná o include, include_once, require nebo require_once.


blok kódu s komentárom má ten istý význam. Netreba to zbytočne komplikovať

Tisova odpověd byla pro Aleš Jandu. Tiso zastává názor, že tvořit funkci, která je použitá pouze jednou je zbytečné i z důvodu přehlednosti, protože stejnou funkci tedy přehlednost vykoná i dobře okomentovaný kód.

Jo a ješte jedna věc být tebou nepoužíval bych $_REQUEST
Dranel
Profil
Str4wberry
Já tam ale nemám / nýbrž ./ - tudíš se soubor vloží pouze z daného adresáře, jinak dojde k chybě. Řešilo se to tady (externí odkaz).

BetaCam
Proč nepoužívat $_REQUEST? Co tam tedy dát místo toho? $_GET? Jaký to bude mít význam?
BetaCam
Profil
Dranel

Proč nepoužívat $_REQUEST? Co tam tedy dát místo toho?

Z bezpečnostních důvodů. A ano měl by si používat $_GET, $_POST atd.

Já tam ale nemám / nýbrž ./ - tudíš se soubor vloží pouze z daného adresáře, jinak dojde k chybě.

nevloží. pokud ti poslu do $_REQUEST["str"] například abc/xyz bude tvuj script provadet toto.

is_file("./".$mojestranka.".php") což se v tomto případě rovná is_file('./abc/xyz.php') což neni tebou určený adresář. To jestli tam mas ./ nebo / je uplně jedno.
Aleš Janda
Profil
Dranel
Já tam ale nemám / nýbrž ./ - tudíš se soubor vloží pouze z daného adresáře, jinak dojde k chybě

Anebo se dá stáhnout i soubor z nějakého nadřazeného adresáře - uživatel jednoduše zadá do $_REQUEST["str"] '../nejaky_soubor_z_nadrazeneho_adresare' a také to půjde - v podstatě to ./ je tam k ničemu.
Dost lidí si to neuvědomuje, ale např. ./../adresar1/adresar2/../../soubor.txt je naprosto platná cesta.
Dranel
Profil
Aleš Janda, BetaCam
No ale když tam nedám tedy nic (žádný lomítko) tak to vyjde úplně nastejno ne? Nebo jak to tedy zabezpečit?
Timy
Profil
Dranel
Co takhle kontrolovat, jestli se ta $mojestranka skládá pouze z písmen, čísel nebo pomlčky?
nuguien
Profil *
neví někdo
jak se dá kodem vložit do složky soubor určeného typu a jména?
předem děkuji za odpověď.
nemám vidět na klávesnici písmenka..
Aleš Janda
Profil
nuguien
File_Put_Contents()
A příště si založ vastní vlákno.

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: