Autor | Zpráva | ||
---|---|---|---|
JunekCZ Profil |
#1 · Zasláno: 9. 10. 2015, 20:35:36 · Upravil/a: Moderátor (editace znemožněna) 9. 10. 2015, 22:26:21
Dobrý den.
Dělám stránku pro kamaráda s administrací profilu a novinek. Vše v kódu funguje jak má, ale když chci přidat novinku přesměruje mě to na uzivatel.php namísto uzivatel.php?id=2 a vypíše špatný odkaz v url (Tato funkce se nachází ihned na začátku kódu.) <?php session_start(); header('Content-type: text/html;charset=UTF-8'); require_once 'db.php'; if(isset($_GET['id']) AND $_GET['id']!='') { $id = stripslashes(htmlspecialchars(trim($_GET['id']))); if(!preg_match("|^[\d]+$|", $id)) { exit("Id musí být číselná hodnota."); } else { if(!empty($_SESSION['login']) AND !empty($_SESSION['heslo'])) { $login = $_SESSION['login']; $heslo = $_SESSION['heslo']; $over = mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."' AND `pass`='".$heslo."'"); if(mysql_num_rows($over)!=0) { $res_over = mysql_fetch_assoc($over); $query = mysql_query("SELECT * FROM `users` WHERE `id`='".$id."'"); if(mysql_num_rows($query)!=0) { $result = mysql_fetch_assoc($query); } else { exit("Uživatel neexistuje."); } } else { exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům."); } } else { exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům."); } } } else { exit("Špatný parametr v URL."); } echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Novinky</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" > </head> <body>'; echo '<div id="navigace"><a href="uzivatel.php?id='.$res_over['id'].'">Můj profil</a> <a href="index.php">Hlavní stránka</a> <a href="admin.php">Novinky</a> <a href="all_users.php">Seznam uživatelů</a> <a href="index.php?action=odhlasit_se">Odhlásit se</a></div> <div id="borderdole" style="border-bottom: 1px solid silver; width: 100%; height: 20px;"></div> <h1 name="Uvitani" class="Uvitani">Ahoj '.$result['login'].'</h1>'; if($result['login'] == $login) { echo '<br> <div id="doprostred"> <form action="update_user.php" method="POST"> <div><label for="login"><h4>Váše přihlášovací údaje: </h4><strong><h4>'.$result['login'].'</strong> - změnit jméno:</h4></label></div> <div><input name="login" type="text"> <input type="submit" name="submit" class="btn" value="změnit"></div> </form> <br> <form action="update_user.php" method="POST"> <div><label for="heslo"><h4>Změnit heslo:</h4></label></div> <div><input name="heslo" type="password"> <input type="submit" name="submit" class="btn" value="změnit"></div> </form> <br> <form action="update_user.php" method="POST" enctype="multipart/form-data"> <div><label for="avatar"><h4>Váš avatar:</h4></label></div> <div><img alt="avatar" src=avatar/'.$result['avatar'].'><br> <h4>Obrázek musi být ve formatu jpg, gif nebo png. Změnit avatar:</h4></div> <div><input type="FILE" name="avatar"> <input type="submit" name="submit" class="btn" value="změnit"></div> </form> </div> <br> <h4><p>Soukromé zprávy:</p></h4> '; $q_message = mysql_query("SELECT * FROM `message` WHERE `prijemce`='".$login."' ORDER BY `id` DESC"); if(mysql_num_rows($q_message)!=0) { while($r_message = mysql_fetch_assoc($q_message)) { $odesilatel = $r_message['odesilatel']; $q_avatar = mysql_query("SELECT `id`,`avatar` FROM `users` WHERE `login`='".$odesilatel."'"); $r_avatar = mysql_fetch_assoc($q_avatar); if(!empty($r_avatar['avatar'])) { $avatar = $r_avatar['avatar']; } else { $avatar = "no_avatar.jpg"; } echo ' <table style="border:2px solid #ddd;"> <tr> <td style="border-right:2px solid #ddd; padding:5px;"> <a href="uzivatel.php?id='.$r_avatar['id'].'"><img src="avatar/'.$r_avatar['avatar'].'" width="90" height="90" alt="avatar"></a> </td> <td> <div id="zpravicky"> <div> <font color="white">Odesílatel: </font><font color="black"><a style="color: black;" href="uzivatel.php?id='.$r_avatar['id'].'">'.$odesilatel.'</a></font></div> <div> <font color="white">Datum: </font>'.$r_message['date'].'</div> <div> <font color="white">Zpráva: </font><br> '.$r_message['zprava'].' </div> <div style="border-top:1px dashed #ccc; text-align:right;"><a href="del_post.php?id='.$r_message['id'].'">odstranit</a></div> </div> </td> </tr> </table> '; } } else { echo "Zprávy nejsou."; } } else { echo ' <div><img src="avatar/'.$result['avatar'].'" alt="avatar"></div> <form action="new_zprava.php" method="POST"> <div>Odeslat zprávu uživateli '.$result['login'].'</div> <div><textarea cols="50" rows="5" name="zprava"></textarea></div> <input type="hidden" name="prijemce" value="'.$result['login'].'"> <input type="hidden" name="id" value="'.$result['id'].'"> <div><input type="submit" name="submit" value="Odeslat"></div> </form>'; } if (!isset($_POST['submit'])) { ?> <link href="style/style.css" rel="stylesheet" type="text/css" /> <script language="javascript" type="text/javascript" src="js/tiny_mce.js"></script> <script language="javascript" type="text/javascript"> tinyMCE.init({ mode : "textareas", theme : "advanced", theme_advanced_buttons3 : "", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", });</script> <div id="main"> <div id="caption"><h2>Přidat novinku</h2></div> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <h4>Nadpis novinky:</h4><br/> <input type="text" name="title" size="40"/><br/><br/> <h4>Novinka (zpráva):</h4><br/> <textarea name="newstext" rows="15" cols="67"></textarea><br/> <center><?php echo '<a href="uzivatel.php?id='.$res_over['id'].'">'; php?><input type="submit" name="submit" class="btn" value="Save" /></a></center> </form> <?php } else { $newsTitel = isset($_POST['title']) ? $_POST['title'] : 'Untitled'; $submitDate = date('d.m H:i'); $newsContent = isset($_POST['newstext']) ? $_POST['newstext'] : 'No content'; $filename = date('YmdHis'); $f = fopen('news/'.$filename.".txt","w+"); fwrite($f,$newsTitel."\n"); fwrite($f,$submitDate."\n"); fwrite($f,$newsContent."\n"); fclose($f); header('Location:uzivatel.php?id=2'.$res_over['id']); } ?> </body> </html> Předem děkuji za odpověď. |
||
sitole Profil |
Proč sem dáváš tak dlouhý kod? Jinak myslím si, že tohle se tu řešilo.
header('Location:uzivatel.php?id=2'.$res_over['id']); |
||
JunekCZ Profil |
Alphard:
Děkuji, zkoušel jsem to, ale oběvilo se neště více chyb. sitole nechtěně jsem tam napsal ?id=2, ta 2 ta normálně není. kód stále nefunguje. Moderátor Alphard: Opravil jsem. (A smazal několik nyní již zbytečných příspvěků.)
|
||
sitole Profil |
#4 · Zasláno: 9. 10. 2015, 21:55:55
A co má být výsledek? Pochopil jsem, že to má přesměrovat na stránku, která bude obsahovat v
?id proměnnou $res_over['id'] ?
$res_over['id'] = "Ahoj, tak to opravdu funguje.."; header("Location:uzivatel.php?id=".$res_over['id']); |
||
yFang Profil |
#5 · Zasláno: 9. 10. 2015, 21:58:12
JunekCZ:
Předpokládám, že ten kód v ukázce je uzivatel.php, tím pádem „ <form action="<?php echo $_server['php_self']; ?>" method="post"> “
vede na stránku uzivatel.php, není nastaven parametr id a neprojde to hned tou první podmínkou. |
||
mimochodec Profil |
#6 · Zasláno: 9. 10. 2015, 22:03:44
sitole:
$res_over['id'] = "Ahoj, tak to opravdu funguje.."; header("Location:uzivatel.php?id=".$res_over['id']); co to je? |
||
JunekCZ Profil |
sitole:
To je ID uživatele (Např v tabulce bude Uživatel Michal, který má ID 2, tak to načte uživatele s ID 2.) |
||
mimochodec Profil |
#8 · Zasláno: 9. 10. 2015, 22:17:41
JunekCZ:
Nedá se v tom vyznat, oprav si to. Tohle je chyba: header('Location:uzivatel.php?id=2'.$res_over['id']); |
||
sitole Profil |
#9 · Zasláno: 9. 10. 2015, 23:09:48
mimochodec, JunekCZ:
Já jsem to pochopil, ale snažil jsem se to malinko popsat. Dle "ID" to asi opravdu nebude nadpis že? :) mimochodec: Máš v kodu bordel a při tvorbě dlouhého kodu se neboj vše okomentovat pomocí // Komentář či /* Komentář */
|
||
lionel messi Profil |
sitole:
> mimochodec: > Máš v kodu bordel a při tvorbě dlouhého kodu se neboj vše okomentovat pomocí // Komentář či /* Komentář */
Ani s komentármi to netreba preháňať, viď Jak psát kód: Nepřežeňte to s komentáři. JunekCZ: Skôr než cestou, ktorú naznačil sitole a ktorá povedie k zvýšeniu objemu kódu, no jeho čitateľnosť nijak markantne nezlepší, by som sa uberal smerom k oddeleniu logiky od výstupu, atď. |
||
JunekCZ Profil |
#11 · Zasláno: 10. 10. 2015, 10:55:25 · Upravil/a: Moderátor (editace znemožněna) o 10 minut později
mimochodec:
Ano, tuto chybu jsem již zmínil JunekCZ: > sitole > nechtěně jsem tam napsal ?id=2, ta 2 ta normálně není. kód stále nefunguje. Dobrá tedy. Dejme tomu, že se budeme zajímat pouze o tyto dvě části kódu: 1. <?php session_start(); header('Content-type: text/html;charset=UTF-8'); require_once 'db.php'; if(isset($_GET['id']) AND $_GET['id']!='') { $id = stripslashes(htmlspecialchars(trim($_GET['id']))); if(!preg_match("|^[\d]+$|", $id)) { exit("Id musí být číselná hodnota."); } else { if(!empty($_SESSION['login']) AND !empty($_SESSION['heslo'])) { $login = $_SESSION['login']; $heslo = $_SESSION['heslo']; $over = mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."' AND `pass`='".$heslo."'"); if(mysql_num_rows($over)!=0) { $res_over = mysql_fetch_assoc($over); $query = mysql_query("SELECT * FROM `users` WHERE `id`='".$id."'"); if(mysql_num_rows($query)!=0) { $result = mysql_fetch_assoc($query); } else { exit("Uživatel neexistuje."); } } else { exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům."); } } else { exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům."); } } } else { exit("Špatný parametr v URL."); } A 2. <?php if (!isset($_POST['submit'])) { ?> <link href="style/style.css" rel="stylesheet" type="text/css" /> <script language="javascript" type="text/javascript" src="js/tiny_mce.js"></script> <script language="javascript" type="text/javascript"> tinyMCE.init({ mode : "textareas", theme : "advanced", theme_advanced_buttons3 : "", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", });</script> <div id="main"> <div id="caption"><h2>Přidat novinku</h2></div> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <h4>Nadpis novinky:</h4><br/> <input type="text" name="title" size="40"/><br/><br/> <h4>Novinka (zpráva):</h4><br/> <textarea name="newstext" rows="15" cols="67"></textarea><br/> <center><?php echo '<a href="uzivatel.php?id='.$res_over['id'].'">'; php?><input type="submit" name="submit" class="btn" value="Save" /></a></center> </form> <?php } else { $newsTitel = isset($_POST['title']) ? $_POST['title'] : 'Untitled'; $submitDate = date('d.m H:i'); $newsContent = isset($_POST['newstext']) ? $_POST['newstext'] : 'No content'; $filename = date('YmdHis'); $f = fopen('news/'.$filename.".txt","w+"); fwrite($f,$newsTitel."\n"); fwrite($f,$submitDate."\n"); fwrite($f,$newsContent."\n"); fclose($f); header('Location:uzivatel.php?id=2'.$res_over['id']); } ?> Myslím si, že chyba je někde zde, ale nedokázal jsem jí stále najít. Moderátor juriad: Doplněno <?php pro správné obarvení.
|
||
Keeehi Profil |
#12 · Zasláno: 10. 10. 2015, 11:09:33
var_dump($res_over['id']); exit; header('Location:uzivatel.php?id=2'.$res_over['id']); Doufám, že je jasné že toto nemá být řešení ale způsob, jak vůbec odhalit, kde chyba je. |
||
Davex Profil |
#13 · Zasláno: 10. 10. 2015, 11:38:05
JunekCZ:
Asi jsi ignoroval dost důležitou radu. Chyba je jednoznačně v místě, o kterém psal už [#5] yFang. |
||
JunekCZ Profil |
#14 · Zasláno: 10. 10. 2015, 12:06:29
Davex:
Děkuji, nějak jsem tento komentář přehlédl. A jak by se tedy dala tato chyba opravit? Nic mě bohůžel nenapadá :/. |
||
Keeehi Profil |
#15 · Zasláno: 10. 10. 2015, 12:15:35
JunekCZ:
Část s action úplně vynechat. |
||
Časová prodleva: 10 let
|
0