| 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: 10 let
|
|||
0