Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 43 из 64<  1 ... 40  41  42  43  44  45  46 ... 64  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
ToSHiC
Не совсем согласен, для $_POST я бы скорее проверял
Код:
if ($_POST['name'] !== "")

(долго объяснять, как протрезвею может и поясню)

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G



Партнер
 

Member
Статус: Не в сети
Регистрация: 09.04.2006
Vladson писал(а):
ToSHiC
Не совсем согласен, для $_POST я бы скорее проверял
Код:
if ($_POST['name'] !== "")

(долго объяснять, как протрезвею может и поясню)

А почему 2 знака равенства в операторе NOT?

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
moty
Потому что == и === это не одно и тоже, аналогично и != и !== (мануал в помощь)

Добавлено спустя 1 минуту 4 секунды:
Кстати учитывая что мы проверяем не просто "данные" а именно имя пользователя то даже лучше так
Код:
if (trim($_POST['name']) !== "")

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
Vladson писал(а):
moty
Потому что == и === это не одно и тоже, аналогично и != и !== (мануал в помощь)



Тут наверное тупой вопрос:
Цитата:
$a !== $b Not identical TRUE if $a is not equal to $b, or they are not of the same type. (introduced in PHP 4)


А какого другого типа может быть, ээээ... NULL?
И вообще, Нулл, разве сам не тип?
Или у других типов бывает нулевое значение?*
А в данном случае вообще получить нулевое значение, которое не будет типом НУЛЛ - вообще возможно?
*у boolean должно быть, да?

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
Vladson писал(а):
ToSHiC
Не совсем согласен, для $_POST я бы скорее проверял
Код:
if ($_POST['name'] !== "")

(долго объяснять, как протрезвею может и поясню)

а чо если юзернейм из цифир?:)
в принципе, у empty есть только один досадный минус - если на вход попадёт число 0, то оно скажет, что это empty. а если тримы всякие начинать юзать - то надо уж регекспами работать с жёсткой фильтрацией допустимых символов :)

2moty: пхп автоматически преобразует типы в зависимости от содержимого, имеются в наличии из основных: string, integer, array, boolean, float. === будет проверять на совпадение не только контента, но и типов, т.е. "0" (строка с одной буквой ноль) не будет совпадать с 0 (целое число 0) или 0. (дробное число 0).

З.Ы. на счёт типа 0. сомневаюсь, может обозвать и целым. но в сях это 100% дробное.


 

Advanced member
Предупреждение Предупреждение 
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 64
moty писал(а):
Спасибо! работает!

Работает, но этот код содержит багу... А именно, PHP_SELF надо фильтровать с помощью htmlspecialchars(), иначе существует возможность впихнуть туда примерно такую конструкцию:

Код:
http://www.example.ru/form.php/"><script>alert('xss attack')</script>

Что приведет к выполнению
Код:
/"><script>alert('xss attack')</script>

в браузере клиента.

_________________
9950X3D / Asus x870e Crosshair Hero / RX 6900XT Gaming OC / 96 Gb Trident Z5 @ 6400 28-38-38-50-88 (1T, GDM off, Vdd 1.58 Vddq 1.45)


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
ToSHiC писал(а):
один досадный минус - если на вход попадёт число 0, то оно скажет, что это empty

Вот о том и речь (причём это кажется что это мелочь, а на деле если это не предусмотреть то это серьёзная "дыра")

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
Vladson писал(а):
ToSHiC писал(а):
один досадный минус - если на вход попадёт число 0, то оно скажет, что это empty

Вот о том и речь (причём это кажется что это мелочь, а на деле если это не предусмотреть то это серьёзная "дыра")

это не баг, а документированная фича :) причём, имхо, логичная. можешь проверить, заработает ли !=="" с юзернеймом вида 111 ? кмк ругнётся..


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
ToSHiC писал(а):
2moty: пхп автоматически преобразует типы в зависимости от содержимого, имеются в наличии из основных: string, integer, array, boolean, float. === будет проверять на совпадение не только контента, но и типов, т.е. "0" (строка с одной буквой ноль) не будет совпадать с 0 (целое число 0) или 0. (дробное число 0).


Не совсем понял, например переменная , которая была интегером, и в процессе выполнения стала равной нулю - изменит свой тип на НУЛЛ или останется нулевыи интегером?
Т.Е.
$var=0;

Тогда $var==NULL это тру, а $var===NULL это ещё тру или уже фолс? А если $var никогда не был назначен то $var===NULL тру?
Я, просто, не совсем понимаю, чтои именно полохого произайдёт, если написать
if ($_POST['name'] !== "")
вместо
if ($_POST['name'] != "")

В оригинальном примере вообще другая проверка:

