Diskuze: MySQL databáze automaticky přičítá +1
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Není možné, že tam je trigger o kterém nevíš, který dělá to samé co ty v aplikační logice? Tedy přičítá jedničku?
Nemyslím si. Jsem teĎ ještě zkoušel když mu nechám nahrát hodnotu pevně ... SET val="55"; tak ji tam nahraje správně. Jen když tam chci nacpat proměnou tak přičte další +1. takže teĎ jsem z toho ještě víc v prdeli než předtím. přitom i když si tu proměnou vypíšu před i za tak pokaždé mi vyjde stejná hodnota. ale v db je prostě o jedno větší.
Při tom jako by tu neměli o bezpečnosti a SQL dost
Pustí se jednou. K injekci dojít nemůže, protože tam nedosazuji hodnoty které se dají ovlivnit. k ukázce jsem použil mysql_query abych to nemusel psát celé. k ukázce mého problému je to dostačující.
neovlivnitelné hodnoty asi myslíš ty co načítač v input typu number, že? No kžadopádně to fakt vypadá na to, že se to prostě zavolá 2×. Zkus si dát nějaký log do souboru.
ještě můžeš zkusit restartovat MySQL, někdy to pomůže.
k ukázce jsem použil mysql_query abych to nemusel psát celé
Nevím, proč používáš k ukázce něco, co už v PHP dávno není? K injekci samozřejmě dojít může, protože tam dáváš proměnnou, do té si může kdokoli cokoli uložit, že to tam ty teď neděláš neznamená, že dalšího člověka co to bude upravovat nebe tebe pak nenapadne dát tam něco z formu. A ne, nebudeš kontrolovat X řádků co se s tou proměnnou dělá, prostě to tam napereš. A pak je z toho pěknej průser. Představ si, že to tady někdo uvidí a nedej bože to použije. Hlavně, že to vždycky odůvodníte nějakým nesmyslem.
K tvému problému. Pokud to dělá i samotný kód:
UPDATE tabulka SET val=val + 1
, proč sem posíláš ten PHP kód? Je tedy bezpředmětný. Co se stane, když SQL kód výše dáš do SQL konzole? Pokud se to zvýší o 2, tak zkus založit novou tabulku a zkus to samé. Případně novou DB. Přijde mi docela jednoduché přijít na to čím to je, stačí to vyzkoušet.
Zobrazeno 11 zpráv z 11.