Guest Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 Na Apps (nástupce dejtotam) mám možnost nechat se přihlásit nastálo. Funguje to tak, že při každém přihlášení se vygeneruje jedinečný klíč který se uloží do DB a v případě že uživatel chce stálé přihlášení se klíč zapíše i do cookies. Jelikož se při každém přihlášení vygeneruje klíč nový, tak klíče, které jsou uloženy v cookies se stanou neplatnými (= pokuď se přihlašuji z více míst, tak mě to vždy odhlásí) Fuguje to tak: nepřihlášený: Zadám jméno a heslo (a potvrdím trvalé přihlášení) -> Probíhá proces přihlašování -> Vygeneruje se klíč, který se uloží v DB a v cookie -> Zkončen proces přihlašování přihlášený: Zkontroluji jestli je cookie platné -> smažu cookie/Probíhá proces přihlašování přes klíč -> Vygeneruje se klíč, který se uloží v DB a v cookie -> Zkončen proces přihlašování Do webu nahoru: if(!isset($_SESSION["xXx"])){ //Pokuď neexistuje session proměnná, dosaďte si svoji if(isset($_COOKIE["login_hash"])){ //Pokuď existuje cookie uchovávající stálé přihlašování login_hash($_COOKIE["login_hash"]); //Spustíme funkci } } funkce login_hash function login_hash($hash){ $query = "select * from USERS where LOGIN_HASH = '" . $hash . "'"; //Upravte si na svoji tabulku s uživateli $result = mysql_query($query) or die(); //Vykonáme dotaz $num = mysql_num_rows($result); //Spočítáme nalezené řádky if ($num==0){ //Pokuď klíč nesouhlasí setcookie($COOKIE_PREFIX . "login_hash", $hash, time() - 3600); //Smažeme cookie }else{ //Nebo while ($row=mysql_fetch_array($result)){ //Vybereme záznamy $_SESSION["IdUser"] = $row["ID"]; //Dosadíme do sessionu to co chceme $hash_new = sha1(microtime()); //Vygenerujeme nový klíč $query2 = "update USERS set LOGIN_HASH = '" . $hash_new . "' where LOGIN_HASH = '".$hash."';"; //Nastavíme nový klíč $result2 = mysql_query($query2) or die("SQL dotaz nešlo provést"); //Vykonáe dotaz setcookie("login_hash", $hash_new, time()+7*24*60*60); //Uložíme hodnotu nového klíče do cookie } header('Location: ?page=home'); //Přesměrujeme na index } } a ke klasickému přihlášení si dejte $hash = sha1(microtime()); //Vygenerujeme klíč $query2 = "update USERS set LOGIN_HASH = '" . $hash . "' where USERNAME_CLEAN = '".$username."';"; //where si upravte na vlastní $result2 = mysql_query($query2) or die("SQL dotaz nešlo provést"); //Vykonáme dotaz if($_POST["remember"] == "on"){ //Pokuď byl checkbox s name="remember" aktivní setcookie($COOKIE_PREFIX . "login_hash", $hash, time()+7*24*60*60); //Uložíme do cookie }else{ //Pokuď nebyl aktivní setcookie($COOKIE_PREFIX . "login_hash", $hash, time() - 3600); //Smažeme pro jistotu cookie } Přidat k logoutu $hash = sha1(microtime()); $query = "update USERS set LOGIN_HASH = '" . $hash . "' where ID = '".$IdUser."';"; //Upravte si na svoje $result = mysql_query($query) or die("SQL dotaz nešlo provést"); setcookie($COOKIE_PREFIX . "login_hash", $hash, time() - 3600); //Smažeme pro jistotu cookie POZOR! Pro správnou funkci je potřeba vytvořit sloupec ID_HASH[varchar(100)] do tabulky uživatelů a dotazy upravit ke kráse svoji Toť vše, snad to funguje. Kdybyste nalezli nějakou chybu nebo by vám to nejelo, tak se vám pokusím pomoct Link to comment Share on other sites More sharing options...
Guest Frodo Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 Kozlík, pěkné Link to comment Share on other sites More sharing options...
ManSlayer 3 Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 díky , jen by se hodilo to.. to co muzes napsat v phpmyadminu do te sql a ona se ta tabulka vytvori podle toho a presnejsi napsat co kde dat.. Link to comment Share on other sites More sharing options...
Guest Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 díky , jen by se hodilo to.. to co muzes napsat v phpmyadminu do te sql a ona se ta tabulka vytvori podle toho a presnejsi napsat co kde dat.. Jasné, aby jsi mohl dát ctrl+c a ctrl+v Link to comment Share on other sites More sharing options...
Guest Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 ManSlayer: máš to tam napsané ID_HASH[varchar(100)] Link to comment Share on other sites More sharing options...
ManSlayer 3 Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 do webu nahoru.. tomu nechápu funkce login_hash tomu taky.. popíš to líp! Link to comment Share on other sites More sharing options...
Guest Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 Prostě si to dáš někam do kódu, nejlépe nahoru Link to comment Share on other sites More sharing options...
ManSlayer 3 Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 treba index? nebo vytvorim treba kukis.php a tam to dam? jo a ten login hash kam? Link to comment Share on other sites More sharing options...
Guest Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 třeba do indexu, ale nejlépe do souboru, do kterého lezou všechny stránky Link to comment Share on other sites More sharing options...
Deleted User 295 Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 A neni jednoduhsie ulozit do cookie napr. id a nasledovny hash? md5($login . md5($heslo)) a potom to iba pri refreshy kontrolovat ci to sedi z DB? Link to comment Share on other sites More sharing options...
Guest Odesláno: 19. Říjen, 2011 Share Odesláno: 19. Říjen, 2011 To nevím jestli je to jednodušší, ale jak jsem to pochopil od tebe, tak když bych se přihlásil ve dvou prohlížečích, tak by mě to v prvním odhlásilo. Mě šlo o to, aby mohlo být maximálně jedno trvalé přihlášení. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now