Diskuze: Nepochopitelný whitespace ničí celý layout
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 27 zpráv z 27.
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.
Nevím jaký důvod máš ke "spaghetti-code". V PHP tolik nedělám, takže moc neporadím ... ale to tvoje je téměř nečitelný kód...
Vlož odkaz na web nebo co css-float?
Já vím, objektovou verzi dělám taky, ale tohle má přednost...
Vůbec se mi v tom nechce hrabat. Jen s hrůzou domýšlím, co asi dělají řádky
db_query('DELETE',null,'articles','aid='.$_POST['aid']);
db_getdata('value','settings',false,'SID=1');
apod.
Ve FF to funguje korektně. Bude problém v CSS
A tuhle hrůzu jsi ani ukazovat
nemusel 
chyba je asi v <div id="padder">
http://prntscr.com/1s9hi7
A jaký máš přesně důvod k tomu mít v kódu SQL injekce?
SQLi mám v části aplikace, kam mají přístup pouze tři lidi, které znám, zbytek mám ošetřený strip_tags a addslashes.
Důvodem ke špagetám je dlouhá doba vývoje. Články o OOP jsem si dočetl teprve nedávno a když jsem ostatním oznámil, že web budu dělat už podruhé od znova ještě dalšího půl roku, jsem se rozhodl docvakat tuhle špagetovou verzi, co nejdříve vystavit a pustit se do OOP.
Pokud používáš addslashes, tak to ošetřené nemáš, protože ten to neošetřuje. SQL injekce je nebezpečná všude, je jedno že si myslíš, že k tomu není přístup. A hlavně je na hodinu času to opravit.
Ahoj, byl jsem v podobné situaci jako ty. Dodělával jsem jednu věc protože oop jsem uměl jen základy, ale upřímně ti radím, všeho nech , zkoukni sdracův seriál o mvc, přečti nějaké články o OOP, session injekci, sql injekci a budeš šťastnej že jsi to udělal. Já teď lituju 9-10 měsíců kdy jsem psal špagetovej kód.
Souhlasím skoro se vším, kromě té hodiny. Vyměnit addslashes za mysql_real_escape_string je práce na pár sekund až minut.
To jo, ale v tom kódu je i:
db_query('DELETE',null,'articles','aid='.$_POST['aid']);

Na tento nesmysl jsem upozornil výše. Nevím, co lidi vede k tomu používat takovou slátaninu místo byť stále zastaralého, ale daleko přehlednějšího
mysql_query("DELETE FROM articles WHERE aid=" . (int)$_POST['aid']);
Třeba na insert je ta metoda super, můžu tam předat rovnou pole z postu.
Na delete ji také nechápu 
To je nějaký framework? Něco podobného jsem našel v Drupalu, ale mělo to jiné pořadí parametrů.
Když už bych nějaký takový framework dělal, asi bych šel jinou cestou:
db_insert('articles', array('title' => $_POST['title']));
db_select('articles', '*', array('aid' => $_POST['aid']));
db_delete('articles', array('aid' => $_POST['aid']));
db_update('articles', array('title' => $_POST['title'], array('aid' => $_POST['aid']));
Mám to tak kvůli ošetření MySQL chyb, nebavilo mě pokaždé psát "or die(db_error(mysql_error()))"
Ale souhlasím, je to prasárna. Články už přečtené mám, teď musím celý web navrhnout na papír a pak začnu psát.
A framework to opravdu není.
Při MySQL chybě zastaví skript a vykoná kód v závorkách: buď vypíše text nebo spustí fuknci.
Není jednodušší vyskočit z bloku nebo funkce a zpracovat to standardně jako chybu, případně se z ní zotavit? To kvůli tomu ukončíš celý rozpracovaný skript?
To nevadí, pokud vznikne chyba, přesměruju uživatele headerem na chybovou stránku.
Ale asi máš pravdu, nemá smysl abych se tu hádal s někým chytřejším a zkušenějším.
Nauč se používat PDO a práci s výjimkami. V PHP 5.5 byla funkce mysql_query() odstraněna.
Ok, díky za info. Jak jsem psal, tohle během krátké doby dodělám a vrhnu se na objekty.
Když objekty, tak třeba takto:
$db->insert('articles', array('title' => $_POST['title']));
$db->select('articles', '*', array('aid' => $_POST['aid']));
$db->delete('articles', array('aid' => $_POST['aid']));
$db->update('articles', array('title' => $_POST['title'], array('aid' => $_POST['aid']));
ale stejně mám nejraději klasické SQL dotazy, které mi připadají elegantnější
$db->query("INSERT INTO articles (title) VALUES (?)", array($_POST['title']));
$db->queryOne("SELECT * FROM articles WHERE aid=?", array($id));
$db->queryAll("SELECT * FROM articles");
$db->query("DELETE FROM articles WHERE aid=?", array($_POST['aid']));
$db->query("UPDATE articles SET title=? WHERE aid=?", array($_POST['title'], $_POST['aid']));
atd. Stačí si jen trochu upravit PDO viz návod na devbooku.
Zobrazeno 27 zpráv z 27.