Autor | Zpráva | ||
---|---|---|---|
Scrash Profil |
#1 · Zasláno: 27. 10. 2010, 00:27:14
Zdarec, fakt už nechápem, kde je chyba.. Sedím u primitivního kódu 3 hodiny, tak kdyby byl někdo tak hodný a podíval se na to.
config.php: <?php $db_host = "localhost"; $db_user = "root"; $db_pass = ""; $db_name = "chobot"; ?> index.php: <?php require_once "config.php"; echo "<html>\n<head>\n"; echo "<title>JF Příbraz</title>\n"; echo "</head>"; echo "<table align='center' border='0' height='100%'>\n<tr><td>\n"; if(!isset($_POST["odeslat"])){ echo "<table align='center' border='0' style='border: 1px solid #000'>\n"; echo "<form method='post' action='index.php' enctype='multipart/form-data'>\n"; echo "<tr><td width='150'>Jméno:</td><td><input type='text' name='jmeno'></td></tr>\n"; echo "<tr><td width='150'>Příjmení:</td><td><input type='text' name='prijmeni'></td></tr>\n"; echo "<tr><td width='150'>Ulice:</td><td><input type='text' name='ulice'></td></tr>\n"; echo "<tr><td width='150'>Směrovací číslo:</td><td><input type='text' name='smer_cis'></td></tr>\n"; echo "<tr><td width='150'>Číslo popisné:</td><td><input type='text' name='popi_cis'></td></tr>\n"; echo "<tr><td width='150'>E-mail:</td><td><input type='text' name='mail'></td></tr>\n"; echo "<tr><td colspan='2'><div align='center'><input type='submit' name='odeslat' value='Zaregistrovat'></div></td></tr>\n"; echo "</form>"; echo "</table>\n"; } if(isset($_POST["odeslat"])){ if(trim($_POST["jmeno"]) == ""){ echo "Zadejte jméno !<br />"; } if(trim($_POST["prijmeni"]) == ""){ echo "Zadejte příjmení !<br />"; } if(trim($_POST["ulice"]) == ""){ echo "Zadejte ulici !<br />"; } if(trim($_POST["smer_cis"]) == ""){ echo "Zadejte směrovací číslo !<br />"; } if(trim($_POST["popi_cis"]) == ""){ echo "Zadejte číslo popisné !<br />"; } if(trim($_POST["mail"]) == ""){ echo "Zadejte e-mailovou adresu !<br />"; }else{ $spojeni = mysql_connect($db_host, $db_user, $db_pass) or die("Chyba pri spojeni s MySQL : " . mysql_error()); $db = mysql_select_db($db_name) or die("Chyba pri vyberu databaze"); $result = mysql_query("INSERT INTO ".$db." . registrace (datum, jmeno, prijmeni, ulice, smer_cis, pipi_cis, email) VALUES (".date("d. m. Y - H:i:s").", ".$_POST["jmeno"].", ".$_POST["prijmeni"].", ".$_POST["ulice"].", ".$_POST["smer_cis"].", ".$_POST["popi_cis"].", ".$_POST["mail"].")"); echo "<div align='center'>Požadavek byl bezpečně odeslán, děkujeme za registraci."; echo "<br />".date("d. m. Y - H:i:s")."</div>"; } echo "<div align='center'><a href='index.php' style='color: red'>Zpět</a></div>"; } echo "</td></tr>\n</table>\n"; echo "<body>\n"; echo "</body>\n</html>\n"; ?> |
||
Alphard Profil |
#2 · Zasláno: 27. 10. 2010, 00:33:33 · Upravil/a: Alphard
Bylo by dobré napsat, v čem je vlastně problém…
Řetězcové hodnoty vkládané do databáze (řádek 63) obalte apostrofy. Vkládání aktuálního data je takto zbytečně složité. Dejte sloupci typ datetime a použijte MySQL fci now().
Doplnění 1: Kdybyste použil mysql_error() i za insertem, zjistil byste to před 3 hodinami. Doplnění 2: Co bezpečnost? mysql_real_escape_string() |
||
Scrash Profil |
#3 · Zasláno: 27. 10. 2010, 01:24:01 · Upravil/a: Scrash
Alphard:
Děkuji za radu, popis problému jsem omylem umazal, bylo tam že se nic nezapíše do DB.. Po použití mysql_error jsem na chybu přišel. Tady je část kódu pro zápis do DB, kdybyste byl ochotný a poupravil jej pro jeho 100% funkčnost, ale myslím si že nebude třeba. $spojeni = mysql_connect($db_host, $db_user, $db_pass) or die("Chyba pri spojeni s MySQL : " . mysql_error()); $db = mysql_select_db($db_name, $spojeni) or die("Chyba pri vyberu databaze"); $insert = mysql_query("INSERT INTO registrace (datum, jmeno) VALUES (NOW(), '".mysql_real_escape_string($_POST["jmeno"].)"')") or die("Chyba pri vkladani udaji do databaze" .mysql_error()); |
||
Alphard Profil |
#4 · Zasláno: 27. 10. 2010, 01:38:00
Scrash:
„kdybyste byl ochotný a poupravil jej pro jeho 100% funkčnost, ale myslím si že nebude třeba.“ Také myslím. Nic do očí bijící tady není. Ten styl pevně napsaného or die … mysql_error() je sice pofidérní, ale dokud nedojdete k nějakému layeru, např. dibi, nedá se nic dělat. Jinak to vypadá funkčně, efektivně a bezpečně. |
||
Časová prodleva: 14 let
|
0