Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] skrypt rejestracji i logowania
scorpio
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 7.08.2007

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


Witam

Na poczatku powiem ze nie jestem totalnie zielony w php :/
Napisałem skrypt rejstracji i logowań. składajaca sie z :
-regist.php ( rejestracja uzytkowników)
-login.php ( logowanie)
-site.html ( strona głowna)

zamieszcze te skrypty

regist.php
  1. <?php
  2.  
  3. switch($_GET['akcja'])
  4. { default:
  5.  
  6.  
  7. <br /><br /><b>REJESTRACJA</b><hr width=\"100%\"><br />
  8. <form action=\"regist.php?akcja=zarejestruj\" method=\"post\">
  9. nick: <input type=\"text\" name=\"nick\"><br />
  10. haslo: <input type=\"text\" name=\"haslo\"><br />
  11. email: <input type=\"text\" name=\"email\"><br />
  12. <input type=\"submit\" value=\"zarejestruj\">
  13. </form>
  14.  
  15. ");
  16.  
  17. break;
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. case "zarejestruj":
  29.  
  30. setcookie("nick", time() + 1000000 * 6000000000000);
  31. $nick = $_POST['nick'];
  32. $haslo = $_POST['haslo'];
  33. $email = $_POST['email'];
  34. $plik = $nick.".txt";
  35. $fp = fopen($plik, "w");
  36. flock($fp, LOCK_EX);
  37. fwrite($fp, $nick."##".$haslo."##".$email."\n");
  38. flock($fp, LOCK_UN);
  39. fclose($fp);
  40.  
  41. konto o nazwie [".$_POST['nick']."] zostalo pomyslnie utworzone !<br /><r /><a href=\"login.php\">ZALOGUJ SIĘ</a>
  42. ");
  43.  
  44. break;
  45.  
  46.  
  47. }
  48. ?>


login.php

  1. <?php
  2.  
  3. switch($_GET['akcja'])
  4. { default:
  5.  
  6.  
  7.  
  8.  
  9. <b>LOGOWANIE</b><hr width=\"100%\"><br />
  10. <form action=\"login.php?akcja=zaloguj\" method=\"post\">
  11. nick: <input type=\"text\" name=\"nick\"><br />
  12. haslo: <input type=\"text\" name=\"haslo\"><br />
  13. <input type=\"submit\" value=\"zaloguj\">
  14. </form>
  15. ");
  16.  
  17.  
  18.  
  19. break;
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31. case "zaloguj":
  32.  
  33. $nick = $_POST['nick'];
  34. $haslo = $_POST['haslo'];
  35. $plik = $nick.".txt";
  36.  
  37. $fp = fopen($plik, "r");
  38. flock($fp, LOCK_SH);
  39. $zawartosc = fgets($fp);
  40. flock($fp, LOCK_UN);
  41. fclose($fp);
  42.  
  43. $linia = explode("##", $zawartosc);
  44. $linia[1] = trim($linia[1]);
  45.  
  46.  
  47. if($nick==$linia[0] && $haslo==$linia[1])
  48. {
  49. echo("zalogowales sie pomyslnie!<br /><a href=\"www.google.pl\">przejdz do strony głownej !!!</a>");
  50. }
  51. else
  52. {
  53. echo("podales bledne dane! <br /><a href=\"login.php\">powrot</a><br /><br />");
  54. }
  55.  
  56. break;
  57.  
  58. }
  59. ?>


w sumie wszystko działą rejestruje uzytkowników i loguje. Ale nie tak jakby tego chciał :/

1. podczas rejestracji nie wymusza na uzytkowniku wypełnienia wszystkich pól :/
2. Nie sprawadza czy konto o podanej nazwie juz isnieje :/ i tworzy nowe o istniejacej juz nazwie :/

mam jeszcze 3 problem jak wymusić na uzytkowniku aby strone site.html mozna było ogladać dopiero po rejestracji??

Moze to dla was proste rzeczy ale ja mam z tym mały problem :/

POzdrawiam
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Ad1.
Sprawdzaj, czy wszystkie wymagane pola formularza zostały wysłane poprzez sprawdzenie, czy istnieje $_POST['twoja_zmienna']

Ad2.
Pobierasz użytkowników z pliku i sprawdzasz, czy wysłany nick jest już zarejestrowany

Większośc kodu masz przecież napisane (choćby proces logowania) - użyj go po prostu, tylko zmień odrobinę. Skoro potrafiłeś dane wklepac do pliku i je stamtąd wyciągnąć, to nie powinieneś mieć problemu ze sprawdzeniem, czy użytkownik juz istnieje.

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
scorpio
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 7.08.2007

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


No i mam problem wstawiłem kod któy sparwzda czy dany plik istnieje ale coś musiałem sknocić i nie działa :/
  1. <?php
  2.  
  3. switch($_GET['akcja'])
  4. { default:
  5.  
  6.  
  7. <br /><br /><b>REJESTRACJA</b><hr width=\"100%\"><br />
  8. <form action=\"regist.php?akcja=zarejestruj\" method=\"post\">
  9. nick: <input type=\"text\" name=\"nick\"><br />
  10. haslo: <input type=\"text\" name=\"haslo\"><br />
  11. email: <input type=\"text\" name=\"email\"><br />
  12. <input type=\"submit\" value=\"zarejestruj\">
  13. </form>
  14.  
  15. ");
  16.  
  17. break;
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. case "zarejestruj":
  29.  
  30. setcookie("nick", time() + 1000000 * 6000000000000);
  31. $nick = $_POST['nick'];
  32. $haslo = $_POST['haslo'];
  33. $email = $_POST['email'];
  34. if (strlen($nick)==0||strlen($haslo)==0||strlen($email)==0)
  35. {
  36. echo 'Niewypełniono wszystkich pól: <br> <br>';
  37. require ('zamuw.php');
  38. }
  39. $plik = $nick.".txt"; //deklaracja ścieżki do pliku
  40. $test = file_exists($plik); //sprawdzenie czy plik istnieje
  41. if (!$test) //jeżeli plik nie istnieje (zmienna $test=FALSE)
  42. else
  43. {
  44. echo "Uzytkownik o nazwie " .$plik. " juz istnieje"); //informacja, że istnieje plik o nazwie $plik na serwerze 
  45. }
  46.  
  47.  
  48. $plik = $nick.".txt";
  49. $fp = fopen($plik, "w");
  50. flock($fp, LOCK_EX);
  51. fwrite($fp, $nick."##".$haslo."##".$email."\n");
  52. flock($fp, LOCK_UN);
  53. fclose($fp);
  54.  
  55. konto o nazwie [".$_POST['nick']."] zostalo pomyslnie utworzone !<br /><r /><a href=\"login.php\">ZALOGUJ SIĘ</a>
  56. ");
  57.  
  58. break;
  59.  
  60.  
  61. }
  62. ?>



Pomoze ktośquestionmark.gif Wiek ktos co zrobiłem żle??
A tak przy okazji to mam dw pytanka jeszcze
Bo chce aby moja strone przegladali tylko zarejestrowani uzytkownicy jak zrobić aby ktos kto nie jest zarejestrowny aby go automatycznie przenosiło na strone logowania.I jak zrobić aby zapamietywało uzytkownika?? Tak by wchodzac po raz kolejny na strone nie musiał się juz logowac??
Go to the top of the page
+Quote Post
ErrorMessage
post
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 1.04.2008
Skąd: WARSZAWA

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


CODE

<?php

