Autor | Zpráva | ||
---|---|---|---|
kabanos Profil * |
#1 · Zasláno: 24. 6. 2008, 09:22:55
Ahoj,
mám stránku index.php s jednoduchým formulářem: <?php session_unset(); session_start(); $_SESSION['ok'] = 0; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head><meta http-equiv=content-type content="text/html; charset=windows-1250"><title></title></head> <body> <form action="page.php" method="post" target=_top> <input type="password" name="heslo"><input type="submit" value="VSTUP"> </form> </body> </html> a stránku page.php: <?php session_start(); include("./funkce/mysql.php"); //konfigurace mysql $pass = $_POST['heslo']; $sql = mysql_query('SELECT * FROM data WHERE heslo='.$pass.';'); $info = mysql_fetch_array($sql); $y = $info[0]; if ($y != '') { $_SESSION['ok'] = 1; $sql = "SELECT id FROM login LIMIT 1;"; $row = mysql_fetch_array(mysql_query($sql)); if(!$row) { $sql = "INSERT INTO login SET identifikace = '$y'; "; mysql_query($sql); } else { $sql = 'SELECT id FROM login ORDER BY id DESC;'; $query = mysql_query($sql) or die('Chyba databaze.'); $i = 2; $radek = ''; while($row = mysql_fetch_array($query)) { if($i == 10) { $radek = $row[id]; break; } $i++; } $sql = "INSERT INTO login SET identifikace = '$y';"; mysql_query($sql) or die('Chyba databaze.'); } } else { echo '<p>Nemáte oprávnění k prohlížení této stránky</p>'; echo '<a href="#" onclick="window.open(\'index.php\', \'_top\');return false;">Zpět</a>'; exit(); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head><meta http-equiv=content-type content="text/html; charset=windows-1250"><title></title></head> <body>Vítám tě!!!!</body> </html> Po odeslání naskočí stránka page.php, která porovná heslo s databází hesel a pokud souhlasí nastaví $_SESSION['ok'] = 1; a zapíše mi do databáze nové přihlášení. Toto mi funguje až na to, že pokud dám na stránce page.php refresh, tak se do databáze přidá další přihlášení,.. což nechci, neboť na dalších stránkách vypisuji posledních x přihlášení a nechci aby mi tam přibývali další řádky jen po jakémkoli refresi stránky. Napadlo mne, že potřebuji, aby se formulářem spustila funkce kontroly hesla, která by mne v případě správnosti hesla přesměrovala na novou stránku page.php s hodnotou $_SESSION['ok'] = 1; Učim se php asi týden, takže toho moc neumim:-( Moc dík |
||
panmagor Profil * |
#2 · Zasláno: 24. 6. 2008, 10:27:09
Co zkusit něco jako:
if (isset ($_POST['heslo'] == $pass )){ Header('Location:kamchcespresmerovat.php)} |
||
kabanos Profil * |
#3 · Zasláno: 24. 6. 2008, 11:21:05
Dík,
už se mi to dle tvého postupu podařilo, ale objevil se další problém. Potřebuji nové stránce předat parametr, ale aby nebyl parametr vidět v url, protože pak ho mohu přepsat ručne a stránka provede co nechci Napsal jsem to takto: $parametr = 1; Header('Location:page.php?a='.$parametr) Dík |
||
panmagor Profil * |
#4 · Zasláno: 24. 6. 2008, 22:24:07
Bohužel takto se to bude vždycky zobrazovat v URL. Pravděpodobně by sis musel pohrát s nastavením Apache konkrétně "mod_rewrite" jiné řešení bohužel neznám...
|
||
Časová prodleva: 2 měsíce
|
|||
User_usr Profil * |
#5 · Zasláno: 16. 8. 2008, 21:36:27
ahaa
|
||
ss Profil * |
#6 · Zasláno: 16. 8. 2008, 21:37:43
jh
|
||
xxyy Profil * |
#7 · Zasláno: 16. 8. 2008, 21:47:53
Doporučuji pročíst toto vlákno, a provést zamezení znovunačtení stránky a přesměrování, skript se pak znovu nenačte:
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=3&topic=79 663 |
||
Časová prodleva: 16 let
|
0