Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak zrobic rejestracja
Forum PHP.pl > Forum > PHP
Dragon987
Witam! Na lekcji mamy zroić prostą strone php wraz z rejestracja i logowaniem. Jak zrobić logowanie bez uzywania bazy danych, poprosty w pliku tekstowy (txt) mają byc zapisywanie uzytkownicy.
Ociu
To w szkole uczą php ? smile.gif
Poszukaj sobie informacji o zapisie do pliku, odczycie i obsłudze ciastek.
Dragon987
No to wiem, ale nie wiem jak zrobic zeby zapisywało sie jedno pod drugim i zeby login sie nie powtarzał. Bo cały czas mi podmienia jednego uzytkownika
PiratNowegoPokolenia
hmmm ... rozbij sobie plik za pomocą explode
później w pętli sprawdzaj czy użytkownik już istnieje jeżeli nie to dopisz na użytkownika ...
później ... wiadomo implode i zapisz to do pliku...

PS: co to za szkoła że php uczą :?: chętnie bym się wybrał tongue.gif
Mary$
Cytat
PS: co to za szkoła że php uczą questionmark.gif chętnie bym się wybrał tongue.gif

przecież to zależy od nauczyciela i tego, co on ma zamiar przerobić. ja np. osobiście będąc w II kl. gimnazjum mam Worda, chociaż przerobileśmy całego MS Office w zeszłym roku - powód: nauczyciel się zmienił.
PiratNowegoPokolenia
w gimnazjum jest tylko Office i podstawy Html
nie ma w ogóle programowania ... tylko Logo ...
no cóż taki program :/

ale teraz koniec off topu
Dragon987
jestem w licem o profilu zarządzanie informacją.
A czy może mi ktoś to pokazać w praktyce, bo słabo sie znam na PHP.
Cienki1980
Na gotowca bym nie liczył bo nie na tym nauka polega.
Masz w szkole php czego Ci zazdroszczę więc korzystaj z tego. Zajrzyj do manuala i zacznij kombinować sam.

Pokaż co stworzysz a na pewno Ci pomożemy
Dragon987
mam tak: rejestracja.php i tam jest formularz
  1. <?php
  2. <form action="dane.php" method="post">
  3. Podaj login: <input type="text" name="login"><br>
  4. Podaj has&#322;o: <input type="text" name="haslo"><br>
  5. Podaj Imie: <input type="text" name="imie"><br>
  6. Podaj Nazwisko: <input type="text" name="nazwisko"><br>
  7. <input type="submit" value="wyslij">
  8. </form>
  9. ?>

Pózniej mam wyświetlające te dane (czy jest dobrze, czybłąd) dane.php
  1. <?php
  2. //skrypt odbierający wynik
  3. if (( $_POST['login']=="") or ($_POST['haslo']=="") or ($_POST['imie']=="") or ($_POST['nazwisko']=="" ) ) {
  4. print ("uzupełnij formularz <br>");
  5. print ('<a href="java script:history.back()">Cofnij sie</a>');
  6. } else {
  7. print ("Twój login: ".$_POST['login']); 
  8. print ("<br> Twoje Imie i Nazwisko: " .$_POST['imie']. " "  .$_POST['nazwisko']);
  9. }
  10. ?>
  11.  
  12.  
  13.  
  14.  
  15. <?php
  16. // Program tworzy plik tekstowyi zapisuje tam nasze imię i niazwisko
  17. $plik=@fopen("user.txt", "r+");
  18. if (!($plik) and ( $_POST['login']=="") or ($_POST['haslo']=="") or ($_POST['imie']=="") or ($_POST['nazwisko']=="" ) ) {
  19. print ("<br> <b> błąd: Nie pełne dane </b>");
  20. } else {
  21. print "<br> <br> plik został utworzony";
  22. fputs ($plik, $_POST['login']);
  23. fputs ($plik, " ");
  24. fputs ($plik, $_POST['haslo']);
  25. fputs ($plik, " ");
  26. fputs ($plik, $_POST['imie']);
  27. fputs ($plik, " ");
  28. fputs ($plik, $_POST['nazwisko']);
  29. fputs ($plik, " ");
  30. fputs ( $plik, date('d-m-y') );
  31. fclose ($plik);
  32. }
  33. ?>


Co trzeba zmienić, dopisać?

Jak zrobić logowanie??
Cienki1980
Jest całkiem OK na pierwszy rzut oka. Ja zamieniłbym rozdzielenie kolejnych wpisów w linii ( login, hasło, imię, nazwisko ) nie spacją " " a np średnikiem ";". Na końcu dopisywałbym znak nowej linii.

Zamiast "r+" użyłbym "a+".

Co do odczytywania ( logowania ) formularz jest chyba jasny, przekazanie wpisanych danych też ( robisz to w tej chwili OK ).
Proponowałbym otworzyć plik za pomocą file(). Otrzymasz tablicę, gdzie każdy rekord w tej tablicy będzie linią pobraną z pliku. Na każdym elemencie tej tablicy używasz explode() z separatorem ";" ( dlatego spacja mogłaby być niekorzystna, bo ktoś mógł wpisać dwa nazwiska ze spacją ... to że wpisze średnik też jest możliwe, ale mniej prawdopodobne ). W wyniku otrzymasz kolejną tablicę , gdzie pierwszym elementem będzie login a drugim hasło ... porównasz te dane z tymi z formularza, jeżeli będą takie same znaczy to, że ktoś wpisał dobre dane.

To będzie dobry początek.
Dragon987
Cytat(Cienki1980 @ 15.03.2007, 22:58:32 ) *
Na końcu dopisywałbym znak nowej linii.


Jak zrobić aby kazdy uzytkownik który sie zarejestrował był linijke nizej, a nie obok?
Cienki1980
Np tak:
  1. <?php
  2. fputs($plik,Chr(13).Chr(10));
  3. ?>
Dragon987
no wszystko ok, ale teraz jak zrobić zeby (zalogować) odczytywało mi uzytkownika i hasło zeby sie zgadzało. Bo sobie nie daje rady.
Cienki1980
Dwa posty wyżej opisałem Ci prawie krok po kroku jak miałoby wyglądać logowanie.

