Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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
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
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




1. Sprawdzasz nadane prawa,
2. Ładujesz formularz (wyciągasz z bazy dane z rejestracji),
3. Dalej odbywa się tak, jak zwykle...

EDIT: Zyx jak zwykle szybszy ;p

Ten post edytował Kshyhoo 12.01.2010, 08:51:53
Go to the top of the page
+Quote Post
danielwwa91
post
Post #4





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

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


Zyx, wielkie dzięki, bardzo mi pomogłeś. Na bazach nie robie, bo nie potrafię, najpierw wole nauczyć się na plikach, a później stopniowo zaczynać z bazą danych (IMG:style_emoticons/default/smile.gif) Przepisze to jeszcze raz wg. Twoich rad i zobaczymy co wyjdzie.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A w czym problem. Jest sporo kursów, gdzie można łatwo i bezboleśnie przyswoić sobie np. mysql'a
Go to the top of the page
+Quote Post
danielwwa91
post
Post #6





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

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


Kshyhoo, dzięki ale nie (IMG:style_emoticons/default/smile.gif)
Troszkę zmieniłem system działania, teraz inaczej zapisują się zmienne do pliku usera.
Mam kolejny problem, bo jak chcę się zalogować i wpisuję poprawny login, a hasło błędne, to mnie i tak poprawnie loguje.. jak wpiszę poprawny login i poprawne hasło, to także mnie loguje.
Coś tu musi być nie tak, tylko co?

logowanie2.php:

  1. <div class="post"><br>
  2. <div id="newstitle">Logowanie do panelu użytkownika</div>
  3. <div id="newsbg">
  4.  
  5. <?php
  6.  
  7. if ($pass=='') { echo ('Proszę wypełnić wszystkie pola!'); die;}
  8.  
  9. $userfile = "users/".$nick.".php";
  10.  
  11. if (file_exists($userfile)){
  12.  
  13. $plik = fopen ($userfile, "w");
  14. $zawartosc_pliku = fgets ($plik, 2048);
  15. fclose ($plik);
  16.  
  17. $nickp = $_POST['nick'];
  18. $passp = $_POST['pass'];
  19.  
  20. if(isset($nick) && isset($pass)) {
  21. if ($nick==$nickp && $pass==$passp) {
  22. $_SESSION['zalogowany']=true;
  23.  
  24.  
  25. echo ("<font color=green><b>Witaj $nick! Zostałeś poprawnie zalogowany do
  26.  
  27. serwisu fwsite.pl!</b></font>!<br>Masz teraz całkowity dostęp do serwisu!
  28.  
  29. <br><br>? <a href=index.php>przejdź na stronę główną</a>");
  30. }
  31. else {
  32. echo ('<font color=red>Wprowadzone hasło jest błędne!</font><br><br><a
  33.  
  34. href=java script:history.back();>? wróć i popraw</a>');
  35. die;
  36. }
  37. }
  38. }
  39. else {
  40. echo "<font color=red>Użytkownik <b>$nick</b> nie istnieje!</font>";
  41. };
  42. ?>
  43.  
  44. </div>


rejestracja2.php:

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


i przykładowy plik usera:

  1. <?php $nick="daniel"; $pass="haslo"; $email="danielwwa@xx.pl"; $imie="Daniel"; $poziom="1"; ?>


kurcze już naprawdę nie wiem co może być nie tak.. proszę Was o pomoc.

Ten post edytował danielwwa91 13.01.2010, 00:30:20
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Zobacz, jak się logujesz:
  1. $nickp = $_POST['nick'];
  2. $passp = $_POST['pass'];
  3.  
  4. if(isset($nick) && isset($pass)) {

Jeżeli login istnieje i hasło istnieje. To można wpisać cokolwiek... Prześledź ten kod:
  1. function autoryzacja($login, $haslo) {
  2. $plik = file("hasla.txt");
  3. foreach($plik as $linijka) {
  4. $dane = explode("|", $linijka);
  5. if (trim($login)==trim($dane[0]) and trim($haslo)==trim($dane[1]))
  6. return true;
  7. }
  8. return false;
  9. }
  10.  
  11. $login = "..."; //pobrane z formularza na stronie
  12. $haslo = "..."; //pobrane z formularza na stronie
  13.  
  14. if (autoryzacja($login, $haslo)) {
  15.  
  16. echo "autoryzacja poprawna...";
  17. // tutaj zawartość strony po autoryzacji
  18.  
  19. } else {
  20.  
  21. echo "login lub hasło podane błędnie...";
  22. // tutaj strona, z prośba o ponowne zalogowanie
  23.  
  24. }


Go to the top of the page
+Quote Post
danielwwa91
post
Post #8





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

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


super, o to chodziło! po prostu zapomniałem o funkcjach (IMG:style_emoticons/default/blinksmiley.gif)
jestem Ci bardzo wdzięczny, oczywiście + dla Ciebie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 22.08.2025 - 15:58