![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 11.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Jestem nowym użytkownikiem forum a zarazem i raczkującym w PHP. Chciałbym stworzyć na swojej stronce rejestrację i logowanie użytkowników tak aby mieli dostęp do swoich opcji. Rejestrację z trudem ale mam już z głowy. Problem natomist mam wielki z logowaniem. Znalazłem w takiej "mądrej" książce skrypt do logowania oparty na bazie danycch MySQL. Wygląda to tak. Plik login.php Kod <?php session_start(); if (isset($_POST["submit"])) { $login = $_POST["login"]; $passwd = $_POST["passwd"]; $auth = false; $pwdb = mysql_connect("localhost", "user_do_bazy", "password"); mysql_select_db("baza", $pwdb); $rows = mysql_query("SELECT login, passwd FROM baza", $pwdb); while ($row = mysql_fetch_array($rows)) { if ($login == $row["login"] && $passwd == $row["passwd"]) { $auth = true; break; } } if ($auth) { $_SESSION["username"] = $login; if (isset($_GET["url"])) { $url = $_GET["url"]; } else { $url = "panel.php"; } if (!isset($_COOKIE[session_name()])) { if (strstr($url, "?")) { header("Location: " . $url . "&" . session_name() . "=" . session_id()); } else { header("Location: " . $url . "?" . session_name() . "=" . session_id()); } } else { header("Location: " . $url); } } } ?> <html> <head> <title>Uwierzytelnianie użytkowników</title> </head> <body> <form method="post"> <input type="text" name="login" /> <input type="password" name="passwd" /> <input type="submit" name="submit" value="Login" /> </form> </body> </html> No i po poprawnym zalogowaniu się przechodzi mi do pliku panel.php, który wygląda tak: Kod <html> <head> </head> <body> <? session_start(); if (!isset($_SESSION["username"])) { header("Location: /protected3/login.php?url=" . urlencode($_SERVER["SCRIPT_NAME"])); } else { echo "<B>Nazwa istniejacej sesji:</B> ".$_SESSION["username"]; echo " <A href=\"logout.php?\"" . SID . "\">"; echo "[Wyloguj]</A><BR>"; echo "<B>Twoj login:</B> ".$_GET['login']; echo "<B>Twoje haslo:</B> ".$_GET['passwd']; } ?> </body> </html> No i problem jest taki że kiedy już po zalogowaniu się przechodzi mi do pliku panel.php nie mam tam dostępu do zmiennych $login oraz &passwd tzn po wpisaniu żeby wyświetlił login i hasło widzę coś takiego: Kod Notice: Undefined index: login in /usr/account/ftp/scoute/panel.php on line 19 Notice: Undefined index: passwd in /usr/account/ftp/scoute/panel.php on line 20 [\code] Co ciekwae kiedy wpiszę: [code] echo $_SESSION["username"]; pokazuje mi nazwę sesji więc uważam że jakieś tam dane przekazuje do panel.php. nie przekazuje jednak loginu i hasla. <B>W czym zatem tkwi problem. Co jest nie tak w tym skrypcie ?</B> |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Baaardzo mądra ta książka, naprawde... Pierwsza głupota: przechowywanie loginu i hasła w sesji. Druga głupota wyciąganie wszystkich haseł i loginów z bazy danych po to by sprawdzić czy jeden z nich się zgadza... w pętli. Tragedia. Wyrzuć tą książkę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
W sesji powinno sie przechowywać najwyżej id użytkownika, a z bazy wybiera sie jeden login i haslo i tylko po to by sprawdzić czy taki istnieje, jeśli istnieje to ustawiasz $_SESSION['user_id'] = id_sprawdzonego_uzytkownika i potem za każdym razem sprawdzasz czy w sesji istnieje zmienna user_id, jeśli tak to użytkownik zalogowany, jeśli nie to niezalogowany. Ot cała filozofia. Poza tym było już parę razy na forum. Edit: sorry hasło nie jest przechowywane (dlatego nie możesz go wyświetlić), a {echo $_SESSION["username"];} nie zwraca ci nazwy sesji, tylko właśnie login, który wg ciebie nie może być wyświetlony Ten post edytował krowal 12.10.2007, 06:24:50 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 11.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hmm... No czy ta książka "mądra" - pojęcie względne. Tak jak pisałem ja się nie za bardzo jeszcze w PHP czuje dlatego znalazłem taki skrypt i kombinuje. A co w takim razie myślisz o takim skrypcie 77857 Czy jest on bezpieczny itp. I jak ma zatem wyglądać zapytanie do bazy. No bo w sumie masz rację, że wyciąganie wszystkich loginów i haseł to głupota. W końcu jak baza urośnie będzie to trochę trwało. A może poradzicie jakiś skrypt logowania oparty na bazie MySQL. jakiś link mile widziany. Nie jestem biegły w PHP i szukam jakiegoś fajnego, porządnego skryptu. Na co zwrócić uwagę. Pomoże mi ktoś (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 11.10.2007 Skąd: http://localhost/ Ostrzeżenie: (0%) ![]() ![]() |
Przechowywanie hasla w sesji przeciez nie jest chyba glupie z tego co wiem. to nie jest ciastechko a sesja i widzi ja tylko serwer tylko ze to zasmieca serwer.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 12:19 |