Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP][NIEROZWIĄZANY] Wartość pola - jeśli się zgadza skrypt rejestruje użytkownika.
Forum PHP.pl > Forum > Przedszkole
Casley
Witam!
Chciałbym zapytać czy ktoś z Was pomógłby mi w stworzeniu zapytania, które sprawdzi czy wartość podana w polu podczas rejestrowania znajduje się w bazie (osobna baza z kodami). Jeśli się znajduje, to rejestruje użytkownika, natomiast jeśli nie ma jej to nie rejestruje. Przerobiłem sobie trochę gotowy skrypt. Działa u mnie to teraz tak, że jeśli nie ma takiej wartości w bazie to rejestruje, jeśli jest to nie rejestruje. Chcę zrobić strone na której użytkownik będzie mógł się zarejestrować tylko wtedy, kiedy wprowadzi w odpowiednie pole otrzymany kod od moderatora.

Mój kod:
  1. <?php
  2. //łączenie z baza danych
  3. mysql_connect('localhost', 'MOJ LOGIN', 'MOJE HASLO') or die(mysql_error());
  4. //wybieramy bazę danych
  5. mysql_select_db('w324_ja') or die(mysql_error());
  6.  
  7. ?>
  8. <?PHP
  9.  
  10. echo '<form method="post" action="skrypt.php?akcja=wykonaj">
  11.  
  12. <table><tr>
  13. <td>Nazwa: </td><td><input type="text" name="nick" /></td></tr><br>
  14. <tr><td>Hasło: </td><td><input type="password" name="haslo" /></td></tr><br>
  15. <tr><td>Powtórz hasło: </td><td><input type="password" name="vhaslo" /></td></tr><br>
  16. <tr><td>Email: </td><td><input type="text" name="email" /></td></tr><br>
  17. <tr><td>Powtórz email: </td><td><input type="text" name="vemail" /></td></tr><br>
  18. <td>Kod: </td><td><input type="text" name="kod" /></td></tr><br>
  19.  
  20. <tr><td></td><td><input type="submit" value="Zarejestruj"></td></tr></table>
  21. </form> ';
  22.  
  23. $akcja = $_GET['akcja'];
  24. if ($akcja == wykonaj) {
  25. $nick = substr(addslashes(htmlspecialchars($_POST['nick'])),0,32);
  26. $haslo = substr(addslashes($_POST['haslo']),0,32);
  27. $vhaslo = substr($_POST['vhaslo'],0,32);
  28. $email = substr($_POST['email'],0,32);
  29. $vemail = substr($_POST['vemail'],0,32);
  30. $kod = substr(addslashes($_POST['kod']),0,32);
  31. $kod = trim($kod);
  32. $nick = trim($nick);
  33. //
  34. $nick = substr(addslashes(htmlspecialchars($_POST['nick'])),0,32);
  35. $haslo = substr(addslashes($_POST['haslo']),0,32);
  36. $vhaslo = substr($_POST['vhaslo'],0,32);
  37. $email = substr($_POST['email'],0,32);
  38. $vemail = substr($_POST['vemail'],0,32);
  39. $kod = substr(addslashes($_POST['kod']),0,32);
  40. $kod = trim($kod);
  41. $nick = trim($nick);
  42. //kilka sprawdzen co do nicku i maila
  43. $spr1 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM info WHERE nick='$nick' LIMIT 1")); //czy user o takim nicku istnieje
  44. $spr2 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM info WHERE email='$email' LIMIT 1")); // czy user o takim emailu istnieje
  45. $spr6 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM info WHERE kod='$kod' LIMIT 1")); //czy taki kod istnieje
  46. $pos = strpos($email, "@");
  47. $pos2 = strpos($email, ".");
  48. $emailx = explode("@", $email);
  49. if ($emailx[1] == 'o2.pl') {
  50. $emailx1 = $emailx[0].'@go2.pl';
  51. $emailx2 = $emailx[0].'@tlen.pl';
  52. $spr3 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM info WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1"));
  53. }elseif ($emailx[1] == 'go2.pl') {
  54. $emailx1 = $emailx[0].'@o2.pl';
  55. $emailx2 = $emailx[0].'@tlen.pl';
  56. $spr3 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM info WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1"));
  57. }elseif ($emailx[1] == 'tlen.pl') {
  58. $emailx1 = $emailx[0].'@go2.pl';
  59. $emailx2 = $emailx[0].'@o2.pl';
  60. $spr3 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM info WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1"));
  61. }
  62. $komunikaty = '';
  63. $spr4 = strlen($nick);
  64. $spr5 = strlen($haslo);
  65. //sprawdzenie co uzytkownik zle zrobil
  66. if (!$nick || !$email || !$haslo || !$vhaslo || !$vemail || !$kod) {
  67. $komunikaty .= "<font size='3'>Musisz wypelnic wszystkie pola!</font><br>"; }
  68. if ($spr4 < 3) {
  69. $komunikaty .= "<font size='3'>Login musi mieć przynajmniej 3 znaki</font><br>"; }
  70. if ($spr5 < 4) {
  71. $komunikaty .= "<font size='3'>Hasło musi mieć przynajmniej 4 znaki</font><br>"; }
  72. if ($spr1[0] >= 1) {
  73. $komunikaty .= "<font size='3'>Ten login jest zajęty!</font><br>"; }
  74. if ($spr2[0] >= 1) {
  75. $komunikaty .= "<font size='3'>Ten e-mail jest już używany!</font><br>"; }
  76. if ($email != $vemail) {
  77. $komunikaty .= "<font size='3'>E-maile się nie zgadzają ...</font><br>";}
  78. if ($haslo != $vhaslo) {
  79. $komunikaty .= "<font size='3'>Hasła się nie zgadzają ...</font><br>";}
  80. if ($pos == false OR $pos2 == false) {
  81. $komunikaty .= "<font size='3'>Nieprawidłowy adres e-mail</font><br>"; }
  82. if ($spr3[0] >= 1) {
  83. $komunikaty .= "<font size='3'>Nie można zarejestrować kilku kont na jedną poczte o2.</font><br>"; }
  84. if ($spr6[0] >= 1) {
  85. $komunikaty .= "<font size='3'>Ten kod jest zajęty!</font><br>"; }
  86.  
  87. //jesli cos jest nie tak to blokuje rejestracje i wyswietla bledy
  88. if ($komunikaty) {
  89. <font size="3"><br><br>Popraw blędy:<br>
  90. '.$komunikaty.'<br>';
  91. } else {
  92. //jesli wszystko jest ok dodaje użytkownika i wyswietla informacje
  93. $nick = str_replace ( ' ','', $nick );
  94.  
  95. mysql_query("INSERT INTO `info` (nick, haslo, email, kod)
  96. VALUES('$nick','$haslo','$email','$kod')") or die("Nie mogłem Cię zarejestrować!");
  97.  
  98. echo '<br><font size="3">Zostałes zarejestrowany jako '.$nick.'.</font>';
  99. }
  100. }
  101.  
  102. ?>
Turson
  1. if ($akcja == wykonaj) {

obejmij cudzysłowiem:
  1. if ($akcja === "wykonaj") {



  1. $spr1 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM info WHERE nick='$nick' LIMIT 1")); //czy user o takim nicku istnieje
  2. $spr2 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM info WHERE email='$email' LIMIT 1")); // czy user o takim emailu istnieje
  3. $spr6 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM info WHERE kod='$kod' LIMIT 1")); //czy taki kod istnieje

Dalej masz te same błędy, co już w innym temacie ci wytknąłem...
Casley
Poprawiłem - zatem czy mogę prosić o pomoc w edycji tego kodu, aby wyrzucał to "$komunikaty .= "<font size='3'>Tego kodu nie ma w bazie!</font><br>"; }" wtedy kiedy wpisanej wartości w polu kod nie ma w bazie? Natomiast jeśli wartość wpisana w polu kod będzie się pokrywała z wartością w bazie nie wyrzuci błędu i zarejestruje? Na tę chwilę działa tak, że nie rejestruje jeśli podany kod jest w bazie i analogicznie, jeśli wprowadzonego kodu nie ma w bazie rejestruje.

  1. <?php
  2. //łączenie z baza danych
  3. mysql_connect('localhost', 'MOJ LOGIN', 'MOJEHASLO') or die(mysql_error());
  4. //wybieramy bazę danych
  5. mysql_select_db('w324_ja') or die(mysql_error());
  6.  
  7. ?>
  8. <?PHP
  9.  
  10. echo '<form method="post" action="skrypt.php?akcja=wykonaj">
  11.  
  12. <table><tr>
  13. <td>Nazwa: </td><td><input type="text" name="nick" /></td></tr><br>
  14. <tr><td>Hasło: </td><td><input type="password" name="haslo" /></td></tr><br>
  15. <tr><td>Powtórz hasło: </td><td><input type="password" name="vhaslo" /></td></tr><br>
  16. <tr><td>Email: </td><td><input type="text" name="email" /></td></tr><br>
  17. <tr><td>Powtórz email: </td><td><input type="text" name="vemail" /></td></tr><br>
  18. <td>Kod: </td><td><input type="text" name="kod" /></td></tr><br>
  19.  
  20. <tr><td></td><td><input type="submit" value="Zarejestruj"></td></tr></table>
  21. </form> ';
  22.  
  23. $akcja = $_GET['akcja'];
  24. if ($akcja === "wykonaj") {
  25. $nick = substr(addslashes(htmlspecialchars($_POST['nick'])),0,32);
  26. $haslo = substr(addslashes($_POST['haslo']),0,32);
  27. $vhaslo = substr($_POST['vhaslo'],0,32);
  28. $email = substr($_POST['email'],0,32);
  29. $vemail = substr($_POST['vemail'],0,32);
  30. $kod = substr(addslashes($_POST['kod']),0,32);
  31. $kod = trim($kod);
  32. $nick = trim($nick);
  33. //
  34. $nick = substr(addslashes(htmlspecialchars($_POST['nick'])),0,32);
  35. $haslo = substr(addslashes($_POST['haslo']),0,32);
  36. $vhaslo = substr($_POST['vhaslo'],0,32);
  37. $email = substr($_POST['email'],0,32);
  38. $vemail = substr($_POST['vemail'],0,32);
  39. $kod = substr(addslashes($_POST['kod']),0,32);
  40. $kod = trim($kod);
  41. $nick = trim($nick);
  42. //kilka sprawdzen co do nicku i maila
  43. $spr1 = mysql_query("SELECT COUNT(*) FROM info WHERE nick='$nick' LIMIT 1")); //czy user o takim nicku istnieje
  44. $spr2 = mysql_query("SELECT COUNT(*) FROM info WHERE email='$email' LIMIT 1")); // czy user o takim emailu istnieje
  45. $spr6 = mysql_query("SELECT COUNT(*) FROM kody WHERE kod='$kod' LIMIT 1")); //czy taki kod istnieje
  46. $pos = strpos($email, "@");
  47. $pos2 = strpos($email, ".");
  48. $emailx = explode("@", $email);
  49. if ($emailx[1] == 'o2.pl') {
  50. $emailx1 = $emailx[0].'@go2.pl';
  51. $emailx2 = $emailx[0].'@tlen.pl';
  52. $spr3 = mysql_query("SELECT COUNT(*) FROM info WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1"));
  53. }elseif ($emailx[1] == 'go2.pl') {
  54. $emailx1 = $emailx[0].'@o2.pl';
  55. $emailx2 = $emailx[0].'@tlen.pl';
  56. $spr3 = mysql_query("SELECT COUNT(*) FROM info WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1"));
  57. }elseif ($emailx[1] == 'tlen.pl') {
  58. $emailx1 = $emailx[0].'@go2.pl';
  59. $emailx2 = $emailx[0].'@o2.pl';
  60. $spr3 = mysql_query("SELECT COUNT(*) FROM info WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1"));
  61. }
  62. $komunikaty = '';
  63. $spr4 = strlen($nick);
  64. $spr5 = strlen($haslo);
  65. //sprawdzenie co uzytkownik zle zrobil
  66. if (!$nick || !$email || !$haslo || !$vhaslo || !$vemail || !$kod) {
  67. $komunikaty .= "<font size='3'>Musisz wypelnic wszystkie pola!</font><br>"; }
  68. if ($spr4 < 3) {
  69. $komunikaty .= "<font size='3'>Login musi mieć przynajmniej 3 znaki</font><br>"; }
  70. if ($spr5 < 4) {
  71. $komunikaty .= "<font size='3'>Hasło musi mieć przynajmniej 4 znaki</font><br>"; }
  72. if ($spr1[0] >= 1) {
  73. $komunikaty .= "<font size='3'>Ten login jest zajęty!</font><br>"; }
  74. if ($spr2[0] >= 1) {
  75. $komunikaty .= "<font size='3'>Ten e-mail jest już używany!</font><br>"; }
  76. if ($email != $vemail) {
  77. $komunikaty .= "<font size='3'>E-maile się nie zgadzają ...</font><br>";}
  78. if ($haslo != $vhaslo) {
  79. $komunikaty .= "<font size='3'>Hasła się nie zgadzają ...</font><br>";}
  80. if ($pos == false OR $pos2 == false) {
  81. $komunikaty .= "<font size='3'>Nieprawidłowy adres e-mail</font><br>"; }
  82. if ($spr3[0] >= 1) {
  83. $komunikaty .= "<font size='3'>Nie można zarejestrować kilku kont na jedną poczte o2.</font><br>"; }
  84. if ($spr6[0] >= 1) {
  85. $komunikaty .= "<font size='3'>Tego kodu nie ma w bazie!</font><br>"; }
  86.  
  87. //jesli cos jest nie tak to blokuje rejestracje i wyswietla bledy
  88. if ($komunikaty) {
  89. <font size="3"><br><br>Popraw blędy:<br>
  90. '.$komunikaty.'<br>';
  91. } else {
  92. //jesli wszystko jest ok dodaje użytkownika i wyswietla informacje
  93. $nick = str_replace ( ' ','', $nick );
  94.  
  95. mysql_query("INSERT INTO `info` (nick, haslo, email, kod)
  96. VALUES('$nick','$haslo','$email','$kod')") or die("Nie mogłem Cię zarejestrować!");
  97.  
  98. echo '<br><font size="3">Zostałes zarejestrowany jako '.$nick.'.</font>';
  99. }
  100. }
  101.  
  102. ?>
Turson
  1. if ($spr6[0] >= 1) {
  2. $komunikaty .= "<font size='3'>Tego kodu nie ma w bazie!</font><br>"; }

Wychodzi na to, że jeżeli kod jest w bazie to pokazuje błąd, że go nie ma.
Casley
Cytat(Turson @ 6.01.2014, 12:31:13 ) *
  1. if ($spr6[0] >= 1) {
  2. $komunikaty .= "<font size='3'>Tego kodu nie ma w bazie!</font><br>"; }

Wychodzi na to, że jeżeli kod jest w bazie to pokazuje błąd, że go nie ma.


Tak właśnie jest. I chce przerobić ten skrypt, tak aby nie wyrzucał TEGO "Tego kodu nie ma w bazie!" błędu jeśli kod jest w bazie, natomiast ma go wyrzucać jeśli tego kodu tam nie będzie, rozumiesz o co mi chodzi?
Turson
  1. if ($spr6[0] >= 1) {
  2. $komunikaty .= "<font size='3'>Tego kodu nie ma w bazie!</font><br>"; }

zamień na
  1. if ($spr6[0] == 0) {
  2. $komunikaty .= "<font size='3'>Tego kodu nie ma w bazie!</font><br>"; }
Casley
Gdy tak zrobiłem po wpisaniu kodu z bazy dostaje komunika t"Ten kod jest zajęty!", natomiast jak wpisze kod którego nie ma w bazie poprawnie się rejestruje (dane dodają się do odpowiedniej bazy).
Turson
Włącz raportowanie błędów poprzez

