Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 27.09.2017, 11:13
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

laimas,
че смутило строгое сравнение, оно немного быстрее работает, чем с далнейшим приведением типов
if (!empty($_GET['code']))
именно так, потому как код читается
Ответить с цитированием
  #12 (permalink)  
Старый 27.09.2017, 11:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Poznakomlus
че смутило строгое сравнение, оно немного быстрее работает, чем с далнейшим приведением типов
Дело не в копеечном выигрыше, а в том, что проверяется есть ли значение, но не проверяется какое, а сценарий при этом ожидает число. Если запросом прислать "вот вам, нате", то ваш код схавает его и в сессию запишет 0, которым сценарий потом оперировать должен? Ноль в качестве идентификатора (не знаю что это, но к примеру), это только при очень богатой фантазии. )
Ответить с цитированием
  #13 (permalink)  
Старый 27.09.2017, 11:46
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от laimas
есть ли значение, но не проверяется какое
проверку и валидацию типов получаемых значений, это к ТС http://php.net/manual/ru/filter.filters.validate.php
Не в скорости дело, а в читаемости
Ответить с цитированием
  #14 (permalink)  
Старый 27.09.2017, 12:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Poznakomlus
Не в скорости дело, а в читаемости
Ну это дело вкуса, читаемо не читаемо. Ваш код схавает непотребное, а зачем?
Ответить с цитированием
  #15 (permalink)  
Старый 27.09.2017, 12:32
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

$code = filter_input(INPUT_GET, 'code', FILTER_VALIDATE_INT);
if (false === empty($code)) 
{
	$_SESSION['code'] = $code;
}
else //$code 0, Null, false
{
	$code = 769;
}

$code = filter_input(INPUT_GET, 'code', FILTER_VALIDATE_INT);
if (empty($code))//$code 0, Null, false
{
	$code = 769;
}
else 
{
	$_SESSION['code'] = $code;
}


Последний раз редактировалось Vlasenko Fedor, 27.09.2017 в 12:38.
Ответить с цитированием
  #16 (permalink)  
Старый 27.09.2017, 12:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Poznakomlus,

Это я знаю, но зачем, если гораздо проще if($a = (int)$_GET['key']) используем $a, ведь другого ничего и не ожидается?

Об этом и был вопрос. )
Ответить с цитированием
  #17 (permalink)  
Старый 27.09.2017, 13:04
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

$_GET['key'] - это ,будет Notice при отсутствии в адресной строке одноименного гет параметра
empty не генерит Notice, так же в php7 тернарный оператор не генерит
Ответить с цитированием
  #18 (permalink)  
Старый 27.09.2017, 13:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Poznakomlus
$_GET['key'] - это ,будет Notice при отсутствии в адресной строке одноименного гет параметра
Об этом уже писалось, а на реальном сервере нотайсы нужно отключать, и коли разработчик контролирует ситуацию, то это не смертельно.

Я не о empty разговор завел, а о том, что ваш код пропускает на сохранение ненужное сценарию значение, и причина не в empty, а в логике.

Я сомневаюсь, что у автора темы есть метод/функция которой перенапраляется ввод, и которая делает проверки всех входных данных, используя при этом фильтры или нет. Просто в данном случае если уж вас так беспокоят нотайсы, то хватило бы isset() && (int). А то сперва "сомнительная забота о чем-то", а потом прицепом еще и фильтры.
Ответить с цитированием
  #19 (permalink)  
Старый 27.09.2017, 13:44
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от laimas
то это не смертельно
то есть вы пердлагаете писать код не взирая на предупреждения, ошибки
а затем скомпилить php без вывода ошибок и радоватся, так привыкнете говнокодить
Сообщение от laimas
ваш код пропускает на сохранение ненужное сценарию значение
где этот сценарий узрели, это ваши домыслы так как вы не знаете как дальше работаю с $code
к примеру
if($code === 0){
	echo 'параметр code должен быть числом';
}
Ответить с цитированием
  #20 (permalink)  
Старый 27.09.2017, 13:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Poznakomlus
то есть вы пердлагаете писать код не взирая на предупреждения, ошибки
Предупреждения, это не ошибки, но могут быть предпосылками к ним, поэтому в режиме отладки вывод их включен, но и отладкой надо заниматься не на удаленном сервере. На удаленном же сервере вывод их должен быть подавлен. Так что "предлагаю писать не взирая ни на что" я и не писал, да и речь не об этом.


Сообщение от Poznakomlus
где этот сценарий узрели, это ваши домыслы

Да елки палки, вот ваш код, запустите и посмотрите результат.

$_GET['code'] = 'text';

$code = 769;
if (false === empty($_GET['code'])) {
    $code = (int)$_GET['code'];
    $_SESSION['code'] = $code;
}

echo $_SESSION['code'];
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись видео с экрана prog77 Библиотеки/Тулкиты/Фреймворки 5 10.02.2020 18:31
getUserMedia() как отследить последующие изменения разрешений на запись? Amateur Элементы интерфейса 0 20.10.2015 22:30
Store - просто удалить запись Infarch ExtJS 1 12.08.2014 17:46
Зачем нужна session_ destroy() ? jsuse Серверные языки и технологии 2 03.03.2012 08:19
Как сделать чтобы пользователь только мог 2 раза прослушать запись? KOTDG AJAX и COMET 0 11.02.2012 22:37