Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Logowanie na sesjach i mysql :P, Czyli mój pierwszy własny skrypt
marian2299
post
Post #1





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

Ostrzeżenie: (0%)
-----


Napisałem własne skrypty, działają i wgl, ale muszą zostać zabezpieczone. W związku z tym piszcie, czy napisałem w miarę ok, czy są rażące widoczne błędy, itp.
Plik logowanie.php
  1. <?php
  2. sesion_start(); //rozpoczęcie sesji
  3.  
  4. $login = mysql_real_escape_string($_POST['login']); //określenie zmiennej login, dodanie backshalsy
  5. $haslo = mysql_real_escape_string(md5($_POST['haslo'])); //określenie zmiennej haslo, dodanie backshalsy,kodowanie md5
  6.  
  7. if ($login != "" && $haslo != ""){ //sprawdzanie czy zmienne nie są puste
  8.  
  9. $zapytanie = "SELECT * FROM `uzytkownicy` WHERE login="'. $login.'" and haslo="'.$haslo.'" "; //zapytanie
  10. $uzytkownik = mysql_fetch_array(mysql_query($zapytanie) or die("Wystąpił nieoczekiwany błąd.")); //tworzymy tablicę
  11.  
  12. $_SESSION['login'] = $uzytkownik['login']; //określamy zmienną sesyjną login
  13. $_SESSION['haslo'] = $uzytkownik['haslo']; //określamy zmienną sesyjną haslo
  14. $_SESSION['id'] = $uzytkownik['id']; //określamy zmienną sesyjną id
  15. echo "Zostałeś zalogowany jako: ".$_SESSION['login'].""; //jeśli wszystko ok, wyświetlamy login
  16. }
  17. else {
  18. echo 'Podałeś błędne dane, spróbuj ponownie.'; //jeśli nie baj baj
  19. }
  20.  
  21. ?>


Czy wszystko robię ok ? Czy jest to odporne na SQJ injection ? Macie może jakieś sugestie ?
Czy w pliku tylko dla zalogowanych w zupełności wystarczy:
  1. <?php
  2. if (!isset($_SESSION['login']) || !isset($_SESSION['haslo'])) {
  3. header("location:index.php"); // Przekierowanie do index.php
  4. }
  5. ?>


Ten post edytował marian2299 17.08.2009, 00:34:12
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
radabus
post
Post #2





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 17.08.2009

Ostrzeżenie: (0%)
-----


Podpinając się pod ten temat (gdyż trochę się nim sugerowałem), chciałem zapytać o wskazówki odnośnie takiego prostego skryptu, który wysmażyłem. Plik login.php pobiera dane od formularza w pliku index.php i wygląda następująco:

  1. <?php
  2. include ("db_connect.php");
  3.  
  4. // sprawdzamy dane w tablicy $_POST
  5. if ((isset($_POST['username'])) && (isset($_POST['password']))) {
  6. if ((($_POST['username']) == "") || (($_POST['password']) == "")) {
  7. // dla pustych zmiennych w $_POST (uzytkownik nic nie wpisal) automatycznie wracamy do logowania
  8. header('Location: index.php');
  9. }
  10. else {
  11. $username = $_POST['username'];
  12. $password = sha1($_POST['password']);
  13. $zapytanie_do_bazy = sprintf("SELECT * FROM logowanie WHERE uzytkownicy_username='%s'", mysql_real_escape_string($username));
  14. $wynik_zapytania = mysql_query($zapytanie_do_bazy) OR die(mysql_error());
  15. $tablica_pomocnicza = mysql_fetch_assoc ($wynik_zapytania);
  16. if ($tablica_pomocnicza['uzytkownicy_username'] == $passwordd) {
  17. // haslo sie zgadza - możemy przejść do pliku plik_chroniony.php
  18. $_SESSION['zalogowany'] = true;
  19. header('Location: plik_chroniony.php');
  20. }
  21. else {
  22. // haslo sie nie zgadza - wracamy do logowania
  23. // czyli kierujemy teraz użytownika z powrotem do logowania, wyświetlając odpowiedni komunikat
  24. }
  25. }
  26. }
  27. else {
  28. // jesli wystapilo bezposrednie odwolanie do pliku login.php, zamiast użycie formularza w pliku index.php, to kierujemy z powrotem do index.php
  29. header('Location: index.php');
  30. }
  31. ?>


Jeśli mogę prosić o jakąś opinię - jeśli coś jest źle, to jak poprawić?

pozdrawiam
Radek
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 23:54