Autor | Zpráva | ||
---|---|---|---|
David Mokan Profil |
#1 · Zasláno: 21. 2. 2021, 23:51:52
Zdravíčko, našel jsem kód pro fórum, a chtěl bych se zeptat, proč to nepostne do topics_o odpověď a vyhlásí to error.
<?php if (isset($_SESSION['realname'])) { if(isset($_POST['content']) and $_POST['content']!=''){ $message = $_POST['content']; if(get_magic_quotes_gpc()){$message = stripslashes($message);} $message = $db_web_conn-> real_escape_string($message); if(mysqli_query($db_web_conn, 'insert into topics_o (parent, id, id2, title, message, authorid, timestamp, timestamp2) select "'.$dn1['parent'].'", "'.$id.'", "", "", "'.$message.'", "'.$nick.'", "'.time().'", "'.time().'" from topics where id="'.$id.'"') /*and mysqli_query($db_web_conn, 'update topics_o set id2=id2+1 where id="'.$id.'"')*/ ){?> <meta http-equiv="refresh" content="0; url=/forum/detail/<?php echo $id;?>"> <?php }else{echo 'Vyskytla se chyba.';}}else{?> <form action="" method="POST"> <p> <label> <textarea style="height:166px" maxlength="5000" name="content" class="bbEditor"></textarea> </label> </p> <ul class="inline-block-list"> <li> <button type="submit" class="button purple" name="add-reply">Odeslat</button> </li> </ul> </form> <?php }}else{;?> <center><h1>Pro přidání komentáře musíš být přihlášen!</h1></center> <?php }; ?> Děkuji moc za rady. David |
||
Keeehi Profil |
#2 · Zasláno: 21. 2. 2021, 23:58:37
A jak máme vědět, jaký error se zobrazil? Nějaký PHP, nebo něco o SQL, nebo máš na mysli to "Vyskytla se chyba"?
|
||
David Mokan Profil |
#3 · Zasláno: 22. 2. 2021, 06:39:36
Myslim tu chybu vyskytla se chyba.
|
||
anonym_ Profil * |
Tím dotazem se na telefonu probírat nechci, vypis si mysql_error. Chybova hláska ti řekne co a kde je špatně.
Prosím, premxslej o te chybě, nez ji sem obratem bezhlavě nakopirujes. Autpkorekce na telefonu, mysqli_error samozrejme. |
||
Kajman Profil |
Jak si vypsat chybu je v obou FAQ
Nejčastější potíže s PHP (FAQ) » Warning mysql_*: supplied argument is not a valid MySQL result resource… Některé časteji řešené dotazy pro MySQL - FAQ » Jak si vypsat chybu Navíc pozor, že v kódu ošetřujete jen $message a ostatní hodnoty mohou být cílem pro sql injection (např. se někdo zaregistruje se školivým nickem). |
||
lionel messi Profil |
#6 · Zasláno: 22. 2. 2021, 21:16:19
David Mokan:
Celý kód nie je práve najkvalitnejší. Kombinácia magic_quotes, real_escape_string, objektového a procedurálneho prístupu k db... Možno by stálo za úvahu zahodiť a napísať lepší. Alebo nájsť iný tutoriál či niekoho, kto ho lepšie napíše. SQL na r. 7 je na prvý pohľad dosť divoké, je otázka, či je vhodné ho takto skladať a či nie je lepšie siahnuť po nejakej db vrstve, prípadne si na to skúsiť napísať nejaký vlastný handler. Vážne máš id v db ako string (reťazec) a nie ako int? Ak nie, netreba dané hodnoty pri vkladaní do db dávať do úvodzoviek. Tipnem si, že chyba bude v tom, že timestamp je v sql kľúčové slovo pre rovnomenný dátový typ. Čo s tým? Máš na výber 2 možnosti: 1) Vyhýbaj sa kolíziám názvov stĺpcov s kľúčovými slovami sql. 2) Ak sa nemôžeš/nechceš vyhnúť, obaľ daný názov stĺpca do spätných apostrofov ` . Na českej klávesnici je to pravý alt + ý (na hornom riadku klávesnice).
'insert into topics_o (parent, id, id2, title, message, authorid, `timestamp`, timestamp2) select "'.$dn1['parent'].'", "'.$id.'", "", "", "'.$message.'", "'.$nick.'", "'.time().'", "'.time().'" from topics where id="'.$id.'"' |
||
Časová prodleva: 3 roky
|
0