Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uwierzytelnianie użytkowników
Forum PHP.pl > Forum > Gotowe rozwiązania
MalyKazio
Witam,

planuję stworzyć stronę internetową zawierającą część dostępną tylko dla zalogowanych użytkowników. Gotowe rozwiązania mam przedstawione w książce PHP i MySQL Tworzenie stron WWW. Vademecum profesjonalisty. Mam wydanie 3 z 2005 roku. W zwiazku z tym mam pytanie na ile rozwiązania tam przedstawione (oparte na sesjach) są aktualne i bezpiecznie. Czy coś się zmieniło? A może ktoś może polecić bardziej aktualną publikację zawierającą opis takich rozwiązań? Albo najlepiej przykład kodu dostępnego w internecie?
Neymar11
Musisz utworzyc w mysql tabele a w php to musisz miec 4 podstawowe pliki:

index.php - sprawdzaenie czy zalogowany i udostepnianie zawartosci dla zalogowanych
login.php - logowanie na podstawie danych z bazy
register.php - rejestracja uzytkownika do bazy
logout.php - wylogowywanie z serwisu, usuwanie sesji

W sprawie indes.php to tak:

  1. if (isset($_SESSION['username'])) {
  2. // tresc dla zalogowanych
  3. } else {
  4. // tresc dla niezalogowanych
  5. }


login.php

  1. $istnieje = "SELECT * FROM users WHERE username = '$username'";
  2. if (!$istnieje) {
  3. // tresc jesli user nie istnieje
  4. } else {
  5. $_SESSION['username'] = $usename;
  6. // wiadomosc po zalogowaniu
  7. }


register.php

  1. if (isset($_SESSION['username'])) {
  2. // tresc dla zalogowanych
  3. } else {
  4. $username = mysql_real_escape_string($_POST['username']);
  5. $password = mysql_real_escape_string($_POST['password']);
  6. $email = mysql_real_escape_string($_POST['email']);
  7. $wstaw = "INSERT INTO user (username, password, email) VALUES ('$username', '$password', '$email')";
  8. if (!$wstaw) {
  9. // wiadomosc jesli rejestracja sie nie powiodla
  10. } else {
  11. // wiadomosc jezeli zarejestrowano
  12. }
  13. }


i logout.php

  1. if (isset($_SESSION['username'])) {
  2. unset($_SESSION['username']);
  3. // wiadomosc jesli wylohowano
  4. } else {
  5. // wiadomosc jezeli byles juz wylogowany
  6. }


Teraz musisz dopisac większą (moim zdaniem) część kodu.
Jezeli chcesz to mogę ci pomóc już osobiście z tym
Jak coś byś chciał to pisz na PW smile.gif
Boshi
@Neymar11 proponuję najpierw przeczytać co tutaj za bzdury naklepałeś.
Neymar11
O co ci chodzi?? Koleś, serio? Przecież to była tylko podpowiedż na jakiej zasadzie to ma zrobić...
Nikt nie dawał tu całego kodu...
Powiedziałem mu, żeby sb reszte dopisał, albo napisał mi na pw jak nie ogarnia, co nie?
Ogarnij @Boshi ... -.-
A co do moich kodów, to co takiego niezrozumialego tam jest?
Powiedz mi choć jedno... smile.gif
aras785
@Neymar11 zanim wrzucisz odpowiedź to dobrze przeczytaj pytanie i sprawdzaj kod który podsyłasz czy wgl. działa... Twój kod jest stary sad.gif

pierwszy przykład z google: http://www.phpro.org/tutorials/Basic-Login...-and-MySQL.html


ps. co to jest:
  1. $istnieje = "SELECT * FROM users WHERE username = '$username'";
  2. if (!$istnieje) {
  3. // tresc jesli user nie istnieje
  4. } else {
  5. $_SESSION['username'] = $usename;
  6. // wiadomosc po zalogowaniu
  7. }
haha.gif
Boshi
Chociażby to co wrzucił Aras, jeżeli myślisz, że autor mający 0 podstaw dopisze sobie sam zapytanie i sprawdzi wyciągając ilość wierszy to jesteś w błędzie (Chyba, że ty sam nie wiesz co napisałeś)- bo kod który zacytował Aras sprawdza jedynie czy zapytanie jest poprawnie semantyczne. Nie będę wyciągał większej ilości błędów.


p.s Zachowuj się, jesteś na forum publicznym.
Neymar11
ahh no przepraszam zapomnialem o tym w login.php

  1. if (mysql_num_rows($istnieje) > 0) {
  2. // logowanie
  3. // pobieranie danych o userze
  4. // sprawdzanie poprawnosci hasla
  5. } else {
  6. // tresc jesli nie istnieje
  7. }


przepraszam bardzo was wszystkich
Boshi
To jest dalej źle... brakuje chociaż by funkcji wykonującej zapytanie z serii mysql_*, ponadto nie sprawdzasz hasła w ogóle.
IProSoft
A dodatkowo nie ma sensu aby zaczynał naukę od funkcji mysql* które są przestarzałe.

Co do książki, to rzuć ją w kąt i lepiej zainteresuj się jakimiś tutorialami w necie z max kilku lat wstecz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.