|
|
|
|
|
для: Trianon
(23.01.2010 в 00:26)
| | > Он не разрушает значений переменных.
В данной конкретной ситуации - согласен.
Но мне, например, частенько приходится проводить какие-то проверки, запросы и т.д. еще до подставления в запрос. И поэтому проще получается сразу обработать данные (при условии, конечно, что повторно их выводить уже не надо будет в ходе работы скрипта) | |
|
|
|
|
|
|
|
для: Trianon
(23.01.2010 в 00:26)
| | >Он не разрушает значений переменных.
можно поподробней? как второй вариант может "разрушать" значение переменных? | |
|
|
|
|
|
|
|
для: neadekvat
(22.01.2010 в 23:47)
| | >И потом, зачем так:
>$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
> mysql_real_escape_string($user),
> mysql_real_escape_string($password));
>По-моему, понимать проще так:
>$user = mysql_real_escape_string($user);
>$password = mysql_real_escape_string($password);
>$query = "SELECT * FROM users WHERE user = '$user' AND password = '$password'";
Эти два фрагмента не являются эквивалентными.
И логически более корректен именно первый. Он не разрушает значений переменных.
а понимать... по-моему, одинаково. | |
|
|
|
|
|
|
|
для: Ванек2010
(23.01.2010 в 00:06)
| | http://phpfaq.ru/ вот ещё ссылка | |
|
|
|
|
|
|
|
для: neadekvat
(22.01.2010 в 23:47)
| | Cпасибо, не че не знал про это..
2 способ по легче, т.е. neadekvata | |
|
|
|
|
|
|
|
для: neadekvat
(22.01.2010 в 23:47)
| | >как один из способов обработки данных | |
|
|
|
|
|
|
|
для: Slo_Nik
(22.01.2010 в 23:41)
| | > числовые данные можно обработать функцией intval();
И при этом, если они ну никак не должны быть равны нулю, проверять на ноль - зачем хлам в бд?
И потом, зачем так:
<?php
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
|
По-моему, понимать проще так:
<?php
$user = mysql_real_escape_string($user);
$password = mysql_real_escape_string($password);
$query = "SELECT * FROM users WHERE user = '$user' AND password = '$password'";
|
| |
|
|
|
|
|
|
|
для: Ванек2010
(22.01.2010 в 22:07)
| | их в запрос вставлять не надо, этими функциями надо обрабатывать данные, которые подставляются в запрос для отправки в базу.
вот небольшой пример из мануала, как один из способов обработки данных
<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
?>
|
числовые данные можно обработать функцией intval(); | |
|
|
|
|
|
|
|
для: tvv123456
(20.01.2010 в 04:03)
| | Спасибо, очень полезная статья!
Я вот не понял куда имеено вставлять в sql запрос вот эти функции
$result = mysql_query("SELECT * FROM news WHERE id='$id'",$db);
|
mysql_escape_string, mysql_real_escape_string, addslashes
|
| |
|
|
|
|
|
|
|
для: Ванек2010
(19.01.2010 в 15:47)
| | Его курсы расчитаны, чисто на новичков. Нельзя ограничеваться только ими. Нужно просто сесть за инет и разобраться зачем и что делает он в своих уроках, а потом взять книгу и почитать.
Эти курсы больше готовят людей к изучению php нежели являються источником качественных знаний
А еще вам наверное это будет полезно для начала :) http://ru.wikipedia.org/wiki/SQL_injection | |
|
|
|
|