switch($_GET['akcja'])
{ default:

echo("<br /><br /><b>REJESTRACJA</b><hr width=\"100%\"><br />
<form action=\"regist.php?akcja=zarejestruj\" method=\"post\">
Nick: <input type=\"text\" name=\"nick\"><br />
Haslo: <input type=\"text\" name=\"haslo\"><br />
Powtorz Haslo: <input type=\"text\" name=\"haslo2\"><br />
Email: <input type=\"text\" name=\"email\"><br />
<input type=\"submit\" value=\"zarejestruj\"><br />
<input type=\"reset\" value=\"Resetuj\">

</form>");

break;
case "zarejestruj":

setcookie("nick", time() + 1000000 * 6000000000000);

$nick = $_POST['nick'];
$haslo = $_POST['haslo'];
$haslo2 = $_POST['haslo2'];
$email = $_POST['email'];
$plik = $nick.".txt"; //deklaracja ścieżki do pliku


if(!empty($nick) && !empty($haslo) && !empty($email)) //sprawdza czy nick, haslo i e-mail sa puste.
{
echo 'Niewypełniono wszystkich pól: <br> <br>';
require ('zamuw.php');
exit;
} else

if(ereg("[a-z0-9_]", $nick)) //sprawdza czy nick przypadkowo nie zawiera niedostepnych znaków (ogranicz dostępność znaków).
{
echo 'Wyst±pił bł±d: nick zawiera nieprawidłowe znaki!<br> <br>';
require ('zamuw.php');
exit;
} else

if($haslo == $haslo2 && strlen($haslo) >= 5) //sprawdza czy haslo jest poprawne i nie mniej niz 5 znaków.
{
echo 'Wyst±pił bł±d: wpisane hasła nie s± takie same lub zawiera ono mniej niż 5 znaków!<br> <br>';
require ('zamuw.php');
exit;
} else

if (!file_exists($plik)) //
{
print('Uzytkownik o nazwie " .$plik. " juz istnieje'); //informacja, że istnieje plik o nazwie $plik na serwerze
}
else
{

$plik = $nick.".txt";
$fp = fopen($plik, "w");
flock($fp, LOCK_EX);
fwrite($fp, $nick."##".$haslo."##".$email."\n");
flock($fp, LOCK_UN);
fclose($fp);

echo("konto o nazwie [".$_POST['nick']."] zostalo pomyslnie utworzone !<br /><r /><a href=\"login.php\">ZALOGUJ SIĘ</a>");

break;

}
}
?>

Troche przerobilem ten skrypt rejestracij poniekąt jest opisany. Staralem sie żeby nie bylo bledów lecz nigdy nic nie wiadomo u mnie na krasnalu działa. Myśle ze sie przydałem haha.gif. Pozdrawiam rolleyes.gif


--------------------
Go to the top of the page
+Quote Post
marcio
post
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Kodu nie sprawdzalem ale
  1. <?php
  2. if(ereg("[a-z0-9_]", $nick)) //sprawdza czy nick przypadkowo nie zawiera niedostepnych znaków (ogranicz dostępność znaków).
  3. ?>

Idzie obejsc uzuj lepiej preg_match();


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Pilsener
post
Post #6





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


1. echo używaj tak:
  1. <?php
  2. echo '<p class="paragraf">tekst/p>'
  3. ?>
- tak jest prościej, szybciej i czytelniej
2. Nie sprawdzasz danych odbieranych od użytkownika - poczytaj o walidacji danych
3. Nie szyfrujesz haseł
4. Wygodnie jest zapisywać każdego użytkownika w oddzielnym pliku?
5. Zapoznaj się z mechanizmami sesji
6. Nie zaszkodzi oddzielić kod html od php
7. Napisz to od nowa, opierając się na podobnych rozwiązaniach, choćby takim:
php.webhelp.pl/index.php?id=105&roz=php&ac=read
Go to the top of the page
+Quote Post
Hertil
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 25.10.2010

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


Nie jestem za bardzo kumaty w te klocki więc sam proszę o pomoc.
Jeżeli ktoś by był tak uprzejmy niech napisze mi co i jak mam zrobić.A najlepiej cały kod.
Go to the top of the page
+Quote Post
modern-web
post
Post #8





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Cały kod? Śnij dalej...

I. Rejestracja:

1. tworzysz formularze HTML.
2. piszesz skrypt PHP
3. łączysz się z bazą danych i odbierasz dane z formularzy
4. przypisujesz im zmienne
5. robisz kilka zapytań do bazy -> w tym sprawdzając, czy dana nazwa użytkownika już istnieje
6. jeśli nie istnieje tworzysz kolejne zapytanie - INSERT
7. dodajesz do bazy odpowiednie wartości (ze zmiennych)
8. wywalasz komunikat, że rejestracja przebiegła prawidłowo.

II. Logowanie:

1. tworzysz odpowiednie pola w HTML
2. w PHP odbierasz odbierasz odpowiednie dane i przypisujesz im zmienne
3. robisz kilka zapytań w celu sprawdzenia (poprawna/błędna nazwa użytkownika, poprawne/błędne hasło)
4. jeśli dane zostaną potwierdzone przez bazę to tworzysz sesję
5. robisz przekierowanie do strony dla zalogowanych

III. Strona dla zalogowanych:

1. łączysz się z bazą
2. sprawdzasz, czy taka (jak powyżej) sesja jest aktywna
3. jeśli nie to przekierowanie do strony logowania / jeśli tak to nic nie robi
4. (... dalej zależy od Ciebie)

IV. Wylogowanie:

1. łączysz z bazą
2. dezaktywujesz sesję
3. przekierowanie do na stronę logowania



Nic trudnego. Poczytaj kilka kursów PHP żebym nie musiał tłumaczyć Ci podstaw. Ostatnio spotkałem podobny temat i już mnie to szczerze mówiąc znudziło - gadanie jak do ściany.
Jak już coś obczaisz to przejdziemy na programowanie winksmiley.jpg
Narazie tylko schemat - żebyś wiedział o co w tym chodzi.

Poczytaj o:
-> łączeniu z bazą MySQL
-> odbieraniu danych z formularzy
-> tworzeniu zmiennych
-> zapytaniach do bazy SELECT, INSERT, UPDATE, DELETE
-> klauzulach (w zapytaniach do bazy - np. WHERE id > 0)
-> sesjach


Pozdrawiam.


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
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 Aktualny czas: 21.08.2025 - 10:01