Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Edycja profilu na plikach
danielwwa91
post
Post #1





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

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


Mam następny problem, otóż zrobiłem sobie panel użytkownika, w ktorym chciałbym, aby użytkownicy mogli edytować swoje dane. Niestety nie mam pojęcia jak do tego się zabrać.. siedzę już nad tym 2 dzień i nadal nic konkretnego. Proszę Was o pomoc.

plik rejestracja.php, w którym się tworzy profil usera:

  1. <div class="post"><Br>
  2. <div id="newstitle">Rejestracja w serwisie xxx - Krok 2</div>
  3. <div id="newsbg">
  4.  
  5. <?php
  6.  
  7.  
  8. if (($nick=='') && ($pass2=='') && ($pass=='')){
  9.  
  10. echo ('Pola oznaczone gwiazdką należy wypełnić!'); die;}
  11.  
  12. if (strpos($nick,' ')) {echo('Nick nie może zawierać spacji!'); die;}
  13. if (strlen($pass)<3){ echo('Podane hasło jest za krótkie!'); die;}
  14. if (strlen($pass)>8){ echo('Podane hasło jest za długie!'); die;}
  15.  
  16. if (strlen($nick)<3){ echo('Podany nick jest za krótki!'); die;}
  17. if (strlen($nick)>15){ echo('Podany nick jest za długi! (max 15 znaków)'); die;}
  18.  
  19. if ($nick==''){ echo ('Pola oznaczone gwiazdką należy wypełnić!'); die;}
  20.  
  21. $usernew = "users/".$nick.".php";
  22. if (file_exists($usernew)) {
  23. print ("Login <b>$nick</b> jest już zarejestrowany w naszej bazie. Prosimy wybrać inny."); } else {
  24.  
  25. if ($pass == $pass2){
  26.  
  27. $dataut=date('d.m.Y, H:i:s');
  28. $adduser = fopen ("users/".$nick.".php", "w");
  29. $zawuser = "$grupa|$nick|$pass|$email|$imie|$dataut";
  30.  
  31.  
  32. fputs ($adduser, $zawuser);
  33. fclose ($adduser);
  34.  
  35. $adduserpa = "users/profile/".$nick.".php";
  36.  
  37. $_SESSION['usernick']=$nick;
  38. $_SESSION['username']=$imie;
  39. $_SESSION['usermail']=$email;
  40.  
  41. if (file_exists($adduserpa)) {
  42. print ("Login <b>$nick</b> jest już zarejestrowany w naszej bazie. Prosimy wybrać inny."); } else {
  43.  
  44. $adduserp = fopen ("users/profile/".$nick.".php", "w");
  45. $zawuserp = "
  46.  
  47. <div class=post><br>
  48.  
  49. <div id=newstitle>Przeglądasz profil użytkownika: $nick</div>
  50.  
  51. <div id=newsbg>
  52.  
  53. <div id=userprofile>Informacje podstawowe:</div>
  54. <div id=userprofilebg>
  55.  
  56. Nick użytkownika: <b>$_SESSION[usernick]</b><br>
  57. Data utworzenia: <b>$dataut</b><br>
  58. Poziom: <b>$grupa/4</b><br><br>
  59.  
  60.  
  61. </div>
  62.  
  63. <div id=userprofile>O użytkowniku:</div>
  64. <div id=userprofilebg>
  65.  
  66. Imię: <b>$_SESSION[username]</b><br>
  67. Data urodzenia: <b></b><br>
  68. Skąd: <b></b><br>
  69. Email: <b>$_SESSION[usermail]</b><br>
  70.  
  71. </div>
  72.  
  73. </div>
  74.  
  75. ";
  76.  
  77. fputs ($adduserp, $zawuserp);
  78. fclose ($adduserp); }
  79.  
  80. echo ('<font color=green><b>Witaj '.$nick.'! Dziękujemy za rejestrację w serwisie fwsite.pl!</b></font><br><br>
  81.  
  82. Twój nick: <b>'.$nick.'</b> | Hasło: <b>'.$pass.'</b> - prosimy zapisać te dane.<br>
  83.  
  84. Należysz do grupy użytkowników!
  85.  
  86. <br><br>
  87.  
  88. Możesz się teraz <a href=?site=logowanie>zalogować</a> na swoje konto!');
  89.  
  90. }
  91.  
  92. else {
  93. echo ('Podane hasła są różne!'); }
  94. }
  95.  
  96. ?>
  97.  
  98. </div>


plik użytkownika zaraz po rejestracji (nie mylić z profilem):

  1. 1|danielwwa|abc123|danielwwa@o2.pl|Daniel


profil użytkownika po rejestracji:

  1.  
  2. <div class=post><br>
  3.  
  4. <div id=newstitle>Przeglądasz profil użytkownika: danielwwa</div>
  5.  
  6. <div id=newsbg>
  7.  
  8. <div id=userprofile>Informacje podstawowe:</div>
  9. <div id=userprofilebg>
  10.  
  11. Nick użytkownika: <b>danielwwa</b><br>
  12. Poziom: <b>1/4</b><br><br>
  13.  
  14. </div>
  15.  
  16. <div id=userprofile>O użytkowniku:</div>
  17. <div id=userprofilebg>
  18.  
  19. Imię: <b>Daniel</b><br>
  20.  
  21. </div>
  22.  
  23. </div>
  24.  


I to chyba będzie na tyle. Wiem, że trzeba będzie wczytać to inputa np. imię i zrobić <form> wtedy zadziała, ale nie wiem jak zacząć.

Z góry dziękuję za pomoc.

Ten post edytował danielwwa91 12.01.2010, 02:26:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Takiego prostego pliku profilu nie potrafisz wczytać? Jest funkcja explode(). Polecałbym jednak wybrać co innego, nawet serializację tablic PHP, bo teraz już Ci mogę powiedzieć, że nie przewidziałeś sytuacji, co będzie jak ktoś sobie wpisze znak "|" w formularzu. Sprawa jest prosta: masz wiele braków w podstawach programowania i dlatego nie potrafisz się z tym uporać. Podziel sobie kod na jakieś moduły, wydziel wspólne części oraz te, które się zmieniają. Masz trzy podstawowe rzeczy do zaprogramowania:

1. Dodawanie - wczytuje formularz, zapisuje do pliku.
2. Edycja - wczytuje plik, wstawia do formularza, odbiera formularz, zmienia możliwe do zmiany dane, zapisuje do pliku.
3. Usuwanie - kasuje plik.

W ogóle powinieneś to na bazach danych robić. Profile + pliki to lekko beznadziejny pomysł.

Kolejny mankament: co ma wspólnego rejestracja z sesją? I po co przechowujesz w niej tyle danych, skoro wystarczy Ci sam identyfikator i odczytanie całej reszty z pliku profilu?

Błędy typowo programistyczne:

1. if (($nick=='') - tak się nie pisze. Jakie $nick? Z jakiego to antycznego źródła się uczysz? Idź je wyrzuć, bo naucza takiego bałaganu i takich muzealnych rzeczy, że wstyd. $_POST, $_GET należy używać.

2. Dlaczego profil przechowujesz jako HTML? Co stoi na przeszkodzie, by go zapisać w takiej samej postaci, jak podstawowe dane? W ten sposób sam sobie zamknąłeś drogę do jego prostej edycji.

3. Po co tyle bezsensownych zmiennych tymczasowych?

  1. $adduserpa = "users/profile/".$nick.".php";


Wykorzystujesz ją tylko w jednym miejscu, wywal ją, albo bądź konsekwentny.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 02:58