Autor | Zpráva | ||
---|---|---|---|
Michal110 Profil |
Ahoj Lidi. Předem se omlouvám že tu zase škemrám o radu. Nejsem zvyklej že někdo něco dělá za
mě, ale potřeboval bych poradit. Vymyslel jsem si jednu "ptákovinu" které se chytlo dost lidí a teď tu řeším problém se zprovozněním. Zkusím popsat co je v mém návrhu. Cílem je vytvořit web (to zmáknu) kde jsou umístěny 2 tlačítka s funkcí zápisu hodnoty do txt souboru po jejich stisknutí (to zmáknul uživatel TAPS,, díky). Dalším cílem je že tuto stránku bude využívat více lidí postupně za sebou (nikdy ne současně), tudiž jsem laboroval a použil kód pro zaheslování přístupu (to jsem zmáknul)-bohužel nutná změna hesla pro každého ale budiž.Jde mi o to aby na stránce s tlačítky byl vždy jen jeden člověk. to jsem tak nějak vyřešil tím heslem. Bohužel pokud se ale ten jeden člověk sám neodhlásí tak nastává problém s tím že může dál klikat a měnit tak hodnoty v txt souboru,i když už mám změněno heslo pro hlavní přístup a heslo má další člověk. Tím mužou klikat oba což je nežádoucí. u prvního člověka pomůže jen zavření prohlížeče a znovuzadání adresy (načteno nové heslo).. Ptám se tedy.. Dá se nějakým způsobem zadat automatické odhlášení uživatele třeba po 10 minutách? Nebo jiný způsob? příkaz pro automatické odhlášení se mi nepodařilo rozběhat, zadával jsem ho do index.php. Asi to zní trochu šíleně (celé je to šílené :-) ale jde mi jen o to aby klikat na tlačítko mohl vždy jeden člověk.. V každém případě mě PHP docela vzalo, takže začínám studovat a zkoušet. Děkuji všem za případné nápady. Zde uvádím strukturu souborů, INDEX.PHP <? require 'protection.php'; ?> </style> <? if(isset($_POST['off'])){ file_put_contents('spinac.txt', 0); } elseif(isset($_POST['on'])){ file_put_contents('spinac.txt', 1); } $hodnota = file('spinac.txt'); $oznaceni[$hodnota[0]] = 'on'; echo'<form action="#" method="POST"> <input type="submit" value="off" name="off" class="'.$oznaceni[0].'"> <input type="submit" value="on" name="on" class="'.$oznaceni[1].'"> </form>'; ?> LOGIN.PHP <? //Set up your login name and password here $user="test"; $pass="1234"; //Which file be included after succesfull login? //kterou stránku otevřít po přihlášení? $protected="index.php"; //Enter relative path to zour CSS stylesheet file //relativni adresa CSS souboru $css="styles.css"; //Delete unwanted language blocks //Česky $auth="Přihlášení"; $username="Uživatel"; $password="Heslo"; //English $auth="Logon"; $username="Username"; $password="Password"; #End of configuration.............................................. if ($_GET['action']=='validate'){ if(($_POST['user']==$user)&&($_POST['passwd']==$pass)){ session_start(); header("Cache-control: private"); $_SESSION["user_is_logged"] = 1; header("Location: ".$protected); exit; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "[url=http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd]http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd[/url]"> <html> <head> <title><? echo $auth; ?></title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2"/> <link rel="stylesheet" type="text/css" href="<? echo $css; ?>" /> </head> <body> <div id="container"> <h1><?echo $auth;?></h1> <form action="./login.php?action=validate" method="post"> <table> <tr><td><? echo $username; ?></td><td><input type="text" name="user" /></td></tr> <tr><td><? echo $password; ?></td><td><input type="password" name="passwd" /></td></tr> <tr><td colspan="2"><input type="submit" value="..:: Okej ::.." /> <input type="reset" value="..:: Storno ::.." /></td></tr> </table> </form> <hr /> <p><small>This work is licensed under a <a href="[url=http://creativecommons.org/licenses/by-nc-sa/1.0/">Creative]http://creativecommons.org/licenses/by-nc-sa/1.0/">Creative[/url] Commons License</a>. Some rights reserved <a href="[url=http://jary.borec.cz/">Vladimír]http://jary.borec.cz/">Vladimír[/url] Jarý</a></small></p> </div> </body> </html> PROTECTION.PHP <? # Verify if the user is logged-in # Vladimir Jary, see [url=http://jary.borec.cz/]http://jary.borec.cz/[/url] for more info //specify file, which will be included when user is not logged-in //Napiš soubor, který se zobrazí, pokud uživatel nen9 přihlášen $error_file="login.php"; session_start(); header("Cache-control: private"); if ($_SESSION["user_is_logged"] != 1){ header("Location: ".$error_file); exit(); } ?> LOGOUT.PHP <? # Logout script # Vladimir Jary, see [url=http://jary.borec.cz/]http://jary.borec.cz/[/url] for more info //Specify a file which will be displayed after logout //Vyberte soubor, který se zobrazí po odhlášení $logoutfile="logout.html"; session_start(); $_SESSION = array(); session_destroy(); if ($_SESSION["user_is_logged"]){ echo "FATAL ERROR: Cannot terminate session!"; } else { header("Location: ".$logoutfile); } ?> |
||
Alphard Profil |
#2 · Zasláno: 22. 1. 2015, 01:43:54
Stačí pracovat s časem, do session neukládat jen hodnotu 1/0 jestli je uživatel přihlášen, ale uložit si čas, kdy se přihlásil/provedl poslední akci. Pokud na stránku přistoupí příliš pozdě, tak ho odhlásíte.
|
||
Michal110 Profil |
#3 · Zasláno: 22. 1. 2015, 13:07:53 · Upravil/a: Michal110
díky za radu. Nad tím jsem taky uvažoval. Napadlo mě použít kód pro odhlášení uživatele po určité době, něco ve smyslu
<?php if ($_SESSION["access_time"] < strtotime("-1 hour")) { $_SESSION["logged"] = false; } $_SESSION["access_time"] = time(); ?> ale nedaří se mi to zprovoznit :-( kde -1hour bych zadal -10 minutes? - v podstatě by mi stačilo aby každý měl přístup jen 10 minut a pak ho to vyhodilo na děkovnou stránku nebo by stačilo aby se po 10minutách od přihlášení vyčistila session, tím pádem by při kliknutí byl zpět přesměrován na přihlašovací stránku.. Ale bohužel se mi nedaří to správně zakompilovat.. |
||
martin1312 Profil |
#4 · Zasláno: 22. 1. 2015, 16:27:05
K tomu časovemu limitu musíš pripočítať ešte aktuálny čas, až potom porovnať.
|
||
Michal110 Profil |
#5 · Zasláno: 22. 1. 2015, 17:35:38
Tak to už je nad rámec mých aktuálních schopností :-(. Sedím u toho dva dny, hlava jak patrona :-). Tlačí mě čas, proto mi nezbývá zadat to jako úkol za úplatu. Platbu provedu v hotovosti (pokud někdo poblíž Litoměřic) nebo bankovním převodem. Tedy záleží na ceně kterou odhaduji do max 1 tis Kč....
|
||
Časová prodleva: 10 let
|
0