| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 25.10.08 Prihlásený: 24.12.10 Príspevky: 12 Témy: 4 |
Zdravim. mam nasledovny problem. chcem data s formularu na stranke zapisat do databazy. vyplnim formular, stlacim odoslat, vypise mi ze sa vsetko podarilo ale jedine co sa doplni je id (auto_increment). Ostatne hodnoty su prazdne.
insert-story.php (súbor s formulárom)
Kód: <form action="uloz.php" method="post">
<fieldset><legend>Pridať pokračovanie príbehu</legend>
text:<br /> <textarea name="text" rows="20" cols="105"></textarea> <br />
heslo:<br /> <input name="pass" type="text" /><br />
<input type="submit" value="Vložiť pokračovanie" /><br />
</fieldset></form> uloz.php (subor do ktoreho sa postnu data s formularu) Kód: <?php require_once("mysql.php");
$_POST['text'] = $text;
$_POST['pass'] = $pass;
$sql = mysql_query("INSERT INTO story(text,pass) VALUES('$text','$pass')");
if($sql){
echo "Záznam bol úspešne vložený do databázy!";
} else {
echo "Záznam sa nepodarilo vložiť do databázy! Becaose of pink elephant!";
}
mysql_close();
?> mysql.php (subor s loginom do db) Kód: <?php
define("SERVER","localhost");
define("LOGIN","mystery");
define("PASS","*****");
define("DATABASE","mystery");
$dbc = mysql_connect(SERVER,LOGIN,PASS) or die('Pripojenie k serveru zlyhalo! Because of pink elephant!');
mysql_select_db(DATABASE) or die('Nepodarilo sa označiť databázovú tabuľku!');
?>
http://deafboy.cicolina.org/fileman/directory2index/work/db.png
Pani, trapim sa s tym uz niekolko hodin. prosim o radu.
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 09.11.2008 15:33 | |
|
snad Kód: $text = $_POST['text']; $pass = $_POST['pass'];
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 25.10.08 Prihlásený: 24.12.10 Príspevky: 12 Témy: 4 | Napísal autor témy Deafboy: 09.11.2008 18:44 | |
|
Srdecna vdaka... takto to funguje
Kód: $text = $_POST['text']; $pass = $_POST['pass'];
len ma este trapi ci je normalne ak mi to do textoveho pola zapisuje vo forme "0x706973616e792074657874"
|
|
Registrovaný: 17.10.06 Prihlásený: 08.01.11 Príspevky: 1752 Témy: 17 | Napísal suchy: 09.11.2008 19:22 | |
|
akeho typu mas dane stlpce?
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
ok takže ešte by som pohodkol:
1, tabuľka má zlú architektúru
2, tvoj kód je nezabezpečený a je veľmi jednoduché spraviť naň útok
3, úvodný príspevok sa mi páči je veľmi jasný
4, nie, nie je bežné že ti zapisuje tento tvar, na text odporúčam typ TEXT a na názov VARCHAR
|
|
Registrovaný: 25.10.08 Prihlásený: 24.12.10 Príspevky: 12 Témy: 4 | Napísal autor témy Deafboy: 13.11.2008 15:57 | |
|
No ako reakciu na to ze mam kod nezabezpeceny, musim povedat ze je to moja prva (resp. druha) stranka v php+sql a budem rad, ked to vobec pojde. Veci zabezpecenia budem riesit potom ked to bude fungovat
Zistil som ze zapisovanie textu v tej divnej forme je v poriadku (struktura tabulky je v screene v prvom poste)
Mám ale ďalší problém (nechcem zakladat novy topic aby som to tu moc nezabordelil). K veci... chcem porovnat heslo ktore uzivatel napise na stranku (nie login, pusti ho to k dalsiemu textu ktory vytiahne z db) s heslom ktore je v databaze k danemu clanku. Vypise mi to sice ze hesla su zhodne, ale pritom tam mozem napisat cokolvek. Pre ukazku som dal pred porovnanim vypisat zadane heslo a heslo v db.
Subor s formularom:
Kód: ... <div align="center" width="300"> <form action="check.php" method="post">
<fieldset><legend>Ďalej</legend>
heslo:<br /> <input name="inpass" type="text" />
<input type="submit" value="Prečítať pokračovanie" /><br />
</fieldset></form> </div> ... check.phpKód: <?php require_once("mysql.php");
mysql_select_db(DATABASE) or die('Nepodarilo sa označiť databázovú tabuľku!');
$sql = mysql_query("SELECT * FROM story"); $data = mysql_fetch_array($sql); echo $data["pass"]; echo $_POST['inpass'];
if ($_POST['inpass'] = $data["pass"]){ echo "Heslá sa zhodujú"; } else { echo "Heslá sa nezhodujú"; }
mysql_close(); ?>
Pravdepodobne tam mam len nejaku sprostost spravenu ako v pripade vyssie, trapim sa nad tym niekolko dni .
Odkaz na stranku: http://deafboy.cicolina.org/mystery/
formular na zadanie hesla sa nachadza dolu (ale to sa myslim neda priehliadnut)
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 13.11.2008 16:09 | |
|
V tomto prípade ide o klasický problém dvojitého rovná sa. Ty máš na inkriminovanom riadku Kód: if ($_POST['inpass'] = $data["pass"]){ . V skutočnosti ale = nie je operátor porovnávania ale priraďovania a tak sa stane, že do premennej $_POST['inpass'] sa zapíše obsah premennej $data['pass'] a keďže táto operácia prebehne bez problémov, výraz sa vyhodnotí ako logické true a prejde sa do príslušnej časti podmienky. Celý problém zanikne, akonáhle začneš namiesto priraďovania porovnávať: Kód: if ($_POST['inpass'] == $data["pass"]){
Niektoré jazyky nedovoľujú priraďovanie v podmienkach (a teraz neviem, či to je C#, Java, Python alebo Ruby, prosím niekoho, kto to vie presne, nech sa ozve) a tak sa jednoducho týmto chybám vyhnú, iné jazyky na priraďovanie používajú napr. operátor := (alebo :-, napr. Prolog).
Niektoré kompilátory na priraďovanie v podmienkach upozorňujú warningami (alebo sa mi to len zdá a je to len moje zbožné želanie? opäť, ak to niekto vie presne, nech sa ozve).
Situácia v PHP je však taká, že niekedy sa priraďovanie priamo v podmienke používa a naviac je PHP interpretovaný jazyk, takže žiadne upozornenia ani chyby to nevyvolá. Preto treba byť pri písaní (aj čítaní) kódu dôsledný, študovať manuál, a testovať, testovať, testovať.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|