Programovací jazyk Python byl vydán v nové major verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.
BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.
V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."
Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.
Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.
Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.
… více »Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.
Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.
ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím
… více »ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.
Zdravim, mohol by mi nasledujuci kod prosimvas niekto prepisat, ako by to vyzeralo pri Prepared Statements? Dakujem.
$connect =mysql_Connect("$serversql","$loginsql","$serverpasssql") or
die("Could not connect: " . mysql_error());
mysql_query("SET NAMES 'utf8'");
mysql_select_db ("$serversqldb");
$sql = "select nazov,cena from `".$_POST['nazovTabKategorie']."` where id like '".$_SESSION['kosik'][$i]['id']."'";
$result = mysql_query($sql)or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo $row[0];
}
Řešení dotazu:
Podobnych linkov mi na google naslo vela, keby som z nich vysiel nepisem sem. Nie je mi jasne ako dat to set utf, nieje mi jasne ako davat tie otazniky a bindovanie premennych, ked tam potrebujem dat tak 4, nie 1 ako je v tych prikladoch vsade, nie je mi jasne ako potom spracovat vystup. Ak by mi niekto len jednoducho prepisal ten priklad do prepare statement tvaru aby som pohitil princip, bol by som velmi happy.
Tak mam tasky den googlenia za sebou, najludskejsi pristup mi prisiel u pdo, kedze to ma pomenovatelne parametre a pre simpleminded prehladnejsie bindovanie, i ked si nie som isty suportom do buducna. Spociatku som tvojmu postu vobec nechapal, ale teraz, ked som nagooglil, ze nieje mozne nazov tabulky alebo stlpca takto osetrovat, bol som dost sklamany, kedze ma to vracia spat k mysql_real_escape_string, a is_numeric pre dane hodnoty prenasane v post, az som sa zamyslel ci ma vobec ten prepare statement pristup pre mna neaky vyznam, kedze som chcel jednotne,ucinne,kompatibilne a jednoduche riesenie proti sql injection :( .
'kosik' si tipuji, že vlastní e-shop, no pokud někdo bude chtít, tak Vám tam nadělá psí kusy viz SQL injection.zbozi a druhou kategorie což bude číselník a obě tabulky přes cizí klíč provážete.---- setting ---- si opravte informace pro připojení a soubor normálně spusťte třeba i z terminálu php -f example.php a pak se podívejte jak je to udělané (je to upravené z vašeho zadání).
Z tejto problematiky mam vcelku migreny.
Co sa tyka klasickych premennych prenasanych POST na generovanie sql
1.a : mysql_real_escape_string pre string, a is_numeric pre ciselne nodnoty
1.b : prepare statements (mysqli,pdo a ine..)
(Šangala: dik moc za ten prepis do prepared, ak by bolo viac ? bindovalo by sa
to predpokladam tak nejak: $stmt -> bind_param("ss", $user, $pass); ?)
A teraz k tomu zakliatemu predavaniu nazvov tabuliek/stlpcov.
Zacnime tym, ze sa to klasicky osetri mysql_real_escape_string, nasledne pouziju
function getValidNameOfTable($tableName), function getValidId($id) , kde sa zisti
ci taka tabulka naozaj i existuje v db a ci v nej existuje polozka s danym id, cim
sa vihne pripadnym eror hlaskam.
Ostava tu ale ako ma neprijemne poucili, ze utocnik zmeni hodnotu nazvu tabulky v
hidden form inpute, na nazov neakej inej, ktora skutocne existuje v danej databaze,
a necha tym padom vykonat nasledny kod na inej tabulke ako by sa malo.
zvažte raději možnost mít jednu tabulku zbozi a druhou
kategorie což bude číselník a obě tabulky přes cizí klíč provážete
Presne takto to mam.
Vzhladom na konkretnu situaciu, v get je id kategorie- co je cudzi kluc ktorym ziskam
nazov tabulky, a nasledne na stranke vypisem produkty, v tvare formularov pre kazdy
jeden, s hidden inputmy realneho nazvu ziskanej tabulky, a id produktu.
Urcite je na hlavu posielat takto nazvy tabuliek, ale na probleme nic nezmeni ani
posielanie neakeho cudzieho kluca, utocnik si namiesto ziskania peknych nazvov
tabuliek, ziska tie forgein key hodnoty (ci uz neake hash hodnoty alebo cisla) a
bude zaskodnicky podsuvat tie, co da rovnaky vysledok, ze moj php kod bude mat
snahu vykonat nieco na inej tabulke ako ma.
Kamarat mi poradil, ze riesenie vidi v zavedeni skupin tabuliek, nad ktorymi ma pravo
operovat (dany php subor alebo uzivatel, a to implementovanim asi najednoduchsie do
medzitabulky tabuliek pridelit kazdej tab hodnotu neakeho bezpecnostneho stupna/pripadne druhu),
a kontrolovat to napr v getValidNameOfTable($tableName)
V pripade podsunutia keyid inej tabulky, ktora by bola v poli akceptovatelnych,by
prinajhorsom viedlo, ze do kosika prida neaky plne iny produkt z inej kategorie,
resp komplikovany psosob, ako si objednat nieco ine.
Celkovo ale taketo riesenie predavania tab names mi teraz (ano sebakritika :)) pride
dost strasny.
Pro běžné aplikace je dost neobvyklé skládat dotaz s proměnnými pro název tabulky či
sloupce, a pokud je to nutné.
Je to nutne, priklady tu spomenute su len stipkou, neakym sposobom prenasat nazvy
tabuliek jednoducho musim, s tym sa neda hnut.
tak to stejně neventilujete přes venek, ale máte na to své fce či třídu a rozhodně
nepustíte z pole jako GET hodnotu do dotazu jako název tabulky či sloupce.
Prooosim velmi pekne o neaky priklad takejto funkcie triedy, alebo hocakeho ineho sposobu
ako prenasat nazov tabulky z jednej stranky na druhu, po potvrdeni formulara, bez
toho aby to utocnik mohol menit na co chce :(
Jednou glob tabulkou by sa to riesit dalo, ale takejto mega ultra gigantickej tab som
sa chcel vsemozne vyhnut.
zvažte raději možnost mít jednu tabulku zbozi a druhou kategorie což bude číselník a obě tabulky přes cizí klíč provážete Presne takto to mam.Horucava mi posobi na mozog, a pisem nezmysli, nemam to tak, mam sice tabulku "tabuliek" s cudzimi klucmi, ale zbozi je potom kazde v svoje tab.
IntVal()) $stmt->bind_param("ss", $user, $pass);.$stmt->bind_param('sid', $string, $integer, $realnumber);getValidNameOfTable() a getValidId()'getValidNameOfTable()' aby tam někdo nevložil jiný sql dotaz.$_POST['nazovTabKategorie'] třeba toto:grosse_catastrofe` UNION SELECT `nazov`,`cena` FROM `grosse_catastrofe.SELECT `nazov`,`cena` FROM `grosse_catastrofe` UNION SELECT `nazov`,`cena` FROM `grosse_catastrofe` WHERE text_id = '0fc3d100fa1b5c80179e1ccad8fd9497'grosse_catastrofegetValidId() bych jen ošetřil jestli je to například číslo daného tvaru a rozsahu atd. pokud je to text, tak je to i zbytečné, pokud se escapuje. Ošetření existence takového id (či hashe) už záleží na Vás jestli je to potřebné pro správný chod aplikace.error jen pokud k němu opravdu dojde, otázkou je jestli je error i nesprávná vstupní hodnota…SELECT `%mytable%id_pk` AS id,`name` FROM `%mytable%` WHERE `%mytable%id_pk` = ?
Pak jen předem TOU fcí či třídou vyměníme %mytable% za název konkrétní tabulky a a stačí nám jedna třída, funkce, či abstraktní předek k manipulaci s jednou skupinou tabulek, včetně i jednotného administračního ksichtu. Je to samozřejmě jen usnadnění a název tabulky neneseme ven, ale pevně ho někde před-nastavíme.
$sth = $dbh->prepare('select nazov,cena from `'.$_POST['nazovTabKategorie'].'` where id like ?');
$sth->execute(array($_SESSION['kosik'][$i]['id']));
$red = $sth->fetchAll();
ale pozor na SQL injection u toho $_POST['nazovTabKategorie']
SET @sql_command := CONCAT('SELECT * FROM ',neco,.....);
PREPARE stmt_command FROM @sql_command;
EXECUTE stmt_command;
DEALLOCATE stmt_command;
pro Váš způsob datového modelu nemám pochopení - sorry :(.Neni problem, kritika je na mieste :) . Ono tie tabulky niesu uplne rovnake, administrator webshopu si vytvara kategorie produktou sam, cim si vytvara i dane tabulky, pre kazdu jednu bud vybera z mnoziny predefinovanych alebo vytvara vlastne definicie/atributy , pricom kazdy jeden atribut prida danej kategorii/tabulke svoj stlpec, cize niektore tabulky sa mozu zhodovat uplne, niektore viac menej, a niektore mozu byt uplne ine, co sa stlpcov tyka .
r_categorytemplateitem, může být chápána spíše jako seznam parametrů kategorie a na základě ní lze hezky i generovat hledací dialogy pro kategorii zadávací dialogy apod. Tabulka categorytemplate se může jevit jako zbytečná a může dojít k její vypuštění a r_categorytemplateitem provázat přímo s c_category. Přijde na to jestli volitelné parametry mají být povinné či ne atd.
K jednotkám je vhodné ještě doplnit 'htmlunits' bo zápis 'm²' v html vypadá třeba jako 'm<sup>2</sup>' a to se blbě transformuje.takže neznám úplne pěsně PDO, ale pokud to "překládá" na PREPARE pro mysqlTakto nejak :
/*** prepare the SQL statement ***/
$stmt = $dbh->prepare("SELECT * FROM animals WHERE animal_id = :animal_id AND animal_name = :animal_name");
/*** bind the paramaters ***/
$stmt->bindParam(':animal_id', $animal_id, PDO::PARAM_INT);
$stmt->bindParam(':animal_name', $animal_name, PDO::PARAM_STR, 5);
/*** execute the prepared statement ***/
$stmt->execute();
J validovat table/column name nevie ziaden, ale to asi len pre nase dobro xD .
Tiskni
Sdílej: