Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rejestracja i Logowanie
Forum PHP.pl > Forum > PHP
rudald
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 ; ).
Fifi209
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.
rudald
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 : )
Fifi209
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 $
rudald
^ - 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']))
Fifi209
Bo wszystko masz w kwadratowym nawiasie zamiast ()
viking
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.
Pawel_W
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
megawebmaster
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.
Pawel_W
nie przejdzie, bo musisz brać pod uwagę że są takie adresy jak email@poczta.onet.pl winksmiley.jpg
Crozin
A o filter_var słyszeli?
Pawel_W
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
rudald
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 ?
malesja
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.

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.