Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rejestracja - problem z nadpisywaniem i dodawiem niepotrzebnych pól
Forum PHP.pl > Forum > PHP
dzesi
Witam smile.gif , mam problem ze sktyptem rejestracji który zaczołem dokanczać i mam kilka problemów z tym zwiazanych .Za bardzo czasu nie mam na doskonalenie swoich umiejetnosci w php , ale zawsze po pracy 1 godzinke poświecam:)
1.Nawet jak nic nie wpisze w formularze , to i tak ddaje mi puste pola ,chciałbym usunąć tą niedokonałośc w moim skrypcie
2.o to ze juz od tego dłubania w tym skrypcie juz mi sie myli , czy dobrze robie mechanizm błedów , bo niby dobrze ale one nie do końca działaja dobrze. Mam nadzieje ze mi pomozecie . Prosił bym o podanie przykładów kodu i co robie zle smile.gif

  1. <?php
  2. header("Content-type: text/html; charset=utf-8");
  3. class Rejestracja
  4. {
  5.  private $login;
  6. private $haslo;
  7. private $haslotwo;
  8.  
  9.  function __construct() {
  10.  include_once('config_database.php');
  11. //odbieranie danych
  12.  
  13.  
  14. $this->login=$_POST['login'];
  15. $this->haslo=$_POST['haslo'];
  16. $this->haslotwo =$_POST['haslotwo'];
  17.  
  18. }
  19.  
  20. public function sprawdzanie_formularza()
  21. {
  22. try {
  23. if(empty($this->login))
  24. {
  25. throw new Exception("b�ad nie poda�es loginu");
  26. }
  27. elseif(empty($this->haslo))
  28. {
  29. throw new Exception("B��d nie poda�e� hasla");
  30. }
  31. if (empty($this->haslotwo)) {
  32. throw new Exception("B��d nie poda�e� hasla");
  33. }
  34. }
  35. catch(Exception $e)
  36. {
  37. echo $e->getMessage();
  38. }
  39. }
  40.  public function polaczenie()  {
  41. $polaczenie = mysql_connect(CONNECT,USER,PASSWORD) or die(connect_error);
  42.  mysql_select_db(DATABASE) or die(database_error);
  43.  }
  44. public function spraw_user() {
  45.  $zapytanielog = "SELECT * FROM `user` WHERE login='" .$this->login . "'";
  46.  $sprawdzlog = mysql_query($zapytanielog) or die(mysql_error());
  47.  /* return*/$num_rows= mysql_num_rows($sprawdzlog) > 0;  
  48.  $ob=mysql_fetch_object($sprawdzlog);  
  49.  }
  50. public function spradzanie_hasla() {
  51.  
  52.  if ($this->haslo!==$this->haslotwo);
  53.  
  54. }
  55. public function sprawdzanie_loginu()
  56. {
  57. if($this->login==$ob->login);
  58.  
  59. }
  60. public function rej_user() {
  61.  $zapisrej="INSERT INTO `user`(`login`,`haslo`)VALUES('" . $this->login . "','" . $this->haslo . "')";
  62. return mysql_query($zapisrej);
  63. }
  64. }
  65. $start=new Rejestracja();
  66. if (isset($_POST['rej']))
  67. {
  68. $start->sprawdzanie_formularza();
  69. }
  70. if(!$start->spradzanie_hasla())
  71. {
  72. print "Podaje� z�e has�o !!!";
  73. }
  74. if(!$start->sprawdzanie_loginu())
  75. {
  76. print "Taki user istnieje";
  77. }
  78. $start->polaczenie();
  79. if ($start->spraw_user())
  80. {
  81.  echo "strona rejestracji";
  82. }
  83.  
  84. if (!$start->rej_user())
  85. {
  86.  echo "Nie udalo sie dodac";
  87. }
  88.  
  89.  
  90. ?>
Cysiaczek
To jest źle
  1. <?php
  2. public function sprawdzanie_formularza()
  3. {
  4. try {
  5. if(empty($this->login))
  6. {
  7. throw new Exception("b�ad nie poda�es loginu");
  8. }
  9. elseif(empty($this->haslo))
  10. {
  11. throw new Exception("B��d nie poda�e� hasla");
  12. }
  13. if (empty($this->haslotwo)) {
  14. throw new Exception("B��d nie poda�e� hasla");
  15. }
  16. }
  17. catch(Exception $e)
  18. {
  19. echo $e->getMessage();
  20. }
  21. }
  22. ?>



powinno być tak:
  1. <?php
  2. public function sprawdzanie_formularza()
  3. {
  4.  
  5. if(empty($this->login))
  6. {
  7. throw new Exception("b�ad nie poda�es loginu");
  8. }
  9. elseif(empty($this->haslo))
  10. {
  11. throw new Exception("B��d nie poda�e� hasla");
  12. }
  13. if (empty($this->haslotwo)) {
  14. throw new Exception("B��d nie poda�e� hasla");
  15. }
  16. }
  17. ?>


i na zewnątrz
  1. <?php
  2. try
  3. {
  4.  $obiekt->sprawdzanie_formularza()
  5. }
  6. catch(Exception $e)
  7. {
  8.  echo $e->getMessage();
  9. }
  10. ?>


Pozdrawiam.
dzesi
Dzinx za odpwoiedz ale mam problem z tym ze nioe wiem jak zablokować dodawanie pustych rekordów do bazy , tzn np jak wywołam strone rejestruj.php lub wysle pusty formularz t i tak sie dodaje . Szukałęm w necie ale nic sesownego co by mi pomogło nie znalzłem smile.gif
c0cr0ach
Przed dodaniem rekordu do bazy sprawdzaj, czy zmienne w $_POST (tj. login, haslo) są ustawione. Możesz to najprościej zrobić używając instrukcji warunkowej.
matix
Najlepiej wykorzystaj FilterIterator, wrzuć po prostu całą tablicę $_POST i sprawdź, co wywala. I potem:
  1. <?php
  2. if ($oFilter->hasRefused())
  3. echo 'Error: Nie wypełniłeś wszystkich formularzu, lub wypełniłeś je niepoprawnie';
  4. ?>


I tyle,
Pozdro winksmiley.jpg
dzesi
matix możesz dać przykład bo nie za bardzo rozumiem o co ci chodzi i jak mam sie za to zabrać ?
matix
W takim razie wstawiam Kawałek kodu z FilterIterator (ja go wykorzystuję w moim fw, aby sprawdzić, aby pousuwać kilka konkretnych plików z mapy używanej do autoloadu):

  1. <?php
  2. class Matix_FilterMap extends FilterIterator {
  3.  
  4. public
  5. $aDisAllowed = array ('.', '..', ''),
  6. $aArrayRefused = array();
  7.  
  8.  
  9. public function __construct($oInstance)
  10. {
  11. parent::__construct($oInstance);
  12. }
  13.  
  14. public function accept()
  15. {
  16. if ( (in_array($this->current(), $this->aDisAllowed)) ) {
  17. $this->aArrayRefused[] = $this->current();
  18. return false;
  19.  }
  20.  
  21. return true;
  22. }
  23.  
  24. public function getRefused()
  25. {
  26.  return $this->aArrayRefused;
  27. }
  28.  
  29. public function hasRefused()
  30. {
  31.  return $this->aArrayRefused != array();
  32. }
  33.  
  34. }
  35. ?>


Wykorzystujesz to np, tak:

  1. <?php
  2. private function _CreateMap()
  3. {
  4. $oFiles = new Matix_FilterMap(new RecursiveIteratorIterator(new RecursiveDirectoryIterator('library')));
  5.  
  6. foreach ($oFiles as $sFile)
  7. $aMap[preg_replace('/(.*)..*/is', '$1', $sFile->getFileName())] = str_replace('', '/', $sFile->getPathName('/));
  8.  
  9. $sMap = serialize($aMap);
  10.  
  11. return (bool) file_put_contents(self::MAP_TEMP_FILE_NAME, $sMap);
  12. }
  13. ?>


W twoim przypadku byłoby to:

  1. <?php
  2. $oFiles = new Matix_FilterMap($_POST);
  3. ?>


Pokombinuj. Bardzo fajne, wydajne i przede wszystkim obiektowe i przejrzyste rozwiązanie.

Pozdro,
Matix.
dzesi
Cysiaczek .Twoje rozwizanie może jest poprawne ale prawde mówiac wywala mi dziwny błąd
Fatal error: Uncaught exception 'Exception' with message 'b�ad nie poda�es loginu' in C:\AppServ\www\log_rej\rejestracja.php:25 Stack trace: #0 C:\AppServ\www\log_rej\rejestracja.php(69): Rejestracja->sprawdzanie_formularza() #1 {main} thrown in C:\AppServ\www\log_rej\rejestracja.php on line 25
o to kawałek tej klasy smile.gif
  1. <?php
  2. public function sprawdzanie_formularza()
  3. {
  4.  
  5. if(empty($this->login))
  6. {
  7. throw new Exception("b�ad nie poda�es loginu");
  8. }
  9. elseif(empty($this->haslo))
  10. {
  11. throw new Exception("B��d nie poda�e� hasla");
  12. }
  13. if (empty($this->haslotwo)) {
  14. throw new Exception("B��d nie poda�e� hasla");
  15. }
  16.  
  17. }
  18.  
  19.  
  20. //////////////////////////////////////////////
  21. $start=new Rejestracja();
  22. if (!isset($_POST['rej']))
  23. {
  24. $start->sprawdzanie_formularza();
  25. }
  26. try{
  27.  $start->sprawdzanie_formularza();
  28. }
  29. catch(Exception $e)
  30. {
  31.  echo $e->getMessage();
  32. }
  33. if(!$start->spradzanie_hasla())
  34. {
  35. print "Podaje� z�e has�o !!!";
  36. }
  37. if(!$start->sprawdzanie_loginu())
  38. {
  39. print "Taki user istnieje";
  40. }
  41. $start->polaczenie();
  42. if ($start->spraw_user())
  43. {
  44.  echo "strona rejestracji";
  45. }
  46.  
  47. if (!$start->rej_user())
  48. {
  49.  echo "Nie udalo sie dodac";
  50. }
  51. ?>

Dodaje też spradzanie czy login i haslo zostało wpisane , ale to tak nie działa i tak mi sie puste rekordy dodaja do bazy
Cysiaczek
  1. <?php
  2. $start=new Rejestracja();
  3. if (!isset($_POST['rej']))
  4. {
  5. $start->sprawdzanie_formularza(); // a gdzie blok try catch? Dlatego wywala uncatched
  6. }
  7.  
  8. // dlaczego to jest dopiero tu?
  9. try{
  10.  $start->sprawdzanie_formularza();
  11. }
  12. catch(Exception $e)
  13. {
  14.  echo $e->getMessage();
  15. }
  16. ?>


Pozdrawiam.
dzesi
Dzin za odpowiedz, ale sam sie tego dopatrzyłem bo dwa razy wywołanie tej samej funkcji poza klasa smile.gif

Witam ponownie aaevil.gif .Już mam takie nerwy że szok z niczym nie maiłem wiekszych problemów jak z tym skryptem rejestracji Jedno co mi nie działa to ze jak nawet wpisze dane w formularz czy ich nie wpisze to tak mi sie pokazuja błedy tzn nie podałes loginu nie podałes hasła , taki user istnieje .i nie do konca catch i try dziaął tzn jak nic nie wpisze to mi tylko podaje Nie podałes loginu a reszta jak by gdzieś gineła i sie nie wyświetlała .A i zrobiłem an ifach ten system zeby sprawzdał czy dany user podał haslo i login ale to teraz nie do konca działa bo i tak puste pola mi sie dodaja w abzie czy ktoś może mi w końcu pokazać na przykładzie jak to powinoo działać i wygladać
  1. <?php
  2. header("Content-type: text/html; charset=utf-8");
  3. class Rejestracja
  4. {
  5.  private $login;
  6. private $haslo;
  7. private $haslotwo;
  8.  
  9.  function __construct() {
  10.  include_once('config_database.php');
  11. //odbieranie danych
  12.  
  13.  
  14. $this->login=$_POST['login'];
  15. $this->haslo=$_POST['haslo'];
  16. $this->haslotwo=$_POST['haslotwo'];  
  17.  
  18. }
  19.  
  20.  
  21.  
  22. public function sprawdzanie_formularza()
  23. {
  24.  
  25. if(empty($this->login))
  26. {
  27. throw new Exception("b�ad nie poda�es loginu");
  28. }
  29. if(empty($this->haslo))
  30. {
  31. throw new Exception("B��d nie poda�e� hasla");
  32. }
  33. if (empty($this->haslotwo)) {
  34. throw new Exception("B��d nie poda�e� hasla");
  35. }
  36. exit();
  37. }
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  public function polaczenie()  {
  44. $polaczenie = mysql_connect(CONNECT,USER,PASSWORD) or die(connect_error);
  45.  mysql_select_db(DATABASE) or die(database_error);
  46.  }
  47. public function spraw_user() {
  48.  $zapytanielog = "SELECT * FROM `user` WHERE login='" .$this->login . "'";
  49.  $sprawdzlog = mysql_query($zapytanielog) or die(mysql_error());
  50. /* return*/ $num_rows= mysql_num_rows($sprawdzlog) > 0;  
  51.  $ob=mysql_fetch_object($sprawdzlog);  
  52.  }
  53. public function spradzanie_hasla() {
  54.  
  55.  if ($this->haslo!=$this->haslotwo);
  56.  
  57. }
  58. public function sprawdzanie_loginu()
  59. {
  60. if($this->login==$ob->login);
  61.  
  62. }
  63. public function rej_user() {
  64.  $zapisrej="INSERT INTO `user`(`login`,`haslo`)VALUES('" . $this->login . "','" . $this->haslo . "')";
  65. return mysql_query($zapisrej);
  66. }
  67. }
  68. $start=new Rejestracja();
  69. if (!isset($_POST['rej']))
  70. {
  71. try{
  72.  $start->sprawdzanie_formularza();
  73. }
  74. catch(Exception $e)
  75. {
  76.  echo $e->getMessage();
  77. }
  78. }
  79.  
  80. if(!$start->spradzanie_hasla())
  81. {
  82. echo"Podajeś złe hasło";
  83. }
  84. if(!$start->sprawdzanie_loginu())
  85. {
  86. echo "Taki user istnieje";
  87. }
  88. $start->polaczenie();
  89. if ($start->spraw_user())
  90. {
  91.  echo "strona rejestracji";
  92. }
  93.  
  94. if (!$start->rej_user())
  95. {
  96.  echo "Nie udalo sie dodac usera";
  97. }
  98.  
  99.  
  100. ?>

Bardzo bym prośił o pokazenie tego jako kodu .troche mi gupio że w php pisze już ponad 1,5 roku a i tak mało wiem i nie do końca wiem jak cos zrobić, ale człowiek uczy sie przeż całe zycie sadsmiley02.gif

Witam już wyrywam sobie włosy z głowy i już trace cierpliwość kk.... aaevil.gif
Czy któryś z bardziej doświadczonych programistów niż ja może mi wkońcu pomóc.
Prubuje zrrobić system błedów ale wogole mi nie wychodzi ,też wogóle nie dodaje wartości do bazy nie wiem może juz za długo przy nim siedze i nie widze błędów .Bardzo prosze o pomoc. , i żeby ktoś pokazał mi to w kodzie jak to powinno być .
ps:Jeszcze tyle zcasu sie nie męczyłem z takim skryptem sciana.gif sadsmiley02.gif
  1. <?php
  2. header("Content-type: text/html; charset=utf-8");
  3. class Rejestracja
  4. {
  5.  private $login;
  6. private $haslo;
  7. private $haslotwo;
  8.  
  9.  function __construct() {
  10.  include_once('config_database.php');
  11. //odbieranie danych
  12.  
  13.  
  14. $this->login=$_POST['login'];
  15. $this->haslo=$_POST['haslo'];
  16. $this->haslotwo=$_POST['haslotwo'];  
  17.  
  18. }
  19.  
  20.  
  21. public function sprawdzanie_formularza()
  22. {
  23. if(empty($this->login))
  24. {
  25. throw new Exception("błąd nie podałeś loginu");
  26. }
  27. if(empty($this->haslo))
  28. {
  29. throw new Exception("B��d nie podałesś hasla");
  30. }
  31. if (empty($this->haslotwo)) {
  32.  
  33. throw new Exception("Błąd nie podałeś hasla");
  34. }
  35.  if($this->haslo != $this->haslotwo) {
  36. $formOk = false;
  37. throw new Exception("Hasla musza byc identyczne.");
  38. }
  39.  
  40. }
  41.  
  42.  
  43.  public function polaczenie()  {
  44. $polaczenie = mysql_connect(CONNECT,USER,PASSWORD) or die(connect_error);
  45.  mysql_select_db(DATABASE) or die(database_error);
  46.  }
  47. public function spraw_user() {
  48.  $zapytanielog = "SELECT * FROM `user` WHERE login='" .$this->login . "'";
  49.  $sprawdzlog = mysql_query($zapytanielog) or die(mysql_error());
  50. return $num_rows= mysql_num_rows($sprawdzlog) > 0;  
  51.  $ob=mysql_fetch_object($sprawdzlog);  
  52.  }
  53.  /* public function spradzanie_hasla() {
  54.  
  55.    if ($this->haslo!=$this->haslotwo); // 
  56.  
  57. }
  58. public function sprawdzanie_loginu()
  59. {
  60. if($this->login!=$ob->login);
  61.  
  62. }*/
  63. public function rej_user() {
  64. if( $this->sprawdzanie_formularza() && $this->spraw_user()){
  65.  $zapisrej="INSERT INTO `user`(`login`,`haslo`)VALUES('" . $this->login . "','" . $this->haslo . "')";
  66.  return mysql_query($zapisrej);
  67. }
  68.  
  69. }
  70. }
  71. $start=new Rejestracja();
  72. $start->polaczenie();
  73. if (!isset($_POST['rej']))
  74. {
  75. try{
  76.  $start->rej_user();
  77. }
  78. catch(Exception $e)
  79. {
  80.  echo $e->getMessage();
  81. }
  82. }
  83.  
  84.  
  85. /*if(!$start->spradzanie_hasla())
  86. {
  87. echo"Podajeś złe hasło";
  88. }
  89. if(!$start->sprawdzanie_loginu())
  90. {
  91. echo "Taki user istnieje";
  92. }*/
  93.  
  94. //$start->rej_user();
  95. /*
  96. if ($start->spraw_user())
  97. {
  98.  echo "strona rejestracji";
  99. }
  100.  
  101. if (!$start->rej_user())
  102. {
  103.  echo "Nie udalo sie dodac usera";
  104. }
  105. */
  106. ?>
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.