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