Цитата:
$lahetys=$_POST['submit'];
echo $lahetys;
if($lahetys=='OK') { весь остальной код...


Я думал что оно будет пускать и нулевые значения и решил модифицировать.

Цитата:
это не баг, а документированная фича причём, имхо, логичная. можешь проверить, заработает ли !=="" с юзернеймом вида 111 ? кмк ругнётся..


Интересно, а решение, которое было-бы тру, если-бы в имени пользователя была любая комбинация(допустим, даже пробел), которую он вводил-бы с клавиатурыб при этом фолс был-бы исключительно если ничего введено не будет - это трим?
А если хотим только буквы англ алфавитаб с/без учёта регистра и без спец символов - надо писать специальный фильтрующий/не пропихивающий дальше скрипт?

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


Последний раз редактировалось moty 14.01.2010 9:29, всего редактировалось 1 раз.

 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
ToSHiC писал(а):
это не баг, а документированная фича

Не спорю, именно по этому нужен "костыль" в виде !== "" (в противном случае прошёл бы простой empty)

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
Несколько вопросов:
1. Как защищают PHP приложения? "Если мы увидим крякнутый скрипт нашего производства на вашем сайте - мы надерём вам задницу?"
2. Безопасна-ли концепци функций переменных:
Код:
$language = "italian";
// Выполнить функцию-переменную
$language( );


По идее очень пытливый пользователь вручную изменив отправляемые данные браузером может запустить любую функцию, которую захочет?

3. Когда создают библиотеки функций - безопасно-ли оставлять файлы библиотек функций в доступном из веба месте?


4. Если сказать доступным языком, результатом функции array_values( ) является возват обрабатываемого массива, ввиде одномерного массива, в котором нафиг убиты индксы из оригинала?

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

Member
Статус: Не в сети
Регистрация: 08.07.2006
Откуда: СПБ
moty писал(а):
1. Как защищают PHP приложения? "Если мы увидим крякнутый скрипт нашего производства на вашем сайте - мы надерём вам задницу?"

Zend Guard и тому подобные продукты.
moty писал(а):
По идее очень пытливый пользователь вручную изменив отправляемые данные браузером может запустить любую функцию, которую захочет?

Если отключены глобальные имена - не сможет, и потом, много ли у вас глобальных функций в пространстве имен?
moty писал(а):
3. Когда создают библиотеки функций - безопасно-ли оставлять файлы библиотек функций в доступном из веба месте?

Теоретически, при верно настроенном сервере - безопасно, на практике всегда найдется дырка, позволяющая их прочитать, а это уже угроза. Лучше хранить их, например, на уровень выше, чем public.
moty писал(а):
4. Если сказать доступным языком, результатом функции array_values( ) является возват обрабатываемого массива, ввиде одномерного массива, в котором нафиг убиты индксы из оригинала?

http://www.php.ru/manual/function.array-values.html Не знаю куда уж проще


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
Не использовать кавычки тут - плохо?
ЭДИТ: Уже понял - zend studio пишет например: - Use of undefined constant time - assumed 'time - значит плохо.
$array=array(now, is, a, time);

$array2=array('now', 'is', 'a', 'time');


2. что делать, если допустим надо применить функцию, напр array_reverse( ) или array_count_values() - которые работают только с одномерными массивами, к массивам, у которых внутри есть другие массивы? Создавать ещё одну переменную в которую выводить оригинальный, отфильтрованный от внутренних массивов array и и считать из неё?


3. допустим мы хотим получить результат 89659569586956*58656556856 но в виде целого числа
(5259121641161773049970336)
А не ввиде вот этого плавающего:
5.2591216411618E+24
- надо использовать расширение BCmap http://www.php.su/functions/?cat=bc и никак иначе?

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
moty писал(а):
Когда создают библиотеки функций - безопасно-ли оставлять файлы библиотек функций в доступном из веба месте?

В случае если доступен их исходный код (т.е файлы не РНР а например ТХТ или как многие любят INC) то доля опасности присутствует (например если функции сложные и в них могут оказаться дыры) однако если проект изначально "OpenSource" то этого по любому не избежать.
В случае если они доступны для исполнения то лучше их прятать (например в отдельную папку закрытую через .htaccess) потому что их вызов (в некоторых редких случаях) может привести к непредсказуемому результату (обычно это не опасно, но есть один шанс на миллион что вылетит ошибка из которой можно будет выудить скрытую информацию)

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
moty писал(а):
2. что делать, если допустим надо применить функцию, напр array_reverse( ) или array_count_values() - которые работают только с одномерными массивами, к массивам, у которых внутри есть другие массивы? Создавать ещё одну переменную в которую выводить оригинальный, отфильтрованный от внутренних массивов array и и считать из неё?

в пхп нету многомерных массивов. есть массивы, элементы которых тоже являются массивами, но тем не менее исходные массив вполне себе одномерный. как видно из мануала на функцию array_reverse, никаких телодвижений делать не надо. даже пример есть.

moty писал(а):
3. допустим мы хотим получить результат 89659569586956*58656556856 но в виде целого числа
(5259121641161773049970336)
А не ввиде вот этого плавающего:
5.2591216411618E+24
- надо использовать расширение BCmap http://www.php.su/functions/?cat=bc и никак иначе?

можно использовать функции семейства printf: http://ru.php.net/manual/en/function.sprintf.php


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
ToSHiC писал(а):
в пхп нету многомерных массивов. есть массивы, элементы которых тоже являются массивами, но тем не менее исходные массив вполне себе одномерный.


ЭЭЭ.... это какие-то формальности формулировки? :-) Вроде-же везде называют многомерными...
http://www.softtime.ru/bookphp/gl4_3.php

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
это не формальности. посмотри примеры из мануала. там один элемент массива - текст, второй - цифра, третий - массив. классическим многомерным массивом это назвать ну никак нельзя. соответственно, и для функций работы с массивами тоже никаких многомерных массивов не существует, только одномерные, в качестве элементов которых может быть что угодно, в т.ч. другие массивы


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
ToSHiC писал(а):
это не формальности. посмотри примеры из мануала. там один элемент массива - текст, второй - цифра, третий - массив. классическим многомерным массивом это назвать ну никак нельзя

классическим никак, но работать с таковым почти как с многомерным вполне можно...

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 09.04.2006
Допустим у меня есть $newvariablename="newvariable";
Как мне создать переменную, имя которой будет равно значению $newvariablename т.е. $newvariable? Есть какая-нибудь специальная функция для этого?

_________________
Библиотеки Windows - Мы заставим ваши папки тормозить!


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
Код:
<?php
$newvariablename="newvariable";

$$newvariablename= 123;

echo $newvariable; // даст 123
?>

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 43 из 64<  1 ... 40  41  42  43  44  45  46 ... 64  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan