Nejste přihlášeni
Stránky 1
Zdravím,
zhruba kolem středy/čtvrtka (nepamatuju si přesně) mi přestaly fungovat některé formuláře - místo, aby po stisknutí submit proběhl skript, vložená data se vypíší do url adresy. Nejdivnější na tom je, že to vše bez problémů fungovalo a najednou to přestalo. Nenapadá mě absolutně nic, co by to mohlo způsobit (neproběhly žádné úpravy) - nevidím tam totiž žádné souvislosti, na některých stránkách to funguje a někde ne, přestože jsou všechny stránky tvořeny podle jednoho "kopyta".
Nicméně po dlouhém zkoušení a bádání jsem přišel na to, že to způsobuje includovaná hlavička - a to mě také překvapuje, protože je na každé stránce...
Když z kódu vypreparuju hlavičku, běží to, jak má (čili v kódech chyba ani být nemůže, když předtím vše šlapalo).
Pravděpodobně bude chyba někde mezi židlí a klávesnicí, s PHP teprve začínám (nicméně mě opravdu mate fakt, že když už to jednou běželo, proč to najednou nejde...)
Díky za každý nápad nebo návrh.
Offline
chtelo by to konkretni adresu kde se chyba vyskytuje... popr. code sample kde je to jasne videt
W3C validator | Performance tools | Stavové kódy HTTP | Fiddle | Codepen | Ideone | XAMPP
Offline
Děkuji za urychlenou odpověď.
Zde je formulář:
<?
$ja = $_SESSION['id'];
$query = mysql_query("SELECT * FROM `users` WHERE `id`='".$ja."'");
$result = mysql_fetch_assoc($query);
echo '<h3>'.$result['seno'].' <img src="/img/seno.png" height="40"></h3>';
if($result['seno'] <= 99)
{echo '<br><h3>Koupit seno</h3>
<form action="" method="POST"><SELECT NAME="kolik_sena">
<OPTION VALUE="10"> 10 balíků / 500KB
<OPTION VALUE="25"> 25 balíků / 1 250KB
<OPTION VALUE="50"> 50 balíků / 2 500KB
<OPTION VALUE="100"> 100 balíků / 5 000KB
</SELECT><br>
<input type="submit" name="koupit" value="koupit" class="button">
</form>
';}
if(isset($_POST['koupit']) && $result['seno'] <= 99)
{
$cena = $_POST['kolik_sena'] * 50;
$newcena = $result['KB'] + $cena;
$newseno = $result['seno'] + $_POST['kolik_sena'];
$prictiseno = mysql_query("UPDATE `users` SET `seno`='".$newseno."', `KB`='".$newcena."' WHERE `id`='".$_SESSION['id']."'");
$zapsat = mysql_query("INSERT INTO `vypis`(`id`,`kolik`,`duvod`,`kdy`) VALUES ('".$_SESSION['id']."','- ".$cena."','Koupě ".$_POST['kolik_sena']." balíků sena', NOW())");
echo "<script> alert('Seno bylo zakoupeno.')</script><script>window.location.reload()</script>";
}
?>
Samo o sobě to funguje, s tímto dohromady už ne (to je v hlavičce):
<?php
if(empty($r_ava['avatar']) OR !isset($r_ava['avatar']) OR $r_ava['avatar']=='')
{
echo '
<div class="menu_panel" style="width: 400px; padding-left: 630px; padding-top: -10px; color: #DBC0A1;">
<form action="overeni.php" method="POST">
<label for="login">login: </label>';
echo '<input type="text" name="login" size="10">';
echo '<label for="heslo">heslo: </label>';
echo '<input type="password" name="heslo" size="10">';
echo '
<input type="submit" class="button" name="go" value="Go"></br>
</form></div>';
} else
{
$KB = mysql_query("SELECT * FROM `users` WHERE `id`='".$_SESSION['id']."'");
$KKB = mysql_fetch_assoc($KB);
echo '<div class="menu_panel" style="width: 950px; padding-left: 40px; padding-top: 5px;"><li><a href="vypis.php"><img src="img/KB.png" height="15"><b> '.$KKB['KB'].' KB</b></a></li><li><a href="seno.php"><img src="img/seno.png" height="15"><b> '.$KKB['seno'].' balíků</b></a></li></div>
<div style="width: 950px; padding-left: 735px;">';
require_once 'kolik.php'; echo '
<li><form action=""<span style="color: black;"><a href="index.php?odhlasit='.$_SESSION['id'].'">Odhlásit se</a></span></li></div>';
}
?>
A z seno.php se rázem stane např.
seno.php?kolik_sena=10&koupit=koupit
Díky.
Upravil junisek (2014-03-16 01:35:45)
Offline
No môže to znieť divne, ale zmeňte si z
action="POST"
na
action="post"
Je možné, že Váš prehliadač to nepokladá za validné a preto namiesto toho tam dá default hodnotu get. Ďalej, síce to bude mimo danej problematiky, ale odporúčam sa troška zaoberať tématikou session fixation, session hijacking a taktiež aj CSRF. Inak nie som si istý, prečo práve týmto spôsobom máte odhlásenie:
<a href="index.php?odhlasit='.$_SESSION['id'].'">Odhlásit se</a>
Čo ak si do tohto parametra zadán ID iného používateľa? Odhlásim ho tiež (zrejme odhadujem, že v tabuľke zmeníte online z 1 na 0 alebo niečo podobné)?
Portfólio
E-mail: eduard(at)karpiel.sk
Offline
Bohužel,
velké POST nebylo příčinou...
Co se sessions týče, mám to takhle divné, protože jsem právě v rámci hledání nápravy zkoušel různé varianty a už to nevrátil do původního stavu. Nemůže to odhlásit jiného uživatele, je to ještě posichrované jedním SESSION['id']. Nicméně díky za připomínku, vrátím to do původního stavu.
Offline
Páni, taková hloupá chyba...
<form action=""<span style="color: black;"><a href="index.php?odhlasit='.$_SESSION['id'].'">Odhlásit se</a></span></li></div>
Nicméně díky za vaši ochotu a čas
Offline
Stránky 1