#1 2014-03-16 00:24:23

junisek
Endora uživatel
Registrován: 2014-02-09
Příspěvky: 4

[Vyřešeno] Nefunkční POST formuláře

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

#2 2014-03-16 01:21:33

Destroyer
Endora rádce
Registrován: 2009-11-01
Příspěvky: 2,097
Web

Re: [Vyřešeno] Nefunkční POST formuláře

chtelo by to konkretni adresu kde se chyba vyskytuje... popr. code sample kde je to jasne videt

Offline

#3 2014-03-16 01:33:00

junisek
Endora uživatel
Registrován: 2014-02-09
Příspěvky: 4

Re: [Vyřešeno] Nefunkční POST formuláře

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

#4 2014-03-16 14:03:40

Lkopo
Podpora
Registrován: 2010-02-12
Příspěvky: 1,916
Web

Re: [Vyřešeno] Nefunkční POST formuláře

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

#5 2014-03-16 14:27:07

junisek
Endora uživatel
Registrován: 2014-02-09
Příspěvky: 4

Re: [Vyřešeno] Nefunkční POST formuláře

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

#6 2014-03-16 14:44:02

Lkopo
Podpora
Registrován: 2010-02-12
Příspěvky: 1,916
Web

Re: [Vyřešeno] Nefunkční POST formuláře

Smiem vidieť adresu k danému scriptu, kde to skúšate?

/edit: Asi sme našli, kde je zakopaný pes. Pri odhlásení tam máte toto:

<form action=""

Portfólio
E-mail: eduard(at)karpiel.sk

Offline

#7 2014-03-16 14:51:33

junisek
Endora uživatel
Registrován: 2014-02-09
Příspěvky: 4

Re: [Vyřešeno] Nefunkční POST formuláře

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 smile

Offline

#8 2014-03-16 14:53:14

Lkopo
Podpora
Registrován: 2010-02-12
Příspěvky: 1,916
Web

Re: [Vyřešeno] Nefunkční POST formuláře

Práve som to písal do editu big_smile Každopádne sme radi, že sa problém vyriešil.


Portfólio
E-mail: eduard(at)karpiel.sk

Offline

Zápatí

Založeno na FluxBB | CZ a SK