bo masz takie błędy jak
  1. $spr1 = mysql_query("SELECT COUNT(*) FROM info WHERE nick='$nick' LIMIT 1"));

gdzie jest o jedno ) za dużo i być może jest więcej błędów.


Jak możesz dostawać komunikat "Ten kod jest zajęty", jeśli w kodzie z posta #3 nie ma takiego
Casley
Jeszcze jest tak, że po zmianie "mysql_fetch_array(mysql_query" na "mysql_query" nie sprawdza czy taki nick bądź email istnieje w bazie, tylko dubluje te informacje w bazie, dodajac te same informacje w nowym indexie.

Zrobiłem tak ja napisałeś. Poprawiłem cały ten kod i zmieniłem to co napisałeś w poście #6. Teraz po wpisaniu kodu którego nie ma w bazie i kodu który jest w bazie dostaję ten błąd "Tego kodu nie ma w bazie".

KOD:
  1. <?php
  2. //łączenie z baza danych
  3. mysql_connect('localhost', 'LOGIN', 'HASLO') or die(mysql_error());
  4. //wybieramy bazę danych
  5. mysql_select_db('w324_ja') or die(mysql_error());
  6.  
  7. ?>
  8. <?PHP
  9.  
  10. echo '<form method="post" action="skrypt.php?akcja=wykonaj">
  11.  
  12. <table><tr>
  13. <td>Nazwa: </td><td><input type="text" name="nick" /></td></tr><br>
  14. <tr><td>Hasło: </td><td><input type="password" name="haslo" /></td></tr><br>
  15. <tr><td>Powtórz hasło: </td><td><input type="password" name="vhaslo" /></td></tr><br>
  16. <tr><td>Email: </td><td><input type="text" name="email" /></td></tr><br>
  17. <tr><td>Powtórz email: </td><td><input type="text" name="vemail" /></td></tr><br>
  18. <td>Kod: </td><td><input type="text" name="kod" /></td></tr><br>
  19.  
  20. <tr><td></td><td><input type="submit" value="Zarejestruj"></td></tr></table>
  21. </form> ';
  22.  
  23. $akcja = $_GET['akcja'];
  24. if ($akcja === "wykonaj") {
  25. $nick = substr(addslashes(htmlspecialchars($_POST['nick'])),0,32);
  26. $haslo = substr(addslashes($_POST['haslo']),0,32);
  27. $vhaslo = substr($_POST['vhaslo'],0,32);
  28. $email = substr($_POST['email'],0,32);
  29. $vemail = substr($_POST['vemail'],0,32);
  30. $kod = substr(addslashes($_POST['kod']),0,32);
  31. $kod = trim($kod);
  32. $nick = trim($nick);
  33. //
  34. $nick = substr(addslashes(htmlspecialchars($_POST['nick'])),0,32);
  35. $haslo = substr(addslashes($_POST['haslo']),0,32);
  36. $vhaslo = substr($_POST['vhaslo'],0,32);
  37. $email = substr($_POST['email'],0,32);
  38. $vemail = substr($_POST['vemail'],0,32);
  39. $kod = substr(addslashes($_POST['kod']),0,32);
  40. $kod = trim($kod);
  41. $nick = trim($nick);
  42. //kilka sprawdzen co do nicku i maila
  43. $spr1 = mysql_query("SELECT COUNT(*) FROM info WHERE nick='$nick' LIMIT 1"); //czy user o takim nicku istnieje
  44. $spr2 = mysql_query("SELECT COUNT(*) FROM info WHERE email='$email' LIMIT 1"); // czy user o takim emailu istnieje
  45. $spr6 = mysql_query("SELECT COUNT(*) FROM kody WHERE kod='$kod' LIMIT 1"); //czy taki kod istnieje
  46. $pos = strpos($email, "@");
  47. $pos2 = strpos($email, ".");
  48. $emailx = explode("@", $email);
  49. if ($emailx[1] == 'o2.pl') {
  50. $emailx1 = $emailx[0].'@go2.pl';
  51. $emailx2 = $emailx[0].'@tlen.pl';
  52. $spr3 = mysql_query("SELECT COUNT(*) FROM info WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1");
  53. }elseif ($emailx[1] == 'go2.pl') {
  54. $emailx1 = $emailx[0].'@o2.pl';
  55. $emailx2 = $emailx[0].'@tlen.pl';
  56. $spr3 = mysql_query("SELECT COUNT(*) FROM info WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1");
  57. }elseif ($emailx[1] == 'tlen.pl') {
  58. $emailx1 = $emailx[0].'@go2.pl';
  59. $emailx2 = $emailx[0].'@o2.pl';
  60. $spr3 = mysql_query("SELECT COUNT(*) FROM info WHERE email='$emailx1' OR `email`='$emailx2' LIMIT 1");
  61. }
  62. $komunikaty = '';
  63. $spr4 = strlen($nick);
  64. $spr5 = strlen($haslo);
  65. //sprawdzenie co uzytkownik zle zrobil
  66. if (!$nick || !$email || !$haslo || !$vhaslo || !$vemail || !$kod) {
  67. $komunikaty .= "<font size='3'>Musisz wypelnic wszystkie pola!</font><br>"; }
  68. if ($spr4 < 3) {
  69. $komunikaty .= "<font size='3'>Login musi mieć przynajmniej 3 znaki</font><br>"; }
  70. if ($spr5 < 4) {
  71. $komunikaty .= "<font size='3'>Hasło musi mieć przynajmniej 4 znaki</font><br>"; }
  72. if ($spr1[0] >= 1) {
  73. $komunikaty .= "<font size='3'>Ten login jest zajęty!</font><br>"; }
  74. if ($spr2[0] >= 1) {
  75. $komunikaty .= "<font size='3'>Ten e-mail jest już używany!</font><br>"; }
  76. if ($email != $vemail) {
  77. $komunikaty .= "<font size='3'>E-maile się nie zgadzają ...</font><br>";}
  78. if ($haslo != $vhaslo) {
  79. $komunikaty .= "<font size='3'>Hasła się nie zgadzają ...</font><br>";}
  80. if ($pos == false OR $pos2 == false) {
  81. $komunikaty .= "<font size='3'>Nieprawidłowy adres e-mail</font><br>"; }
  82. if ($spr3[0] >= 1) {
  83. $komunikaty .= "<font size='3'>Nie można zarejestrować kilku kont na jedną poczte o2.</font><br>"; }
  84. if ($spr6[0] >= 0) {
  85. $komunikaty .= "<font size='3'>Tego kodu nie ma w bazie!</font><br>"; }
  86.  
  87. //jesli cos jest nie tak to blokuje rejestracje i wyswietla bledy
  88. if ($komunikaty) {
  89. <font size="3"><br><br>Popraw następujące blędy:<br>
  90. '.$komunikaty.'<br>';
  91. } else {
  92. //jesli wszystko jest ok dodaje użytkownika i wyswietla informacje
  93. $nick = str_replace ( ' ','', $nick );
  94.  
  95. mysql_query("INSERT INTO `info` (nick, haslo, email, kod)
  96. VALUES('$nick','$haslo','$email','$kod')") or die("Nie mogłem Cię zarejestrować!");
  97.  
  98. echo '<br><font size="3">Zostałes zarejestrowany jako '.$nick.'.</font>';
  99. }
  100. }
  101.  
  102. ?>
Turson
Masz treść błędów to próbuj teraz je naprawić.
ctom
przeanalizuj siebie (var_dump) co zwraca Ci zmienna z 47 linii

poza tym robisz 5 zapytań do tej samej tabeli ? zrób sobie 1 query a resztę obrób w php
Casley
Dzięki za wszelką pomoc, sam już rozwiązałem problem.
ctom
to się pochwal - może ktoś będzie miał podobny problem
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.