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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Функция htmlspecialchars и stripslashes
 
 автор: Ванек2010   (19.01.2010 в 15:12)   письмо автору
 
 

Добрый день!
Объясните, как сделать лучше.
У меня около 40-50 полей для заполнения.
Необходимо их проверить с помощью функции htmlspecialchars и stripslashes
Теперь вопрос, мне так делать для каждого поля?
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);

И еще 48 полей точно также делать?
А нельзя допустим как-то сократить эту проверку?
И что посоветуету, какой может другой функицией проверять.
Просто JavaScript проверяет все супер, но не во всех браузерах.

  Ответить  
 
 автор: sim5   (19.01.2010 в 15:30)   письмо автору
 
   для: Ванек2010   (19.01.2010 в 15:12)
 

>Необходимо их проверить с помощью функции htmlspecialchars и stripslashes

Разве эти функции что-то проверяют?

  Ответить  
 
 автор: Ванек2010   (19.01.2010 в 15:35)   письмо автору
 
   для: sim5   (19.01.2010 в 15:30)
 

Ну тоесть я хотел сказать, чтобы не могли всякие коды писать.
Вроде как защищающая функция...

  Ответить  
 
 автор: GeorgeIV   (19.01.2010 в 15:37)   письмо автору
 
   для: Ванек2010   (19.01.2010 в 15:35)
 

не зная ПДД и не умея водить мотоцикл защищающий шлем вам вряд ли поможет...

  Ответить  
 
 автор: tvv123456   (19.01.2010 в 15:43)   письмо автору
 
   для: GeorgeIV   (19.01.2010 в 15:37)
 

>не зная ПДД и не умея водить мотоцикл защищающий шлем вам вряд ли поможет...
Прикольное предложение получилось :)
Я сначала понял так:
Если шлем не знает ПДД и не умеет водить мотоцикл, то он и не поможет :))))))))))))))))

  Ответить  
 
 автор: Ванек2010   (19.01.2010 в 15:43)   письмо автору
 
   для: GeorgeIV   (19.01.2010 в 15:37)
 

А чем еще можно защититься?

  Ответить  
 
 автор: Ванек2010   (19.01.2010 в 15:36)   письмо автору
 
   для: sim5   (19.01.2010 в 15:30)
 

Ну тоесть я хотел сказать, чтобы не могли всякие коды писать.
Вроде как защищающая функция...

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

:)
$login = stripslashes(htmlspecialchars($login));

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

А нельзя
stripslashes(htmlspecialchars($login,$password,$a,$b,$с и т.д.));

Так нельзя?)

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

Попробуйте

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

>А чем еще можно защититься?
Сомтря от чего. Вы в инете поищите какие угрозы есть там и найдете способы защиты от них

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

Ну после курса Евгения Попова, я понял, что поля надо защищать вот этими функциями... и обрезать еще можно пробелы с помощью trim :D

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

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

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

  Ответить  
 
 автор: Ванек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

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

  Ответить  
 
 автор: 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   (23.01.2010 в 00:00)   письмо автору
 
   для: neadekvat   (22.01.2010 в 23:47)
 

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

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

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

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

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

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

>Он не разрушает значений переменных.
можно поподробней? как второй вариант может "разрушать" значение переменных?

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

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

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

  Ответить  
Rambler's Top100
вверх

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