Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rejestracja i Logowanie, pomysły i rozwiązania
rudald
post 9.08.2009, 10:19:33
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


Rejestracja
  1. <?
  2. $name_user = $_POST['name_user'];
  3. $haslo = $_POST['haslo'];
  4. $haslo2 = $_POST['haslo2'];
  5. $mail = $_POST['mail'];
  6. $mail2 = $_POST['mail2'];
  7.  
  8. if (($name_user<>'') and ($haslo<>'') and ($haslo2<>'') and ($mail<>'')
  9. and ($mail2<>''))
  10. {
  11. if (file_exists("./users/$name_user"))
  12. {
  13. echo "Ta nazwa użytkownika już istnieje!";
  14. }
  15. else
  16. {
  17. if (($haslo<>$haslo2) and ($haslo='') and ($name_user==$haslo))
  18. {
  19. echo '<br>';
  20. echo 'Błędnie podany adres email lub hasło';
  21. echo "Hasło nie może być takie same jak login";
  22. }
  23. else
  24. {
  25. if (($name_user<>$haslo) and ($haslo==$haslo2))
  26. {
  27. echo "Konto zostalo wlasciwie utworzone";
  28. echo '<a href="logowanie.php">Loguj</a>';
  29. $plik=fopen("./users/$name_user","w+");
  30. fclose($plik);
  31. $plik2=fopen("./users/$name_user","a+");
  32. fwrite($plik2,$haslo);
  33. fclose($plik2);
  34. $plik3=fopen("./users/$name_user a","w+");
  35. fwrite($plik3," Email: ");
  36. fwrite($plik3,$mail2);
  37. fwrite($plik3,' ');
  38. fclose($plik3);
  39. }
  40. else
  41. {
  42. echo "<br>Hasło nie moze być takie samo jak login,!!!<br>";
  43. echo "Hasła muszą być takie same.";
  44. }
  45. }
  46. }
  47. }
  48. else
  49. {
  50. echo "Wypelnij wszystkie pola";
  51. }
  52. ?>


Logowanie
  1. <?
  2. if (file_exists("./users/$name_user"))
  3. { $plik=fopen("./users/$name_user","r");
  4. $dane = fread($plik,"100");
  5. fclose($plik);
  6.  
  7. if ($haslo==$dane)
  8. {
  9. echo "jesteś zalogowany";
  10. }
  11.  
  12. else
  13. {
  14. echo "Błędne hasło";
  15. }
  16. }
  17.  
  18. else
  19. {
  20. echo "Podany login nie istnieje";
  21. }
  22.  
  23. ?>



Chciałbym tylko, żeby podczas podawania maila program sprawdzał czy ciąg znaków zawiera '@'.
Prócz tego wszystko działa jak należy - ma ktoś jakieś propozycje, co zrobić, by zwiększyć bezpieczeństwo, a może po prostu zmodernizować? Ten zestaw rejestracji udało mi się stworzyć, na bazie podstawowych funkcji, ale jest wiele innych rozwiązań, tylko że jestem wstępniakiem, także jeśli ktoś odpisze to proszę o tłumaczenie szeroko pojęte ; ).

Ten post edytował rudald 9.08.2009, 11:02:40
Go to the top of the page
+Quote Post
Fifi209
post 9.08.2009, 10:25:21
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


preg_match
fraza dla google: wyrażenia regularne

W php używa się operatora != a nie <>

Co do bezpieczeństwa, nazwę użytkownika też możesz przelecieć wyrażeniami.

Ten post edytował fifi209 9.08.2009, 10:25:48


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
rudald
post 15.08.2009, 21:32:17
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


poświęciłem temu kilka dni by przez wszystko przebrnąć więc:
  1. <?
  2. $mail = $_POST['mail'];
  3.  
  4. if (preg_match('[[\w\S\.\-]+\@[\w\S\.\-]+[\.\w{2,4}]]', $_POST['$mail']))
  5. {
  6. echo "Konto zostalo wlasciwie utworzone";
  7. }
  8. else
  9. {
  10. echo "BŁĄD";
  11. echo "<br>";
  12. echo '<a href="index.php">jeszcze raz</a>';
  13. }
  14. ?>
  15.  


w - cyfry litery podkreślenie
S - wszystko bez spacji
. - może być użyta kropka
- może być użyty minus
+ - oznacza, że mail ma mieć co najmniej 1 znak
później powinna być @
analogicznie co do portalu z mailem i później w{2,4} czyli litery lub cyfry posiadające co najmniej 2 znaki a co najwyżej 4
napisałem to, by prosić o potwierdzenie mojego toku rozumowania

jednak gdzieś popełniłem błąd, bo wpisując cokolwiek ciągle wyskakuje 'błąd' - Proszę o pomoc : )
Go to the top of the page
+Quote Post
Fifi209
post 15.08.2009, 22:57:12
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Przykładowe wyrażenie:
  1. /^[a-z]+$/


Dowiedz się co oznacza, do czego są te slashe, czemu na początku jest znak ^ a na końcu $


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
rudald
post 15.08.2009, 23:25:58
Post #5





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


