Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Problem z Magic Quotes
Forum PHP.pl > Forum > Przedszkole
CryWolf
  1. <?php
  2. if (isset($_POST['acceptedreg']) AND $_POST['acceptedreg'] == 1) {
  3. if ( empty($_POST['wpisanyloginreg']) || empty($_POST['wpisanehasloreg']) || empty($_POST['wpisanyemailreg']) || empty($_POST['wpisanaplecreg']) ) { echo '<b>Nie wypełniłeś wszystkich pól!</b>'; $_POST['acceptedreg'] = 0; }
  4. else {
  5. //check open i insert open
  6.  
  7. { $wlogin = addslashes(htmlspecialchars($_POST['wpisanyloginreg']));
  8.  $whaslo = addslashes(htmlspecialchars($_POST['wpisanehasloreg'])); 
  9.  $wemail = addslashes(htmlspecialchars($_POST['wpisanyemailreg']));  }
  10. else
  11. { $wlogin = htmlspecialchars($_POST['wpisanyloginreg']);
  12.  $whaslo = htmlspecialchars($_POST['wpisanehasloreg']);
  13.  $wemail = htmlspecialchars($_POST['wpisanyemailreg']);  }
  14.  $wplec = $_POST['wpisanaplecreg'];
  15.  
  16.  
  17. $checklogin = mysql_query("SELECT id FROM users WHERE login = '$wlogin'"); 
  18. $logincheck = mysql_num_rows($checklogin);
  19. $checkemail = mysql_query("SELECT id FROM users WHERE email = '$wemail'"); 
  20. $emailcheck = mysql_num_rows($checkemail);
  21. echo '<table border="0">';
  22.  if ($logincheck == 1) { echo '<td>- Konto o takim loginie już istnieje. Wybierz inny login.</td><tr>'; }
  23.  if ($emailcheck == 1) { echo '<td>- Konto o takim emailu już istnieje. Wpisz inny email.</td>'; }
  24. if ($logincheck == 1 OR $emailcheck == 1) { echo '<meta http-equiv="refresh" content="5;url=rejestracja.php"/>'; } else 
  25.  
  26. { 
  27. $databaza= date('H:i/d/m/y');
  28. mysql_query("INSERT INTO users VALUES ('','$wlogin','$whaslo', '$wemail', '$wplec', 'n$databaza', '0')");
  29. echo "Zostałeś poprawnie zarejestrowany!<br>Twoje hasło to: <b>$whaslo</b>.<br>Możesz się zalogować w formularzu u góry."; 
  30. }
  31.  
  32. echo '</table>';
  33. //check close i insert close
  34. }
  35. }
  36.  
  37. if (!isset($_POST['acceptedreg']) || $_POST['acceptedreg'] == 0) {
  38.  echo '<table border="0"><form method="POST"> 
  39.  <td width="120"> Login:</td><td width="90"><input type="text" name="wpisanyloginreg" maxlength="10"> </td><tr>
  40.  <td> Hasło:</td><td><input type="text" name="wpisanehasloreg" maxlength="10"> </td><tr>
  41.  <td> Email:</td><td><input type="text" name="wpisanyemailreg" maxlength="25"> </td><tr>
  42.  <td> Płeć:</td><td><select name="wpisanaplecreg"> 
  43.  <option value="1">Kobieta</option>
  44.  <option value="2">Mężczyzna</option>
  45.  <input type="hidden" name="acceptedreg" value="1"> </td><tr>
  46.  <td colspan="2"><center><input type="submit" value="Zarejestruj"><h5>*Po przyciśnięciu "Zarejestruj"<br>wyświetli się Twoje hasło!</h5></td>
  47.  
  48. </form></table>'; 
  49. }
  50. ?>


Jest to mój skrypt rejestracji. Wszystko działa jak należy, nie ma błędów itp. Chodzi tylko o to, że nie wiem czy dobrze zrobione są te magic quotesy. Wpiszę w login i pass np. haslo'' to potem po kliknięciu Submita jest napisane, że Twoje hasło to: haslo\'\' i tak chyba powinno to wyglądać, ale po chwili dodawane jest to do bazy i tam dodaje się jako haslo'' bez tych backslashów. Następnie przy zalogowaniu jak wpiszę haslo'' to mnie zaloguje. Login i Pass oczywiście są takie same. Tak więc nie wiem jak zrobić aby to naprawić. Ktoś wpisze to coś od sql injection w rejestracji a potem przy logowaniu skrypt nie zabezpieczy się tymi addslashami czy coś, przynajmniej ja tak to widzę. Z góry dzięki.
Maxik
stripslashes wywala backslashe, jeśli o to Ci chodzi.
Shili
Bo to o to chodzi. Najkrócej:

przy dodawaniu do bazy php dodaje slashe, żeby sama baza wiedziała, że te znaki należy traktować jako tekst, nie jako znak specjalny. Baza "widzi" tam kawałek tekstu '. Więc go dodaje, backslashy "nie widzi" bo one są tylko po to, żeby ze znaku specjalnego zrobić tekst.
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.