Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Dodawanie administratora
Forum PHP.pl > Forum > Przedszkole
adrianozo
Witam.
Mam problem ze skryptem Dodaj admina.
Otóż, gdy mam kod jaki zaraz podam to wystarczy że tylko ostatni warunek zostaje spełniony i przechodzi dalej.
Tak poza tym to nawet gdy login i email nie istnieją w bazie to pokazuje Podana nazwa użytkownika jest już zajęta.

Podany email jest zajęty przez innego użytkownika.

  1. <?php
  2. include('functions/filtr.php');
  3. if(!$_SESSION['access'] || !$_SESSION['login'])
  4. {
  5. header('Location: index.php');
  6. }
  7. include('include/db.php');
  8. if(isset($_POST['loginek']))
  9. {
  10. $loginek = mysql_real_escape_string($_POST['loginek']);
  11. $haslo = mysql_real_escape_string(md5(sha1($_POST['haslo'])));
  12. $haslo2 = mysql_real_escape_string(md5(sha1($_POST['haslo2'])));
  13. $email = mysql_real_escape_string($_POST['email']);
  14. $accessik = mysql_real_escape_string($_POST['0']);
  15. $zapytanie = "SELECT COUNT(*) FROM admin WHERE loginek='$loginek'";
  16. $idzapytania = mysql_query($zapytanie);
  17. $zajete[1] = mysql_fetch_row($idzapytania);
  18. $zapytanie1 = "SELECT COUNT(*) FROM admin WHERE email='$email'";
  19. $idzapytania1 = mysql_query($zapytanie1);
  20. $zajete1[2] = mysql_fetch_row($idzapytania1);
  21. }
  22. echo '<div align="center"><form action="/cpadmin_dodaj_admina" method="post">
  23. <input type="hidden" name="send" value="1">
  24. <br />Login:<br /><input type="text" name="loginek" /><br /><br />
  25. email:<br /><input type="text" name="email" /><br /><br />
  26. Hasło:<br /><input type="password" name="haslo" /><br /><br />
  27. Potwierdź hasło:<br><input type="password" name="haslo2" /><br /><br />
  28. <input class="przycisk_admin" name="dodaj" type="submit" value="Dodaj">
  29. <input class="przycisk_admin" name="wyczysc" type="reset" value="Wyczyść">
  30. </form><br />
  31. <a style="text-decoration: none;" href="/cpadmin">Wróć do Panelu Administratora</a><br /><br /></div>';
  32. if ((isset($_POST['dodaj'])))
  33. {
  34. if(empty($_POST["loginek"]) || empty($_POST["haslo"]) || empty($_POST["haslo2"]) || empty($_POST["email"]) and !isset($_GET["active"]) and isset($_POST['login']))
  35. {
  36. echo '<div align="center"><font color="red">Nie wypełniono wszystkich pól.</font></div><br />';
  37. }
  38. if($zajete[1]!=0)
  39. {
  40. echo '<div align="center"><font color="red">Podana nazwa użytkownika jest już zajęta.</font></div><br />';
  41. }
  42. if($zajete1[2]!=0)
  43. {
  44. echo '<div align="center"><font color="red">Podany email jest zajęty przez innego użytkownika.</font></div><br />';
  45. }
  46. if(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  47. {
  48. echo '<div align="center"><font color="red">Podany email jest nieprawidłowy.</font></div><br />';
  49. }
  50. if($_POST['haslo']!=$_POST['haslo2'])
  51. {
  52. echo '<div align="center"><font color="red">Podane hasła nie są identyczne.</font></div><br />';
  53. }
  54. else
  55. {
  56. $zapytanie2 = "INSERT INTO `admin` (`loginek`, `haslo`, `email`, `accessik`) VALUES ('".$loginek."', '".$haslo."', '".$email."', '".$accessik."')";
  57. $idzapytania2 = mysql_query($zapytanie2);
  58. $zapytanie3 = "SELECT `email` FROM `admin` ORDER BY `id` DESC";
  59. $idzapytania3 = mysql_query($zapytanie3);
  60. $naglowki = "From: nansss@nportfolio.pl".PHP_EOL."Reply-To: nansss@nportfolio.pl".PHP_EOL."Content-type: text/html; charset=utf-8";
  61. $wiersz = mysql_fetch_row($idzapytania3);
  62. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  63. mail($email, 'Aktywacja konta na nportfolio.pl', '<br /><b>Witaj na nportfolio.pl!</b><br /><br /><br />Konto <b>'.$loginek.'</b> zostało zarejestrowane na podany adres e-mail.<br />W celu potwierdzenia rejestracji konta kliknij w poniższy odnośnik:<br /><a href="http://nportfolio.pl/index.php?page=potwierdz&active='.$kod.'">http://nportfolio.pl/index.php?page=potwierdz&active='.$kod.'</a><br /><br />Jeśli nie rejestrowałeś konta o nazwie <b>'.$loginek.'</b> po prostu zignoruj tego maila.<br /><br /><br />------<br />Wiadomość wygenerowana automatycznie<br />przez serwis nportfolio.pl', $naglowki);
  64. $zapytanie4 = "UPDATE admin SET klucz = ('".filtr($kod)."') WHERE accessik = 0";
  65. $idzapytania4 = mysql_query($zapytanie4);
  66. }
  67. if($_POST['send'])
  68. {
  69. if(isset($idzapytania2))
  70. {
  71. if($idzapytania2)
  72. {
  73. echo '<div align="center"><font color="green"><b>Konto administratora zostało utworzone.</b></font></div><br />';
  74. }
  75. else
  76. {
  77. echo '<div style="text-align:center;"><font color="red"><b>Nie udało się dodać administratora. Proszę spróbować za jakiś czas!</b></font></div><br />';
  78. }
  79. }
  80. }
  81. }
  82. mysql_close($connect);
  83. ?>
Max Damage
1. W tablicach liczy się od zera czyli:
  1. $zajete[0] = mysql_fetch_row($idzapytania);

2. else odnosi się u ciebie tylko do ostatniego warunku, więc jak hasła są takie same to się wykonuje to co w klamrach else.
3. Prawdę mówiąc to masz tu duży nieład w kodzie. Proponuje się zainteresować szablonami w najbliższym czasie np. Smarty. Przyjemność z pisania od razu znacząco wzrasta :)
adrianozo
Tak tylko że licząc od 0 to mam id, login, email...
Poprawiony kod:

  1. <?php
  2. include('functions/filtr.php');
  3. if(!$_SESSION['access'] || !$_SESSION['login'])
  4. {
  5. header('Location: index.php');
  6. }
  7. include('include/db.php');
  8. if(isset($_POST['loginek']))
  9. {
  10. $loginek = mysql_real_escape_string($_POST['loginek']);
  11. $haslo = mysql_real_escape_string(md5(sha1($_POST['haslo'])));
  12. $haslo2 = mysql_real_escape_string(md5(sha1($_POST['haslo2'])));
  13. $email = mysql_real_escape_string($_POST['email']);
  14. $accessik = mysql_real_escape_string($_POST['0']);
  15. $zapytanie = "SELECT COUNT(*) FROM admin WHERE loginek='$loginek'";
  16. $idzapytania = mysql_query($zapytanie);
  17. $zajete[1] = mysql_fetch_row($idzapytania);
  18. $zapytanie1 = "SELECT COUNT(*) FROM admin WHERE email='$email'";
  19. $idzapytania1 = mysql_query($zapytanie1);
  20. $zajete1[2] = mysql_fetch_row($idzapytania1);
  21. }
  22. echo '<div align="center"><form action="/cpadmin_dodaj_admina" method="post">
  23. <input type="hidden" name="send" value="1">
  24. <br />Login:<br /><input type="text" name="loginek" /><br /><br />
  25. email:<br /><input type="text" name="email" /><br /><br />
  26. Hasło:<br /><input type="password" name="haslo" /><br /><br />
  27. Potwierdź hasło:<br><input type="password" name="haslo2" /><br /><br />
  28. <input class="przycisk_admin" name="dodaj" type="submit" value="Dodaj">
  29. <input class="przycisk_admin" name="wyczysc" type="reset" value="Wyczyść">
  30. </form><br />
  31. <a style="text-decoration: none;" href="/cpadmin">Wróć do Panelu Administratora</a><br /><br /></div>';
  32. if ((isset($_POST['dodaj'])))
  33. {
  34. if(empty($_POST["loginek"]) || empty($_POST["haslo"]) || empty($_POST["haslo2"]) || empty($_POST["email"]) and !isset($_GET["active"]) and isset($_POST['login']))
  35. {
  36. echo '<div align="center"><font color="red">Nie wypełniono wszystkich pól.</font></div><br />';
  37. }
  38. elseif($zajete[1]!=0)
  39. {
  40. echo '<div align="center"><font color="red">Podana nazwa użytkownika jest już zajęta.</font></div><br />';
  41. }
  42. elseif($zajete1[2]!=0)
  43. {
  44. echo '<div align="center"><font color="red">Podany email jest zajęty przez innego użytkownika.</font></div><br />';
  45. }
  46. elseif(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  47. {
  48. echo '<div align="center"><font color="red">Podany email jest nieprawidłowy.</font></div><br />';
  49. }
  50. elseif($_POST['haslo']!=$_POST['haslo2'])
  51. {
  52. echo '<div align="center"><font color="red">Podane hasła nie są identyczne.</font></div><br />';
  53. }
  54. else
  55. {
  56. $zapytanie2 = "INSERT INTO `admin` (`loginek`, `haslo`, `email`, `accessik`) VALUES ('".$loginek."', '".$haslo."', '".$email."', '".$accessik."')";
  57. $idzapytania2 = mysql_query($zapytanie2);
  58. $zapytanie3 = "SELECT `email` FROM `admin` ORDER BY `id` DESC";
  59. $idzapytania3 = mysql_query($zapytanie3);
  60. $naglowki = "From: nansss@nportfolio.pl".PHP_EOL."Reply-To: nansss@nportfolio.pl".PHP_EOL."Content-type: text/html; charset=utf-8";
  61. $wiersz = mysql_fetch_row($idzapytania3);
  62. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  63. mail($email, 'Aktywacja konta na nportfolio.pl', '<br /><b>Witaj na nportfolio.pl!</b><br /><br /><br />Konto <b>'.$loginek.'</b> zostało zarejestrowane na podany adres e-mail.<br />W celu potwierdzenia rejestracji konta kliknij w poniższy odnośnik:<br /><a href="http://nportfolio.pl/index.php?page=potwierdz&active='.$kod.'">http://nportfolio.pl/index.php?page=potwierdz&active='.$kod.'</a><br /><br />Jeśli nie rejestrowałeś konta o nazwie <b>'.$loginek.'</b> po prostu zignoruj tego maila.<br /><br /><br />------<br />Wiadomość wygenerowana automatycznie<br />przez serwis nportfolio.pl', $naglowki);
  64. $zapytanie4 = "UPDATE admin SET klucz = ('".filtr($kod)."') WHERE accessik = 0";
  65. $idzapytania4 = mysql_query($zapytanie4);
  66. }
  67. if($_POST['send'])
  68. {
  69. if(isset($idzapytania2))
  70. {
  71. if($idzapytania2)
  72. {
  73. echo '<div align="center"><font color="green"><b>Konto administratora zostało utworzone.</b></font></div><br />';
  74. }
  75. else
  76. {
  77. echo '<div style="text-align:center;"><font color="red"><b>Nie udało się dodać administratora. Proszę spróbować za jakiś czas!</b></font></div><br />';
  78. }
  79. }
  80. }
  81. }
  82. mysql_close($connect);
  83. ?>


Teraz jest problem z tym, że nie sprawdza czy taki email jest już zajęty.

Sprawdzenie nicku:
  1. $zapytanie = "SELECT COUNT(*) FROM admin WHERE loginek='$loginek'";
  2. $idzapytania = mysql_query($zapytanie);
  3. $zajete[1] = mysql_fetch_row($idzapytania);
  4. if($zajete[1][0]!=0)
  5. {
  6. $error .= '<div align="center"><font color="red">Podana nazwa użytkownika jest już zajęta.</font></div><br />';
  7. }

i to działa.

Sprawdzanie email:
  1. $zapytanie1 = "SELECT COUNT(*) FROM admin WHERE email='$email'";
  2. $idzapytania1 = mysql_query($zapytanie1);
  3. $zajete1[2] = mysql_fetch_row($idzapytania1);
  4. if($zajete[2][0]!=0)
  5. {
  6. $error .= '<div align="center"><font color="red">Podany email jest zajęty przez innego użytkownika.</font></div><br />';
  7. }

A to już nie działa. Nie wiem dlaczego

Ok rozwiązane...
Niedopatrzenie.
Zamiast

  1. if($zajete[2][0]!=0)

Powinno być
  1. if($zajete1[2][0]!=0)
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.