Jeżeli coś pisałeś już z tego co napisałem powyżej, to pokaż co. Jeżeli będziesz miał jakieś błędy poszukamy, naprawimy, pomożemy.
rabbittm
ja to zrobilem tak: jest tu kilka rzeczy nie potrzebnych jak sesje itp ale moze cos pomoge

  1. <?php
  2.  
  3.  
  4. ?>
  5.  
  6. <html>
  7. <head>
  8. <title>Rejestrowanie nowego uzytkownika</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  10. </head>
  11. <body>
  12. <center>
  13.  
  14. <?php
  15.  
  16.  
  17. $name = $_POST['name'];
  18. $lastname = $_POST['lastname'];
  19. $login_rej = $_POST['login_rej'];
  20. $haslo_rej = $_POST['haslo_rej'];
  21. $form_zgodny = "tak";
  22. $wykonano = "nie";
  23.  
  24.  
  25.  
  26. if(!$name || !$lastname || !$login || !$haslo )
  27. {
  28.  
  29. echo 'Wypelnij wszystkie pola<br><br>';
  30.  
  31. }
  32.  
  33. ?>
  34.  
  35.  
  36.  
  37. <?php
  38.  
  39. echo '<font color="red">';
  40.  
  41. if( $name=="" )
  42. {
  43. echo 'Podaj imie<br>';
  44. $form_zgodny = "nie";
  45. }
  46.  
  47. if( $lastname=="" )
  48. {
  49. echo 'Podaj nazwisko<br>';
  50. $form_zgodny = "nie";
  51. }
  52.  
  53. if( $login_rej=="" )
  54. {
  55. echo 'Podaj login<br>';
  56. $form_zgodny = "nie";
  57. }
  58.  
  59. if( $haslo_rej=="" )
  60. {
  61. echo 'Podaj haslo<br>';
  62. $form_zgodny = "nie";
  63. }
  64.  
  65. if( $haslo_rej=="" )
  66. {
  67. echo 'Powtorz haslo<br>';
  68. $form_zgodny = "nie";
  69. }
  70.  
  71. echo '</font>';
  72.  
  73.  
  74. if( $form_zgodny=="tak")
  75. {
  76.  
  77.  
  78. $polacz_serwer=mysql_connect('mysql3.yoyo.pl','db129224','haslo1');
  79.  
  80. if ($polacz_serwer==false)
  81. {
  82. echo "brak polaczenia z serwerem<br>";
  83.  
  84. }
  85.  
  86. if(mysql_select_db('db129224')==null)
  87. {
  88. echo "brak polaczenia z baza danych<br>";
  89. }
  90.  
  91. $zapytanie1=mysql_query("Select login from uzytkownicy where login = "$login_rej"");
  92. $Pole = mysql_fetch_array($zapytanie1);
  93.  
  94.  
  95. if ($Pole)
  96. {
  97.  
  98. echo "Login: <b> $login_rej </b> juz istnieje";
  99.  
  100. }
  101. else {
  102.  
  103.  
  104. $zapytanie="insert into uzytkownicy values(null,'".$name."','".$lastname."','".$login_rej."',PASSWORD('".$haslo_rej."') )";
  105. $wynik=mysql_query($zapytanie);
  106.  
  107. if ($wynik)
  108. {
  109. echo 'Zostales zarejestrowany';
  110. echo '<br><br><b><a href="index.php">Przejdz do panelu logowania</a></b>';
  111. }
  112.  
  113. $wykonano = "tak";
  114. }
  115.  
  116.  
  117. if( $wykonano=="nie" )
  118. {
  119. //echo '<font color="red">';
  120. //echo '<br>BLEDNA REJESTRCJA!!! wypelnij wszystkie pola<br>';
  121. //echo '</font>';
  122. }
  123. }
  124. ?>
  125. <br><br><br>
  126. </center>
  127. <form action= "rejestracja.php" method= "post">
  128. <table align="center" border="1">
  129. <tr>
  130. <td width="150"> Imie </td>
  131. <td align=center><input type= "text" name= "name" <?php echo 'value='.$name; ?> ></td>
  132. </tr>
  133. <tr>
  134. <td width="150"> Nazwisko </td>
  135. <td align=center><input type= "text" name= "lastname" <?php echo 'value='.$lastname; ?> ></td>
  136. </tr>
  137. <tr>
  138. <td width="150"> login </td>
  139. <td align=center><input type= "text" name= "login_rej" <?php echo 'value='.$login_rej; ?> ></td>
  140. </tr>
  141. <tr>
  142. <td width="150"> haslo </td>
  143. <td align=center><input type= "password" name= "haslo_rej" <?php echo 'value='.$haslo_rej; ?> ></td>
  144. </tr>
  145. <tr>
  146. <td width="150"> potwierdz haslo </td>
  147. <td align=center><input type= "password" name= "haslo_rej" <?php echo 'value='.$haslo_rej; ?> ></td>
  148. </tr>
  149.  
  150. <td colspan= "2"><br><br><input type= "submit" value= "  rejestruj  "></td>
  151.  
  152. </table>
  153. </form>
  154.  
  155. </body>
  156. </html>



-------------------------
proszę pamiętać o BBCode
tym razem poprawiłem
~Cienki1980
PiratNowegoPokolenia
Zagrożenie zhackowaniem ... dodaj addslashes przy wartościach pobieranych z $_POST ...
Pozatym chłopak chciał za pomocą plików to zrobić ...
PS: Dragon987 ... nie otrzymasz tu dokładnego sposobu jak to zrobić ... Opis tego jak to ma wyglądać masz już napisany
Sedziwoj
Od razu postulował bym aby sprawdzać co użytkownik wpisał. Nawet takie proste str_replace() aby pozbyć się średników (jeśli mają rozdzielać pola w pliku). Ale również można by było więcej sprawdzać. Co do addslashes() to nie zawsze jest potrzebna, ale trzeba by było sprawdzić czy jest włączone automatyczne dodawanie. Jednak te znaki które mogły by powodować kłopoty i tak nie powinny być w danych podanych przez użytkownika, więc tu sprawdzenie danych też się przydało. (imię, nazwisko to litery i myślnik nic więcej, login też ograniczone, a hasło kodowane nic nie może zrobić złego)
Jak również dorzucił bym kodowanie hasła np. md5() aby nie dało się go podejrzeć.
(koniec linii może być w stałej EOL, lub jako "\r\n" [tak w windowsie, bo linux "\n" a mac "\r"])
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.