^ - po za nawiasem kwadratowym początek linii
$ - koniec linii z możliwością dopisania za nim czegoś
/ - początek lub koniec ciągu przed ^ i za $

dodałem to i dalej ta funkcja się nie odzywa
  1. (preg_match('/^[[\w\S]+\@[\w\S\.]+[\.\w{2,4}]]$/', $_POST['$mail']))


Ten post edytował rudald 15.08.2009, 23:28:52
Go to the top of the page
+Quote Post
Fifi209
post 15.08.2009, 23:34:13
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Bo wszystko masz w kwadratowym nawiasie zamiast ()


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
viking
post 16.08.2009, 06:25:08
Post #7





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Poszukaj sobie w sieci wzorców regexpów na email - jest co najmniej kilka różnych podejść. Poza tym domena {2,6} . Masz też gotowce jak Zend/Validate/EmailAddress.


--------------------
Go to the top of the page
+Quote Post
Pawel_W
post 16.08.2009, 08:00:39
Post #8





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


poczytaj podstawy wyrażeń regularnych na wikibooks, bo robisz całą masę problemów

1. Wszystko powinno być w nawiasie () a nie [], jeżeli chcesz to wyciągnąć
2. Długość ciągu określa się za [] a nie w nim np. [a-z]{1,2} a nie [a-z{1-2}]
3. Jeżeli chcesz aby ci to coś zwróciło to jako 3 parametr podajesz zmienną winksmiley.jpg
4. $_POST['$mail]'] - poczytaj o różnicach między ' a ", taki kod:
  1. $mail = '123';
  2. echo '$mail';
  3. echo '<br>';
  4. echo "$mail";

wyświetli ci
$mail
123;


Poprawnie:
  1. preg_match('/^([\w\S]+\@[\w\S\.]+[\.\w]{2,4})$/', $_POST[$mail], $zmienna)
  2. print_r($zmienna);


Pozdrawiam, Pawel_W winksmiley.jpg

EDIT:
sprawdziłem to wyrażenie i nie za bardzo weryfikuje email winksmiley.jpg możesz wpisać email@.pl i wyświetli Ci że poprawny, dlatego lepiej zamiast wymyślać weż jakiś przykład z neta, chyba że to w celach treningowych ;P

Ten post edytował Pawel_W 16.08.2009, 08:04:14
Go to the top of the page
+Quote Post
megawebmaster
post 16.08.2009, 11:23:35
Post #9





Grupa: Zarejestrowani
Postów: 143
Pomógł: 17
Dołączył: 8.11.2008
Skąd: Libiąż

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


No to trzeba napisać takie wyrażenie, żeby obsługiwało (min. 1 znak)@(min. 1 znak).(min. 1 znak) i wtedy już taki diabełek Ci nie przejdzie.

EDIT: Może coś takiego przejdzie:
[[:alnum:]]@[[:alnum:]].[[:alnum:]]

BTW. http://www.programuj.com/artykuly/www/regularne.php - stąd to wziąłem - nie testowałem.

Ten post edytował megawebmaster 16.08.2009, 11:26:53
Go to the top of the page
+Quote Post
Pawel_W
post 16.08.2009, 16:11:02
Post #10





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


nie przejdzie, bo musisz brać pod uwagę że są takie adresy jak email@poczta.onet.pl winksmiley.jpg
Go to the top of the page
+Quote Post
Crozin
post 16.08.2009, 16:32:08
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


A o filter_var słyszeli?

Ten post edytował Crozin 16.08.2009, 16:32:56
Go to the top of the page
+Quote Post
Pawel_W
post 16.08.2009, 16:40:48
Post #12





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


jakbyśmy mieli podać gotowca to na necie jest pełno wzorów dla preg_match do emaila, ale on chce się wyrażeń regularnych nauczyć winksmiley.jpg

EDIT: ale btw. to dzięki, bo nie słyszałem o tym haha.gif

Ten post edytował Pawel_W 16.08.2009, 16:41:20
Go to the top of the page
+Quote Post
rudald
post 7.10.2009, 14:01:13
Post #13





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


Dobra Panowie z tym się jakoś uporałem, teraz zastanawiam się jak zrobić, by dopiero po zalogowaniu można obejrzeć zawartość strony.
Może ma ktoś jakieś pomysły ?
Go to the top of the page
+Quote Post
malesja
post 7.10.2009, 22:55:13
Post #14





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 10.06.2009

Ostrzeżenie: (10%)
X----


Może użyć sesji. Jeśli logowanie się uda tworzona jest sesja i wtedy możesz otworzyć stronę, która wymaga aby użytkownk był zalogowany.

Mozna zrobić warunek, który sprawdza czy użytkownk jest zalogowany, jesli nie jest podać mu do wyświetlenia link z podstawowymi danymi, jeśli sesja jest warunek pozwoli wykonać inną częśc kodu, która bedzie odpowiadać za dostęp do informacji dla zalogowanych.

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 22:01