Autor Zpráva
Werewolf
Profil
Zdravím, mám problém se sessions:
- Pokud není "setnuta" session, zobraz login form.
- Pokud je setnuta, zobraz ankety v databázi.
- Pokud je setnuta a k tomu je action == "new", zobraz form pro novou anketu.
- Pokud je setnuta a k tomu je action == "edit", zobraz form pro editaci ankety.
- Pokud je setnuta a k tomu je action == "logout", "unsetni" ji.

A ten problém: Při zadání hesla do login formu se nic nestane, až pokud ho zadám podruhé, zobrazí se ankety v databázi.
Kód:

admin.php
<?php
	session_start();
	$seet = "tryanks_ank";
	mysql_pconnect("localhost", "admin", "loling") or die("mysql_pconnect() selhal");
	mysql_select_db("default") or die("mysql_select_db() selhal");
	$pass = @$_SESSION['anks_logps'];
	$ps = "df53ca268240ca76670c8566ee54568a";
	$act = @$_GET['action'];
	if($pass != $ps || !isset($pass)) { $inc = "ai/ps.php"; $tt = "Pro vstup zadejte heslo!"; }
	if($pass == $ps && $act == 0) { $inc = "ai/act0.php"; $tt = "Přehled anket"; }
	if($pass == $ps && $act == "new") { $inc = "ai/new.php"; $tt = "Nová anketa"; }
	if($pass == $ps && $act == "edit") { $inc = "ai/edit.php"; $tt = "Editovat anketu"; }
	if($pass == $ps && $act == "logout") { $tt = "Odhlásit se"; Header("Location: ?"); session_destroy(); }
	if($pass == $ps && !isset($act)) { Header("Location: ?action=0"); }
	?>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta name="copyright" content="Werewolf" />
  <title>Anketní systém | <?php echo($tt); ?></title>
  <style>
   #menu {position: fixed; left: 0px; bottom: 0px; top: 0px; height: 100%; width: 200px; text-align: center; vertical-align: top; background-color: rgb(138, 138, 255);}
   #mnitm {background-color: rgb(0, 0, 100); border: 3px solid red; width: 85%; height: 50px; margin: 20px auto; vertical-align: center; cursor: pointer;}
   #menu A {text-decoration: none; font-family: Comic Sans MS; font-weight: bold; font-size: 12pt; color: white;}
   #bottom {text-align: center; position: fixed; bottom: 0px; left: 0px; right: 0px; height: 20px; background-color: green; font-family: Courier New; color: white;}
   TH {text-align: right; padding-right: 20px; border-right: 1px solid black; font-family: Comic Sans MS; font-size: 120%; width: 30%; width: 50%;}
   TD {text-align: left; padding-left: 20px; border-left: 1px solid black; font-family: Comic Sans MS; font-size: 90%; width: 50%;}
   FORM.new {margin: 25px;}
   FORM.new FIELDSET LEGEND {font-family: Tahoma; font-size: 16pt; color: brown; padding: 20px;}
   VOL {width: 25px;}
   #content {position: absolute; left: 200px; bottom: 20px; top: 0px; right: 0px; padding: 10px;}
   TD.submit {border: none; text-align: right; height: 50px; vertical-align: botttom;}
   TABLE.act0 TD {border: 1px solid black; padding: 3px; font-weight: bold; width: 1%;}
   TABLE.act0 TH {border: 1px solid blue; padding: 5px; text-align: center; font-size: 12pt; font-family: Arial; width: 1%;}
   TABLE.edit TD, TABLE.edit TH {border: none; padding: 5px; text-align: left;}
  </style>
 </head>
 <body>
  <div id="menu">
	<div id="mnitm" onClick="location.assign('?password=<?php echo($pass); ?>&action=0');">
	<a href="?password=<?php echo($pass); ?>&action=0" title="Přehled anket, které sem dávali jiní">Přehled anket</a></div><hr />
	<div id="mnitm" onClick="location.assign('?password=<?php echo($pass); ?>&action=new');">
	<a href="?password=<?php echo($pass); ?>&action=new" title="Vytvořit novou anketu">Nová anketa</a></div><hr />
	<div id="mnitm" onClick="location.assign('?password=<?php echo($pass); ?>&action=edit');">
	<a href="?password=<?php echo($pass); ?>&action=edit" title="Editovat anketu zadáním hesla a ID">Editovat anketu</a></div><hr />
	<div id="mnitm" onClick="location.assign('?password=<?php echo($pass); ?>&action=logout');">
	<a href="?password=<?php echo($pass); ?>&action=logout" title="Odhlásit se">Odhlásit se</a></div>
  </div>
  <div id="content">
	<?php if(isset($nt)) { echo($nt."<br /><br />"); } include($inc); ?>
  </div>
  <div id="bottom">
	... ... ...
  </div>
 </body>
</html>


ai/ps.php
<form action="http://<?php echo($_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']); ?>" method="post">
<h1>Pro vstup musíte zadat heslo!</h1>
<input type="password" name="enterps" /> &nbsp; &nbsp; <input type="submit" name="entersb" value="OK" />
</form>
<?php @$_SESSION['anks_logps'] = md5($_POST['enterps']); ?>


Nevíte, prosím, někdo, čím to je? Díky
AM_
Profil
Protože ho ze začátku taháš ze session místo z POSTu. Nejdřív musíš ošetřit, jestli neposlal heslo POSTem, uložit ho do SESSION, a pak až ho kontrolovat.
Werewolf
Profil
Edit:
[...smazáno...]
Vyřešeno, díky :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: