Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Функция htmlspecialchars и stripslashes

Сообщения:  [1-10]    [11-20]  [21-22] 

 
 автор: neadekvat   (23.01.2010 в 00:33)   письмо автору
 
   для: Trianon   (23.01.2010 в 00:26)
 

> Он не разрушает значений переменных.
В данной конкретной ситуации - согласен.

Но мне, например, частенько приходится проводить какие-то проверки, запросы и т.д. еще до подставления в запрос. И поэтому проще получается сразу обработать данные (при условии, конечно, что повторно их выводить уже не надо будет в ходе работы скрипта)

  Ответить  
 
 автор: Slo_Nik   (23.01.2010 в 00:33)   письмо автору
 
   для: 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'";

Эти два фрагмента не являются эквивалентными.
И логически более корректен именно первый. Он не разрушает значений переменных.

а понимать... по-моему, одинаково.

  Ответить  
 
 автор: Slo_Nik   (23.01.2010 в 00:17)   письмо автору
 
   для: Ванек2010   (23.01.2010 в 00:06)
 

http://phpfaq.ru/ вот ещё ссылка

  Ответить  
 
 автор: Ванек2010   (23.01.2010 в 00:06)   письмо автору
 
   для: neadekvat   (22.01.2010 в 23:47)
 

Cпасибо, не че не знал про это..
2 способ по легче, т.е. neadekvata

  Ответить  
 
 автор: Slo_Nik   (23.01.2010 в 00:00)   письмо автору
 
   для: neadekvat   (22.01.2010 в 23:47)
 

>как один из способов обработки данных

  Ответить  
 
 автор: 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'";

  Ответить  
 
 автор: Slo_Nik   (22.01.2010 в 23:41)   письмо автору
 
   для: Ванек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();

  Ответить  
 
 автор: Ванек2010   (22.01.2010 в 22:07)   письмо автору
 
   для: 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

  Ответить  
 
 автор: tvv123456   (20.01.2010 в 04:03)   письмо автору
 
   для: Ванек2010   (19.01.2010 в 15:47)
 

Его курсы расчитаны, чисто на новичков. Нельзя ограничеваться только ими. Нужно просто сесть за инет и разобраться зачем и что делает он в своих уроках, а потом взять книгу и почитать.
Эти курсы больше готовят людей к изучению php нежели являються источником качественных знаний

А еще вам наверное это будет полезно для начала :) http://ru.wikipedia.org/wiki/SQL_injection

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-22] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования