Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przerobienie pewnego skryptu
Forum PHP.pl > Forum > Przedszkole
flaq1991
witam mam skrypt dodający pewne dane do bazy mysql i chciałbym sprawdzać ich poprawnośc , i aby nie doawał pustych danych do tabeli o to kod :

  1. {
  2. $login = ($_GET['login']);
  3. $haslo = ($_GET['haslo']);
  4. $poziom = ($_GET['poziom']);
  5. $userid = ($_GET['userid']);
  6.  
  7. if((($login!='') AND ($haslo!='')))
  8.  
  9. $select = mysql_query( 'SELECT * FROM `konta` WHERE `login`= "'.$login.'"');
  10.  
  11. if(mysql_num_rows($select)>0) {}
  12. else
  13.  
  14. {
  15. $zapytanie = "INSERT INTO konta(login,haslo,poziom,userid) VALUES ('$login','$haslo','$poziom','$userid')";
  16. $wyslij = mysql_query($zapytanie);
  17. }


wystarczy wejsc na skrypt.php i dodają się puste pola do bazy danych nie wiem jak to zabezpieczyć prośiłbym o jakieś pomoce z góry dziekuję.
Saki
Nie wiem czy Ci o to chodzi ale proszę.
Dodałem funkcje clean_text() aby zabezpieczyła Twój skrypt przed SQL Injection..
Skrypt odpali się dopiero gdy w adresie URL dodasz &check=1
przykład: skrypt.php?login=aaa&haslo=aaa&poziom=aaa&userid=aaa&check=1
PS. Osobiście radzę używać POST zamiast GET do przesyłania takich danych jak hasła...

  1. function clean_text($wert) {
  2. if (!empty($wert)) {
  3. $wert = strip_tags($wert);
  4. $wert = htmlentities($wert, ENT_QUOTES, "UTF-8");
  5. $wert = trim($wert);
  6. $wert = stripslashes($wert);
  7. $wert = mysql_real_escape_string($wert);
  8. }
  9. return $wert;
  10. }
  11.  
  12. if ( $_GET['check'] == 1 ) {
  13. $login = clean_text($_GET['login']);
  14. $haslo = clean_text($_GET['haslo']);
  15. $poziom = clean_text($_GET['poziom']);
  16. $userid = clean_text($_GET['userid']);
  17. if ($login != '' AND $haslo != '') {
  18. $select = mysql_query('SELECT * FROM `konta` WHERE `login`= "' . $login . '"');
  19. if (mysql_num_rows($select) > 0) {
  20. mysql_query("INSERT INTO konta(login,haslo,poziom,userid) VALUES ('$login','$haslo','$poziom','$userid')");
  21. }
  22. }
  23. }
flaq1991
Chodziło mi ogólnie o to aby skrypt nie doawał do bazy mysql pustych danych tak aby nic nie było pustego login,haslo,poziom,userid jeżeli coś będzie puste to nie wysyła o to mi chodziło bo wystarczy wejsc skrypt przez test.php i dodaje pusty rekord a co za tym idzie mogę dostać owned bazy w 10 sekund biggrin.gif
17misiek09
albo:

  1. function clean_text($wert) {
  2. if (!empty($wert)) {
  3. $wert = strip_tags($wert);
  4. $wert = htmlentities($wert, ENT_QUOTES, "UTF-8");
  5. $wert = trim($wert);
  6. $wert = stripslashes($wert);
  7. $wert = mysql_real_escape_string($wert);
  8. }
  9. return $wert;
  10. }
  11.  
  12. if ( ($login!='') || ($haslo!='') || ($poziom!='') || ($userid!='') ) {
  13. $login = clean_text($_GET['login']);
  14. $haslo = clean_text($_GET['haslo']);
  15. $poziom = clean_text($_GET['poziom']);
  16. $userid = clean_text($_GET['userid']);
  17. if ($login != '' AND $haslo != '') {
  18. $select = mysql_query('SELECT * FROM `konta` WHERE `login`= "' . $login . '"');
  19. if (mysql_num_rows($select) > 0) {
  20. mysql_query("INSERT INTO konta(login,haslo,poziom,userid) VALUES ('$login','$haslo','$poziom','$userid')");
  21. }
  22. }
  23. }
  24.  


jesli login rozny od '' albo haslo rozne od '' albo poziom rozny od '' albo userid rozne od '' - jesli ktorekolwiek pole jest puste, to nie doda rekordu.
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.