[PHP] mysql_real_escape_string()

0

Witam,
nie wiem skąd bierze się taki błąd:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NIE) in C:\Program Files\WebServ\httpd\class.Login.php on line 8

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\Program Files\WebServ\httpd\class.Login.php on line 8

Najpierw działało, a teraz jak podstawiam tam np: $_POST['emal'] to nie działa. Chodzi mi o to że w niektórych miejscach działa mysql_real_escape_string() (np: gdy podaje $_GET), a w innych nie.

0

kod?

0

A na co kod?

mam klasę w której konstruktor wygląda tak:

function __construct($email, $pass, $ses){
  ...
  $email = mysql_real_escape_string($email);
  ...
}

Natomiast tworze obiekt w ten sposób:

$email = $_POST['email'];
$login = new Login($email, $pass, $ses);

Oczywiście $pass i $ses są nieważne. Nawet gdy pod zmienną $email podam np: "abcd" to nadal jest to samo. O co chodzi w tym błędzie ?

0

Błąd masz, gdy wcześniej nie podłączysz się do bazy.

0

Dzięki wielkie. Masz rację połączenie robię dopiero w następnych 2 linijkach. Co użyć zamiast mysql_real_escape_string() żeby bronić się przez SQL Injection ?

Wiem że można zrobić np tak (wikipedia):

$result=mysql_query('SELECT * FROM users WHERE username="'.mysql_real_escape_string($_GET['username']).'"');

tylko nie wiem czy to dobra metoda, tym bardziej gdy będę miał np: 5 zmiennych do przekazania. Jest jeszcze:

$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));

Czy może być addslashes() ? Z tego co widzę to wszędzie mówią o tym że to "stare" zastosowanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1