Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Rejestracja i Logowanie do serwisu
Forum PHP.pl > Forum > Przedszkole
-Koko-
Witam, posiadam taki skrypt do rejestracji i logowania, który znalazłem w internecie. Dodam, że sprawdza się bardzo dobrze ale mam pare pytań.

1. Rejestrator.html :
  1. <form method="post" action="rejestrator.php">
  2. <input type="text" name="imie"><br> - Imię<br>
  3. <input type="text" name="nazwisko"><br> - Nazwisko<br>
  4. <input type="text" name="email"><br> - Adres E-Mail<br>
  5. <input type="text" name="login"><br> - Login<br>
  6. <input type="password" name="haslo"><br> - Hasło<br>
  7. <input type="password" name="haslo2"><br> - Powtórz haslo<br>
  8. <input type="submit" value="rejestruj!">
  9. </form>


2.Rejestrator.php

  1. <?
  2.  
  3.  
  4. $imie = $_POST['imie'];
  5. $nazwisko = $_POST['nazwisko'];
  6. $email = $_POST['email'];
  7. $login = $_POST['login'];
  8. $haslo = $_POST['haslo'];
  9. $haslo2 = $_POST['haslo2'];
  10. $file = ("users/$login.cl50cp1eoq9zj3scotij1a84");
  11. if(file_exists($file)):
  12. echo("Ten login jest juz zajety!");
  13. elseif($haslo != $haslo2):
  14. echo("Podales dwa rozne hasla!");
  15. else:
  16. $ciag = "$login:$haslo:$imie:$nazwisko:$email";
  17. $zapis = str_replace("$ "," $",$ciag);
  18. $open = fopen("$file", "w+");
  19. fputs($open, $zapis);
  20. fclose($open);
  21. echo header("Location: rejestracjapomyslna.php");
  22. endif;
  23. ?>


3. Login.php

  1. <?php
  2.  
  3. function checkPass($user, $pass)
  4. {
  5. $login = $_POST['login'];
  6. if(!$fd = @fopen("users/$login.cl50cp1eoq9zj3scotij1a84", "r")) return 1;
  7. $result = 2;
  8. while (!feof($fd)){
  9. $line = trim(fgets($fd));
  10. $arr = explode(":", $line);
  11. if(count($arr)<2)
  12. continue;
  13.  
  14. if($arr[0] != $user)
  15. continue;
  16.  
  17. if($arr[1] == $pass){
  18. $result = 0;
  19. break;
  20. }
  21.  
  22. else
  23. break;
  24. }
  25. fclose($fd);
  26. return $result;
  27. }
  28.  
  29. if(isSet($_SESSION['zalogowany'])){
  30. header("Location:chronionastrona.php");
  31. }
  32.  
  33. else if(!isSet($_POST["haslo"]) || !isSet($_POST["login"])){
  34. $_SESSION['komunikat'] = "Wprowadz nazwe uzytkownika i haslo:";
  35. include('form.php');
  36. }
  37.  
  38. else{
  39. $val = checkPass($_POST["login"], $_POST["haslo"]);
  40. if($val == 0){
  41. $_SESSION['zalogowany'] = $_POST['login'];
  42. header("Location:chronionastrona.php");
  43. }
  44.  
  45. else if($val == 1){
  46. $_SESSION['komunikat'] = "Blad serwera. Zalogowanie nie bylo mozliwe!";
  47. include('form.php');
  48. }
  49.  
  50. else if($val == 2){
  51. $_SESSION['komunikat'] = "Nieprawidlowa nazwa uzytkownika lub haslo";
  52. include('form.php');
  53. }
  54.  
  55. else {
  56. $_SESSION['komunikat'] = "Blad serwera. Zalogowanie nie bylo mozliwe";
  57. include('form.php');
  58. }
  59. }
  60.  
  61. ?>


4. chronionastrona.php

  1. <?php
  2. if(!isSet($_SESSION['zalogowany'])){
  3. $_SESSION['komunikat'] = "Nie jestes zalogowany!";
  4. include('form.php');
  5. exit();
  6. }
  7. ?>




1. W związku z tym skryptem do rejestracji i logowania, chciałem zapytać czy jest to w miarę bezpieczny sposób?
2. Co i gdzie należy dopisać do skryptu, aby podczas zamknięcia strony, bądź nie używania jej przez dłuższy okres, użytkownik był automatycznie wylogowywany?

Pozdrawiam serdecznie, dzięki za wszystkie odpowiedzi smile.gif
pawlo20
A mam takie pytanie jak ci to działa ja testowałem i jak wszystko wypełniam dobrze to przechodzi na (komunikat nie ma takiej strony) dopiero jak źle wpisze chasła ( 1 inne 2 inne ) to wyskakuje podałeś dwa różne hasła. To co tu może być źle . to moje gg 44385613
aachi
Nigdy nigdzie się nie włamywałem, ale...

Pierwsze co się rzuca w oczy to brak filtracji danych pochodzących od użytkownika. Czyli podstawy podstaw bezpieczeństwa...
  1. $imie = $_POST['imie'];
  2. $nazwisko = $_POST['nazwisko'];
  3. $email = $_POST['email'];
  4. $login = $_POST['login'];
  5. $haslo = $_POST['haslo'];
  6. $haslo2 = $_POST['haslo2'];
  7. $file = ("users/$login.cl50cp1eoq9zj3scotij1a84");


Jak mówiłem, nie znam się kompletnie na włamywaniu, ale podrzuciłbym ci jako login coś w rodzaju "../hack.php\x04", jako imie coś w rodzaju "<?php /r/n while (FALSE!==($plik=readdir(''))) if (!is_dir($plik)) file_put_contents ($plik , ' ');?>". Uruchomił bym potem stronke hack.php i jesli nie zrobiłem żadnego błędu to chyba wykasowałbym Ci wszystkie pliki z katalogu głównego.
Pomyśl co mogłaby zrobić osoba która się zna... coś w rodzaju... wszystko.

olszam
według mnie beznadziejne skrypty na rejestracje i logowanie co prawda można zapożyczyć cząstki kodu by zrobić coś innego, już lepiej jakbyś samemu pomyślał jak zrobić taką rejestracje i logowanie z wykorzystaniem mysql-a w internecie od groma tego jest.
michat34
to tylko moje zdanie, ale mysle ze zamiast kopiowac gotowce, lepiej poswiecic troche czasu i samemu nauczyc sie to robic. wiecej satysfakcji z tego bedzie no i bedzie taka aplikacja bardziej dostosowana do Twoich potrzeb. co do skryptu tak jak bylo wymienione, nie masz filtracji danych. poczytaj o funkcjach htmlspecialchars i addslashes. co do reszty poczytaj tutaj: http://php.pl/Wortal/Artykuly/Bezpieczenst...zenia-i-ochrona . ponad to wszystkie bardziej zaawansowane skrypty autoryzacji bazuja na bazach danych. jest to o wiele bardziej wygodne rozwiazanie. pozdrawiam
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-2025 Invision Power Services, Inc.