Witam. Chciałbym się was zapytać, czy ten skrypt jest bezpieczny:
1. Pod względem kodu
2. Pod względem sprawdzania danych
oraz czy będzie prawidłowo działał. Aktualnie sam tego sprawdzić nie mogę ponieważ nie mogę się połączyć przez www do bazy danych.

  1. <?php
  2. include('include/db.php');
  3. $login = mysql_real_escape_string($_POST['login']);
  4. $haslo = mysql_real_escape_string(md5($_POST['haslo']));
  5. $haslo2 = mysql_real_escape_string(md5($_POST['haslo2']));
  6. $email = mysql_real_escape_string($_POST['email']);
  7. $access = mysql_real_escape_string($_POST['0']);
  8. $zapytanie = "SELECT COUNT(*) FROM admin WHERE login='$login'";
  9. $idzapytania = mysql_query($zapytanie);
  10. $zajete = mysql_fetch_row($idzapytania);
  11. $zapytanie1 = "SELECT COUNT(*) FROM admin WHERE email='$email'";
  12. $idzapytania1 = mysql_query($zapytanie1);
  13. $zajete1 = mysql_fetch_row($idzapytania1);
  14. if (!isset($_POST['login']) && empty($_POST['login']))
  15. {
  16. echo '<div align="center"><form action="/cpadmin_dodaj_admina" method="post">
  17. Login:<br><input type="text" name="login" /><br><br>
  18. email:<br><input type="text" name="email" /><br><br>
  19. Hasło:<br><input type="password" name="haslo" /><br><br>
  20. Potwierdź hasło:<br><input type="password" name="haslo2" /><br>
  21. <input type="submit" value="Dodaj admina">
  22. <input type="reset" value="Wyczyść">
  23. </form></div>';
  24. }
  25. if(empty($_POST["login"]) || empty($_POST["haslo"]) || empty($_POST["haslo2"]) || empty($_POST["email"]) and !isset($_GET["active"]) and isset($_POST['login']))
  26. {
  27. echo '<div align="center">Nie wypełniono wszystkich pól.</div>';
  28. }
  29. if($_POST['haslo']!=$_POST['haslo2'])
  30. {
  31. echo '<div align="center">Podane hasła nie są identyczne.</div>';
  32. }
  33. if($zajete[0]!=0)
  34. {
  35. echo '<div align="center">Podana nazwa użytkownika jest już zajęta.</div>';
  36. }
  37. if($zajete1[0]!=0)
  38. {
  39. echo '<div align="center">Podany email jest zajęty przez innego użytkownika.</div>';
  40. }
  41. if(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  42. {
  43. echo '<div align="center">Podany email jest nieprawidłowy.</div>';
  44. }
  45. else
  46. {
  47. $zapytanie2 = "INSERT INTO `admin` (`login`, `haslo`, `email`, `access`) VALUES ('".$login."', '".$haslo."', '".$email."', '".$access."')";
  48. $idzapytania2 = mysql_query($zapytanie2);
  49. echo '<div align="center">Konto administratora zostało założone.<br />W ciągu 10 minut użytkownik otrzyma emaila z następnymi instrukcjami.</div>';
  50. $zapytanie3 = "SELECT `email` FROM `admin` ORDER BY `id` DESC";
  51. $idzapytania3 = mysql_query($zapytanie3);
  52. $naglowki = "From: nansss@nportfolio.pl".PHP_EOL."Reply-To: nansss@nportfolio.pl".PHP_EOL."Content-type: text/plain; charset=utf-8";
  53. $wiersz = mysql_fetch_row($idzapytania3);
  54. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  55. mail($email, 'Aktywacja konta na nportfolio.pl', '<br /><b>Witaj na nportfolio.pl!</b><br><br><br>Konto <b>'.$login.'</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/potwierdz&active='.$kod.'">http://nportfolio.pl/potwierdz&active='.$kod.'</a><br><br>Jeśli nie rejestrowałeś konta o nazwie <b>'.$login.'</b> po prostu zignoruj tego maila.<br><br><br>------<br>Wiadomość wygenerowana automatycznie<br>przez serwis nportfolio.pl', $naglowki);
  56. $zapytanie4 = "UPDATE admin SET klucz = ('".$kod."') WHERE access = 0";
  57. $idzapytania4 = mysql_query($zapytanie4);
  58. }
  59. mysql_close($connect);
  60. ?>


Zmiana:

  1. <?php
  2. include('include/db.php');
  3. $login = mysql_real_escape_string($_POST['login']);
  4. $haslo = mysql_real_escape_string(md5(sha1($_POST['haslo'])));
  5. $haslo2 = mysql_real_escape_string(md5(sha1($_POST['haslo2'])));
  6. $email = mysql_real_escape_string($_POST['email']);
  7. $access = mysql_real_escape_string($_POST['0']);
  8. $zapytanie = "SELECT COUNT(*) FROM admin WHERE login='$login'";
  9. $idzapytania = mysql_query($zapytanie);
  10. $zajete = mysql_fetch_row($idzapytania);
  11. $zapytanie1 = "SELECT COUNT(*) FROM admin WHERE email='$email'";
  12. $idzapytania1 = mysql_query($zapytanie1);
  13. $zajete1 = mysql_fetch_row($idzapytania1);
  14. if (!isset($_POST['login']))
  15. {
  16. echo '<div align="center"><form action="/cpadmin_dodaj_admina" method="post">
  17. Login:<br><input type="text" name="login" /><br><br>
  18. email:<br><input type="text" name="email" /><br><br>
  19. Hasło:<br><input type="password" name="haslo" /><br><br>
  20. Potwierdź hasło:<br><input type="password" name="haslo2" /><br>
  21. <input type="submit" value="Dodaj admina">
  22. <input type="reset" value="Wyczyść">
  23. </form></div>';
  24. }
  25. elseif(empty($_POST["login"]) || empty($_POST["haslo"]) || empty($_POST["haslo2"]) || empty($_POST["email"]) and !isset($_GET["active"]) and isset($_POST['login']))
  26. {
  27. echo '<div align="center">Nie wypełniono wszystkich pól.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  28. }
  29. elseif($zajete[0]!=0)
  30. {
  31. echo '<div align="center">Podana nazwa użytkownika jest już zajęta.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  32. }
  33. elseif($zajete1[0]!=0)
  34. {
  35. echo '<div align="center">Podany email jest zajęty przez innego użytkownika.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  36. }
  37. elseif(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  38. {
  39. echo '<div align="center">Podany email jest nieprawidłowy.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  40. }
  41. elseif($_POST['haslo']!=$_POST['haslo2'])
  42. {
  43. echo '<div align="center">Podane hasła nie są identyczne.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  44. }
  45. else
  46. {
  47. $zapytanie2 = "INSERT INTO `admin` (`login`, `haslo`, `email`, `access`) VALUES ('".$login."', '".$haslo."', '".$email."', '".$access."')";
  48. $idzapytania2 = mysql_query($zapytanie2);
  49. echo '<div align="center">Konto administratora zostało założone.<br />W ciągu 10 minut użytkownik otrzyma emaila z następnymi instrukcjami.</div>';
  50. $zapytanie3 = "SELECT `email` FROM `admin` ORDER BY `id` DESC";
  51. $idzapytania3 = mysql_query($zapytanie3);
  52. $naglowki = "From: nansss@nportfolio.pl".PHP_EOL."Reply-To: nansss@nportfolio.pl".PHP_EOL."Content-type: text/html; charset=utf-8";
  53. $wiersz = mysql_fetch_row($idzapytania3);
  54. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  55. mail($email, 'Aktywacja konta na nportfolio.pl', '<br /><b>Witaj na nportfolio.pl!</b><br /><br /><br />Konto <b>'.$login.'</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/potwierdz&active='.$kod.'">http://nportfolio.pl/potwierdz&active='.$kod.'</a><br><br>Jeśli nie rejestrowałeś konta o nazwie <b>'.$login.'</b> po prostu zignoruj tego maila.<br /><br /><br />------<br>Wiadomość wygenerowana automatycznie<br />przez serwis nportfolio.pl', $naglowki);
  56. $zapytanie4 = "UPDATE admin SET klucz = ('".$kod."') WHERE access = 0";
  57. $idzapytania4 = mysql_query($zapytanie4);
  58. }
  59. mysql_close($connect);
  60. ?>