Diskuze: Drobná editace
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 8 zpráv z 8.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
V administraci musíš mít stejně nějaké ověření, o kterého
uživatele se jedná. Pochybuji že vypisuješ všem uživatelům všechny
inzeráty. Jaký by byl problém udělat stejné ověření i u stránky s
editací?
Jinak jistě, že to jde, ale ověřování musíš mít stejně i po tom
odeslání - nemůžeš se spoléhat, že ti data pošle jen ten uživatel,
kterému se stránka zobrazila.
Ahoj,
není důvod nenechávat přesměrování na URL s ID inzerátu. Na té
stránce musíš vždycky otestovat, jestli daný inzerát patří danému
uživateli. Pokud patří, pak je v podstatě jedno, jestli si změní číslo v
URL, holt si edituje (svoji vlastní vinou a úmyslně) jiný inzerát - ale
pořád svůj.
Musíš u toho pořešit i další kontroly, např. pokud máš nějaké
časové omezení, kdy daný inzerát může editovat atd. Ty kontroly by měly
proběhnout 2x, a to při:
V administraci to vypisuje pouze inzeráty, které mají stejné jméno v "autor" jaké je v SESSION"jmeno".. to funguje správně..
ID dej do URL a při vypisování stránky s editací ověříš, jestli to
ID patřík tomu uživateli. Pokud ne, vrátíš ho zpět s nepovoleným
přístupem.
Ještě by to šlo trochu netradičně a to přes formulář. Tlačítko bude
patřit formuláři, který bude obsahovat skryté pole s ID. Stejně bych to
ale nechal ověřit. Výhoda je v tom, že to nedáváš do URL a neplete to
uživatele a navíc tím odradíš nějaké ty uživatele od zaměnění.
<form method="POST" action="Odkaz na tu stránku.php">
<input type="hidden" value="ID inzerátu" name="id" />
<input type="submit" value="Editovat" />
</form>
Už proces ověřování mám, vytáhnu si i z db příslušný inzerát, ale nemohu to nastrkat už do šablony :/ Už ale při podávání jsem musel nastavit jako value například pole titulku toto:
<?php if(isset($_POST['titulek']))echo htmlspecialchars($_POST['titulek']); ?>
aby když vyskočí chybová hláška, aby v tom formuláři něco zůstalo..
jenže když právě teď vytahuju inzerát z db:
$nactiInzerat=$spravceInzeratu->nactiInzerat($parametry[0]);
$inzerat = array(
'titulek' => $nactiInzerat['titulek'],
'text' => $nactiInzerat["text"],
'kategorie' => $nactiInzerat["kategorie"],
'upresneni' => $nactiInzerat['upresneni_' . $_POST['kategorie']],
'mesto' => $nactiInzerat["mesto"],
tak to do těch polí nevyplní to co má, i když nastavím něco takového:
<?php if(isset($inzerat['titulek'])) echo $inzerat['titulek']; ?>
Jen dodám, že na verzi bez MVC mi to bez problému vypisovalo vše, ať už
to házelo chybu při přidávání inzerátu nebo když jsem načítal data pro
editaci z db.
Na to mi stačilo toto:
<?= htmlspecialchars($titulek) ?>
jenže to jsem ani pole nepoužíval, každé pole z formuláře jsem měl uložené např:
$titulek=$_POST['titulek']
nebo když jsem načítal:
$titulek=$nactenyInzerat['titulek']
vidíte tam nějakou jasnou chybu hned po shlédnutí kodů? díky 
doporucil by som ti session pouzivat na celom webe - pokial je prihlaseny
spravca, tak mu povol editaciu clanku, pokial nie je prihlaseny, tak mu umozni
sa prihlasit
dalej ked pouzijes session, nastav u coockies cas,po ktory bude platna a po
vyprsani platnosti ho okamzite odhlas, ked nezaregistrujes ziadnu aktivitu
(prenos dat, klikanie,...)
pomocou javascriptu dokazes skryt aj adresu v browseri,
dalsia moznost je vygenerovat tzv. temporary ID, ktore sa pouzije v URL a bude
vygenerovane nahodne a nikde by sa neukladalo
Takže si mám inzerát udělat jako SESSION a při vytahování z databáze
to uložit do aktuální SESSION? To je zajímavé 
A jak mám tedy udělat to časové omezení. Nejde to přes PHP? Asi na to přímo funkce neexistuje, že?
Zobrazeno 8 zpráv z 8.