Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] skrypt rejestracji i logowania
Forum PHP.pl > Forum > Przedszkole
scorpio
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
Cysiaczek
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.
scorpio
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??
ErrorMessage
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
marcio
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();
Pilsener
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
Hertil
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.
modern-web
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.
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.