Diskuze: Nepochopitelný whitespace ničí celý layout

Tvůrce

Zobrazeno 27 zpráv z 27.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.