Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z INSERT
Forum PHP.pl > Forum > Przedszkole
Wieczny
Nie dodaje nowego rekordu ;(
  1. <?php
  2. include('cfg.php');
  3. if($_POST['creat'] == 1 )
  4. {
  5.  
  6.  
  7. $login = addslashes($_POST['login']);
  8. $pw = addslashes($_POST['password']);
  9. $email = addslashes($_POST['email']);
  10.  
  11.  
  12.  $query = ("INSERT INTO user (id, login, pw, email, date) 
  13. VALUES ('', '".$_POST['login']."', '".$_POST['password']."', '".$_POST['email']."', '')");
  14.  
  15. echo "DODANE !";
  16.  
  17.  }
  18.  
  19.  
  20.  
  21. echo "
  22.  <link rel='Stylesheet' type='text/css' href='style.css'>
  23.  ( Znaki specjalne tkj. $/^&$#@!&*() nie dzialają )
  24.  <form action='register.php' method=POST>
  25.  <input class='input' type='text' name='login' maxlength='12'> - Nazwa użytkownika <br /> <br />
  26.  <input class='input' type='password' name='password' maxlength='8'> - Haslo <br /> <br />
  27.  <input class='input' type='text' name='email'> - Adres email <br /> <br />
  28.  <input class='input' type='submit' value='Rejestruj'>
  29.  <input type='hidden' name='creat' value='1'>
  30.  </form>
  31.  ";
  32.  
  33.  
  34. ?>
Cysiaczek
Ja bym się zaczął martwić, gdyby to dodało rekord...
Gdzie niby wywołujesz zapytanie? Ja tylko widzę, że je tworzysz.

Pozdrawiam.
Query
Czemu uzyles ( i ) przed i po " ?
Teraz po zapytaniu
  1. <?php
  2. mysql_query($query);
  3. ?>
hacek
Prawidłowo ten kod wygląda:

  1. <?php
  2. include('cfg.php');
  3. if($_POST['creat'] == 1 )
  4. {
  5.  $_POST['login'] = mysql_real_escape_string($_POST['login']);
  6.  $_POST['password'] = mysql_real_escape_string($_POST['password']);
  7.  $_POST['email'] = mysql_real_escape_string($_POST['email']);
  8. mysql_query('INSERT INTO user (id, login, pw, email, date) VALUES 
  9. (''''.$_POST['login'].''''.$_POST['password'].''''.$_POST['email'].'''')') or die(mysql_error());
  10.  echo 'DODANE !';
  11. }
  12. //...
  13. ?>


I na przyszłość, jak już tworzysz bez potrzebne zmienne to chociaż je używaj!
Wieczny
To teraz pytanie mogę zrobić to tak żeby błąd wyskakiwał w momencie gdy użytkownik podaje nie właściwie znaki który mogą być atakiem SQL Bo robi sie syf w bazie jak ktoś stara się hackować ;
Query
  1. <?php
  2. $query = "INSERT INTO user (id, login, pw, email, date) 
  3. VALUES ('', '$_POST[login]', '$_POST[password]', '$_POST['email']', '')";
  4.  
  5. if(mysql_query($query)) echo "DODANE !";
  6. ?>
Wieczny
Gość to nie ma sensu w przypadku gdy używam mysql_real_escape_string bo nie ma tutaj żadnego warunku odnoszącego się do sprawdzania błędu a zapytanie się zawsze wykonuje czy jest błąd czy nie ^^
hacek
Użyj sobie PHPIDS, i ustaw wysyłanie na email i log do pliku i będziesz happy biggrin.gif Albo naucz się wyrażeń regularnych lub ich szukania w google.pl
bmL
Cytat(Wieczny @ 13.07.2008, 12:05:42 ) *
Gość to nie ma sensu w przypadku gdy używam mysql_real_escape_string bo nie ma tutaj żadnego warunku odnoszącego się do sprawdzania błędu a zapytanie się zawsze wykonuje czy jest błąd czy nie ^^

Najlepiej chyba funkcją eregi
Przykład dla maila (pisane z palca ale chyba dobrze tongue.gif):
  1. <?php
  2. if (!eregi("^[a-zA-Z0-9._-]{1,30}@[a-zA-Z0-9._-]{1,30}.[a-zA-Z0-9._-]{1,30}$", $_POST[email]))
  3.  echo 'blad zły format adresu email';
  4. else
  5.  //[...]
  6. ?>
Cysiaczek
Teraz jest coś takiego:
  1. <?php
  2. if(filter_var($email, FILTER_VALIDATE_EMAIL))
  3. {
  4. print 'email is valid';
  5. }
  6. ?>

Nie trzeba bawić się w regexy smile.gif
Pozdrawiam.
bmL
O dzięki na pewno się przyda rozumiem, że doszło to w php5. smile.gif
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.