Autor | Zpráva | ||
---|---|---|---|
problem Profil * |
#1 · Zasláno: 28. 4. 2016, 18:56:44
Dobrý večer, mám takovýhle kód a z mě neznámého důvodu vůbec nezapisuje do DB samozřejmě přihlášení je správně ;) Nejvíc mě překvapuje, že dokud tam nebyly ty posty zápis fungoval...
(ty údaje s v ' jsou textové; v poznámce je ta funkční varianta) Věřím, že je to nějáká hloupost... Vrtám se v tom celej den. Kdyby se na to koukl moc by mě to potěšilo. Děkuji za pomoc :) <?php //$co = "co"; //$nemovitost = "nemovitost"; //$blurceni = "blurceni"; //$stav = 2; //$mesto = "mesto"; //$mestcast = "mestcast"; //$cena = 1; //$poznkcene = "poznkcene"; //$material = "material"; //$vlastnictvi = "vlastnictvi"; //$energtrida = "energtrida"; //$popis = "popis"; //$plocha = 1; //$balkon = 1; //$lodzie = 1; //$terasa = 1; //$sklep = 1; //$parkovani = 1; //$garaz = 1; //$vytah = 1; $co = $_POST["co"]; $nemovitost = $_POST["nemovitost"]; $blurceni = $_POST["blurceni"]; $stav = $_POST["stav"]; $mesto = $_POST["mesto"]; $mestcast = $_POST["mestcast"]; $cena = $_POST["cena"]; $poznkcene = $_POST["poznkcene"]; $material = $_POST["material"]; $vlastnictvi = $_POST["vlastnictvi"]; $energtrida = $_POST["energtrida"]; $popis = $_POST["popis"]; $plocha = $_POST["plocha"]; $balkon = $_POST["balkon"]; $lodzie = $_POST["lodzie"]; $terasa = $_POST["terasa"]; $sklep = $_POST["sklep"]; $parkovani = $_POST["parkovani"]; $garaz = $_POST["garaz"]; $vytah = $_POST["vytah"]; $db=""; $tb=""; $spojeni=mysql_connect("","",""); mysql_select_db($db, $spojeni); mysql_query("INSERT INTO $tb (co, nemovitost, blurceni, stav, mesto, mestcast, cena, poznkcene, material, vlastnictvi, energtrida, popis, plocha, balkon, lodzie, terasa, sklep, parkovani, garaz, vytah, aktivita) values ('$co', '$nemovitost', '$blurceni', $stav, '$mesto', '$mestcast', $cena, '$poznkcene', '$material', '$vlastnictvi', '$energtrida', '$popis', $plocha, $balkon, $lodzie, $terasa, $sklep, $parkovani, $garaz, $vytah, 1)"); ?> |
||
juriad Profil |
#2 · Zasláno: 28. 4. 2016, 19:03:47
Nejspíš ti selhává dotaz do databáze, vypiš si jej před tím než zavoláš mysql_query.
Řetězcová vstupní data musíš ošetřit pomocí mysql_real_escape_string, před tím než je vložíš do dotazu. Číselná pomocí intval nebo podobné. Hádám, že: * některý řetězec obsahuje apostrof * nějaká číslená hodnota obsahuje desetinnou čárku Mimochodem, mysql_* funkce jsou zavržené a v novém PHP 7 už neexistují. Použij něco modernějšího. |
||
Lonanek Profil |
#3 · Zasláno: 28. 4. 2016, 19:06:08
A jsou proměnné předány do scriptu? Pokud ne, pak mne vůbec nepřekvapuje, že to nefunguje jak má.
Důrazně doporučuji ošetřit vstupní proměnné -> SQL Injection |
||
problem Profil * |
#4 · Zasláno: 28. 4. 2016, 19:30:42
Chlapi přiznám se vůbec z toho nejsem moudrej...
doufám, že jsem pochopil správně, že mi tam chybí ochrana proti SQL Injection teda jak wiki říká něco takovýho $query = sprintf("SELECT * FROM `Users` WHERE UserName='%s' AND Password='%s'", mysql_real_escape_string($user), mysql_real_escape_string($pass)); mysql_query($query); Myslím, že jsem dobře pochopil i to, že do user a pass patří moje jméno a heslo k databázi, ale co doplním do Users? Případně chybí mi v tom doplnit ještě něco? Přiznám se, že na luštění v angličtině na php net jsem se necítil... Možná je MySQL zastaralé, ale pro moje účely zatím vždy stačilo...Je opravdu zásadní důvod k tomu použít něco jiného, když neukládám nic tajného a důvěného? |
||
Lonanek Profil |
problem:
„.Je opravdu zásadní důvod k tomu použít něco jiného,“ Ano, je viz. citace juriad: „mysql_* funkce jsou zavržené a v novém PHP 7 už neexistují“. To znamená, že v PHP 7 to nebude fungovat. problem: „doufám, že jsem pochopil správně“ NE, nepochopil. $co = mysql_real_escape_string($_POST["co"]); $nemovitost = mysql_real_escape_string($_POST["nemovitost"]); ... $stav = intval($_POST["stav"]); ... ... Samozřejmě před použitím mysql_real_escape_string() již musíte mít připojení do MySQL. |
||
Kajman Profil |
problem:
Chybu vypátráte snáze, pokud si budete ověřovat návratové hodnoty funkcí a případně si vypíšete chybu databáze. To je obecná rada. Konkrétní je, že bez vyplněných $db $tb skript neví, kam se připojit a do které tabulky zkusit vložit data. |
||
Časová prodleva: 3 dny
|
|||
problem Profil * |
Děkuji :) Databázi a tabulku jsem samozřejmě měl vyplněnou, jen v tomhle kódu neni...
Po té radě se mi začala vepisovat čísla, ale textové hodnoty ne. Píše mi to tuhle chybu u všech... Warning: mysql_real_escape_string(): No such file or directory in /data/web/virtuals/127802/virtual/www/cristal/novatabulka_mysql.php on line 2 Warning: mysql_real_escape_string(): A link to the server could not be established in /data/web/virtuals/127802/virtual/www/cristal/novatabulka_mysql.php on line 2 Kód vypadá takhle: <?php $co = mysql_real_escape_string($_POST["co"]); $nemovitost = mysql_real_escape_string($_POST["nemovitost"]); $blurceni = mysql_real_escape_string($_POST["blurceni"]); $stav = intval($_POST["stav"]); $mesto = mysql_real_escape_string($_POST["mesto"]); $mestcast = mysql_real_escape_string($_POST["mestcast"]); $cena = intval($_POST["cena"]); $poznkcene = mysql_real_escape_string($_POST["poznkcene"]); $material = mysql_real_escape_string($_POST["material"]); $vlastnictvi = mysql_real_escape_string($_POST["vlastnictvi"]); $energtrida = mysql_real_escape_string($_POST["energtrida"]); $popis = mysql_real_escape_string($_POST["popis"]); $plocha = intval($_POST["plocha"]); $balkon = intval($_POST["balkon"]); $lodzie = intval($_POST["lodzie"]); $terasa = intval($_POST["terasa"]); $sklep = intval($_POST["sklep"]); $parkovani = intval($_POST["parkovani"]); $garaz = intval($_POST["garaz"]); $vytah = intval($_POST["vytah"]); $db=""; $tb=""; $spojeni=mysql_connect("","",""); mysql_select_db($db, $spojeni); mysql_query("INSERT INTO $tb (co, nemovitost, blurceni, stav, mesto, mestcast, cena, poznkcene, material, vlastnictvi, energtrida, popis, plocha, balkon, lodzie, terasa, sklep, parkovani, garaz, vytah, aktivita) values ('$co', '$nemovitost', '$blurceni', $stav, '$mesto', '$mestcast', $cena, '$poznkcene', '$material', '$vlastnictvi', '$energtrida', '$popis', $plocha, $balkon, $lodzie, $terasa, $sklep, $parkovani, $garaz, $vytah, 1)"); ?> pomohli byste mi to prosím děšifrovat? Jasně už vím přihlášení musí být před tím... když to ale prohodím nedělá nic... |
||
Lonanek Profil |
Jak jsem již v předchozím příspěvku uváděl:
Lonanek: „Samozřejmě před použitím mysql_real_escape_string() již musíte mít připojení do MySQL.“ Tedy na ř.2 mít mysql_real_escape_string() a teprve na ř. 28 připojení do MySQL musí skončit chybou. |
||
problem Profil * |
#9 · Zasláno: 3. 5. 2016, 11:27:18
Já vím uvědomil jsem si to potom...
problem: „Jasně už vím přihlášení musí být před tím... když to ale prohodím nedělá nic...“ Teď to sice neháže chybu, ale nezapisuje to nic |
||
Kajman Profil |
#10 · Zasláno: 3. 5. 2016, 12:56:23
Chybu vypátráte snáze, pokud si budete ověřovat návratové hodnoty funkcí a případně si vypíšete chybu databáze.
|
||
problem Profil * |
#11 · Zasláno: 4. 5. 2016, 13:29:38
Jo to pomohlo sem vůl neměl jsem vybranou tu databázi ... Děkuji moc všem co se snažili ;)
|
||
Časová prodleva: 9 let
|
0