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

Форум MySQL

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

 

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

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

тема: защита всего.

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

 
 автор: afdm   (21.01.2008 в 15:08)   письмо автору
 
   для: Unkind   (21.01.2008 в 13:34)
 

да. спасибо!!! уже разобрался :)))

   
 
 автор: Unkind   (21.01.2008 в 13:34)   письмо автору
 
   для: afdm   (21.01.2008 в 13:26)
 

> почему нужно использовать ctype_digit(), а не is_int(). Или не принципиально? в чём отличие этих двух функций? (может быть в том, что ctype_digit не пропускает отриц. значения???)
a) ctype_digit() проверяет является ли каждый символ цифрами 0-9.
b) is_int() проверяет тип переменной.

<?php
var_dump
(ctype_digit('123')); // bool(true)
var_dump(is_int('123')); // bool(false)

var_dump(ctype_digit('-123')); // bool(false)
var_dump(is_int(-123)); // bool(true)
?>


на "123" is_int() выдаст false , потому что это не integer, а string

   
 
 автор: afdm   (21.01.2008 в 13:26)   письмо автору
 
   для: afdm   (21.01.2008 в 13:21)
 

ещё два вопросика:

первый к Unkind'у: почему нужно использовать ctype_digit(), а не is_int(). Или не принципиально? в чём отличие этих двух функций? (может быть в том, что ctype_digit не пропускает отриц. значения???)

а второй такой: форму и обработчик вообще культурно делать в одном скрипте вместе? или лучше в двух разных? или тоже не принципиально?
спасибо!!!

   
 
 автор: afdm   (21.01.2008 в 13:21)   письмо автору
 
   для: Loki   (21.01.2008 в 11:14)
 

процитирую сам себя: :))
>PS все предыдущие замечания учтены и исправлены.
всё уже исправил... :))
ну раз вроде бы уже нет ошибок, думаю тему можно и закрыть :)))

   
 
 автор: Loki   (21.01.2008 в 11:14)   письмо автору
 
   для: afdm   (20.01.2008 в 23:33)
 

<?
$query 
= @mysql_query("SELECT * FROM users WHERE name='$login'"); 

Переменная $login у вас берется из воздуха.

   
 
 автор: afdm   (20.01.2008 в 23:33)   письмо автору
 
   для: afdm   (20.01.2008 в 16:39)
 

Ну неужели я написал что-то и вправду без ошибок? :)))

PS все предыдущие замечания учтены и исправлены.

   
 
 автор: afdm   (20.01.2008 в 19:49)   письмо автору
 
   для: afdm   (20.01.2008 в 16:39)
 

up!

   
 
 автор: afdm   (20.01.2008 в 16:39)   письмо автору
 
   для: afdm   (20.01.2008 в 15:44)
 

да и ещё! можно ли форму и обработчик запихать в один скрипт? не в смысле как, а в смысле правильно ли это будет? или всё-таки в разных оставить... спасибо!

   
 
 автор: afdm   (20.01.2008 в 15:44)   письмо автору
 
   для: Unkind   (20.01.2008 в 14:42)
 

спасибо Unkind за советы...
пожалуй, действительно не буду вводить ограничения на длину пароля. кстати, а какое самое длинное название зоны? travel, 6 знаков? или ещё есть какие-то?

> В любом случае, вместо проверки соответсвия паттерну /^[\d]*$/ (кстати, такой паттерн пропускает пустую строку, что может вызвать ошибку в SQL-запросе) лучше использовать ctype_digit().
можно поподробнее? а такой паттерн специально должен пропускать пустую строку, т.к. поле не явл. обязательным.
> Идет обращение к неопределенным переменным $login, $passw.
да простите, не заметил... просто раньше они были, а сейчас нет. исправлено...

PS какие ещё есть замечания??? особенно в плане проверки и вывода ошибок?!

   
 
 автор: Unkind   (20.01.2008 в 14:42)   письмо автору
 
   для: afdm   (20.01.2008 в 12:56)
 

По-моему, не стоит тратить время на такие проверки. Проще привести число к integer (если оно должно быть целым), чем делать проверку являются ли все символы цифрами. Одно отличие, которое может нарушить логику скрипта - возможность передавать отрицательные значения.
В любом случае, вместо проверки соответсвия паттерну /^[\d]*$/ (кстати, такой паттерн пропускает пустую строку, что может вызвать ошибку в SQL-запросе) лучше использовать ctype_digit().

Идет обращение к неопределенным переменным $login, $passw. Вообще в скрипте удаляете слеши и эскейпируете символы в $_POST['var'], а добавляете и проверяете $var.

Паттерн для e-mail ущемляет права владельцев ящиков на, допустим, доменах в зонах info, travel и т.д.

Если храните хеш, то не стоит, наверное, выдавать ошибку, если пароль длиннее 20 символов. И почему-то Вы так ограничиваете пользователя в наборе символов для пароля...На радость взломщикам.

   

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

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

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