Autor | Zpráva | ||
---|---|---|---|
Ben Profil * |
#1 · Zasláno: 13. 1. 2011, 14:14:59
Ahoj,
potřebuji dotáhnout do konce přihlašování a odhlašování na web pomocí session. V session mi stačí uchovávat pouze nick. Chci při přihlášení/odhlášení zůstat na té samé stránce a stímto si moc nevím rady. Prosím o váš názor. <?php error_reporting(e_all); include "config.php"; //pripojeni k databazi if (isset($_POST["auth_login"])) { if (mysql_result( mysql_query( "SELECT COUNT(*) FROM uzivatele WHERE prezdivka = '" . mysql_real_escape_string($_POST["auth_login"]) . "' AND heslo = '" . mysql_real_escape_string($_POST["auth_heslo"]) . "'"), 0)) { session_start(); session_register("logged"); session_register("auth_login"); session_regenerate_id(); // ochrana před Session Fixation $_SESSION["logged"] = true; $_SESSION["auth_login"] = $_POST["auth_login"]; //nick uživatele } } if($_GET["logout"] == "1"){ session_unset(); } else{ session_start(); } // tady je stránka(html hlavičky a generovaný obsah) ?> //tady je část stránky, která mi ukazuje jestli je uživatel přihlášen nebo ne <h3>Přihlášení</h3> <?php if (isset($_SESSION["logged"])) { echo "Jste přihlášen jako: {$_SESSION["auth_login"]}\n"; echo "<a href=\"http://".$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"]."?logout=1\">Odhlásit</a>"; } if (!isset($_SESSION["logged"])) { if (isset($_POST["auth_login"])) { echo "<p>Neplatné přihlašovací údaje.</p>\n"; } if($_GET["logout"] == "1"){ echo"Byl jste odhlášen."; } echo "<form action='' method='post'>\n"; echo "Login: <input name='auth_login' maxlength='30' value='{$_POST["auth_login"]}'/>\n"; echo "Heslo: <input type='password' name='auth_heslo' />\n"; echo "<input type='submit' value='Přihlásit' />\n"; echo "</form>\n"; } //tady je pak ukončení stránky ?> |
||
Taps Profil |
#2 · Zasláno: 13. 1. 2011, 14:26:38
Ben:
podívej se na http://pecan.cz/index.php?id=38&n=registrace-prihlaseni-uzivatelu Určitě ti to pomůže |
||
Taps Profil |
#3 · Zasláno: 13. 1. 2011, 14:28:41
Ben:
<?php session_start(); error_reporting(e_all); include "config.php"; //pripojeni k databazi if (isset($_POST["auth_login"])) { if (mysql_result( mysql_query( "SELECT COUNT(*) FROM uzivatele WHERE prezdivka = '" . mysql_real_escape_string($_POST["auth_login"]) . "' AND heslo = '" . mysql_real_escape_string($_POST["auth_heslo"]) . "'"), 0)) { session_start(); session_register("logged"); session_register("auth_login"); session_regenerate_id(); // ochrana před Session Fixation $_SESSION["logged"] = true; $_SESSION["auth_login"] = $_POST["auth_login"]; //nick uživatele } } if($_GET["logout"] == "1"){ session_destroy(); } // tady je stránka(html hlavičky a generovaný obsah) ?> <?php if (isset($_SESSION["logged"])) { echo "Jste přihlášen jako: {$_SESSION["auth_login"]}\n"; echo "<a href=\"http://".$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"]."?logout=1\">Odhlásit</a>"; } if (!isset($_SESSION["logged"])) { if (isset($_POST["auth_login"])) { echo "<p>Neplatné přihlašovací údaje.</p>\n"; } if($_GET["logout"] == "1"){ echo"Byl jste odhlášen."; } echo "<form action='' method='post'>\n"; echo "Login: <input name='auth_login' maxlength='30' value='{$_POST["auth_login"]}'/>\n"; echo "Heslo: <input type='password' name='auth_heslo' />\n"; echo "<input type='submit' value='Přihlásit' />\n"; echo "</form>\n"; } //tady je pak ukončení stránky ?> |
||
__construct Profil |
#4 · Zasláno: 13. 1. 2011, 14:56:19
Ben:
- máš tam zbytočne 2x session_start(); - zavolaj ho na začiatku skriptu a po prihlásení len regeneruj session_id
- nepoužívaj session_register() - od verzie PHP 5.3 je deprecated (zastaralá)
|
||
ShiraNai7 Profil |
#5 · Zasláno: 13. 1. 2011, 15:23:02
Ukládej heslo jen jako otisk!
Viz funkce md5, sha1 |
||
Ben Profil * |
#6 · Zasláno: 13. 1. 2011, 17:07:35
Taps
díky za nasměrování a upravení drobných chyb __construct díky za doladění a upozornění na starou funkci ShiraNai7 o ukládání hashe vím, jen jsem se k tomu ještě nedostal, díky Jinak po drobných úpravách mi to konečně jede, díky moc :-) |
||
Časová prodleva: 13 let
|
0