Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как работает эта функция?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как работает эта функция?
Ahtung
Отправлено: 24 Апреля, 2015 - 22:15:02
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




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

function clearData($data, $type='i'){
switch($type){
case 'i':
return $data*1;break;
case 's';
return trim(strip_tags($data));break;
}
никак не пойму почему параметр $type позволяет нам определить тип переменной ? вроде же стоит буква просто ,ну поставлю я 23 , тип" i" и что?а почему не 'Г'?Объясните как работает.
 
 Top
caballero
Отправлено: 24 Апреля, 2015 - 22:20:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




он ничего не позволяет

и вообще что за бредовая функция

где это вообще используется


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Ts.Saltan
Отправлено: 24 Апреля, 2015 - 23:02:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




Это типо валидатор переменных. Похожая идея у подготовленных запросов mysqli.
i - integer
s - string

Ahtung пишет:
никак не пойму почему параметр $type позволяет нам определить тип переменной ? вроде же стоит буква просто ,ну поставлю я 23 , тип" i" и что?а почему не 'Г'?Объясните как работает.

суть в том, чтобы привести переменную к нужному типу, например, если переменная приходит извне ($_GET/$_POST)
PHP:
скопировать код в буфер обмена
  1.  
  2. $data = 'hello';
  3. clearData($data, 'i'); //Вернёт 1, т.к. нам нужен тип integer
  4.  
 
 Top
exlant
Отправлено: 24 Апреля, 2015 - 23:04:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




присоединюсь к caballero, функция бредовая!
И ничего она не определяет, а делает ровно следующее:
если стоит type = 'i', переводит data в тип integer
если стоит type = 's' удаляет пробелы и теги
если поставить какую то другую букву то вообще ничего не сделает эта "функция"

а по параметру $type мы заходим в нужный case, вот и все...
 
 Top
Ahtung
Отправлено: 25 Апреля, 2015 - 08:53:07
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




Поясню она пропускает через себя данные отправленные методом пост.
$output="";
if($_SERVER['REQUEST_METHOD']=='POST'){
$n1=clearData($_POST['num1']);
$n2=clearData($_POST['num2']);
$op=clearData($_POST['operator'],'s');
$output="$n1 $op $n2 = ";
switch($op){
case '+': $output.=$n1+$n2;
break;
case '-': $output.=$n1-$n2;
break;
case '*': $output.=$n1*$n2;
break;
case '/':
if($output==0){
$output = 'FATAL_ERROR ..';
}else
$output.=$n1/$n2;
break;

default:$output = 'FATAL_ERROR ...';
break;
}
}
?>
Я вообщем так понял что значение переданное методом пост оно приходит любое (хз что нам там отправят),этой функцией мы обрабатываем,т е получается что переменная пришедшая методом пост имеет два параметра значение и тип ,мне не очень понятно было почему тип это i я думал int, integer.Т е свитчем проверяем тип переменной и он что только букву одну возвращает от типа? Хм
 
 Top
DeepVarvar Супермодератор
Отправлено: 25 Апреля, 2015 - 08:59:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ahtung пишет:
Поясню она пропускает через себя данные отправленные методом пост
А тебе никто не пояснял что там говнокод?
Давай ты попробуешь найти дыру сам.
А если не получится, тогда подскажу.
 
 Top
Ahtung
Отправлено: 25 Апреля, 2015 - 09:04:06
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




DeepVarvar пишет:
Ahtung пишет:
Поясню она пропускает через себя данные отправленные методом пост
А тебе никто не пояснял что там говнокод?

Дак вот я и разбираюсьУлыбкая ж буду всякие варианты рассматривать,это скорей из разряда "поймите как работает" для новичков.
(Добавление)
Ahtung пишет:
Давай ты попробуешь найти дыру сам.
А если не получится, тогда подскажу.

Может дыра что для любого ввода типа пусто или буквы в $data вернёт 0 и надо проверить что вводится в начале?в том плане что открыть калькулятор и там тебе предлагают конкретно по цифрам и операциям щелкать ,а не развертывают клавиатуру с буквамиУлыбкану так нубо предположениеУлыбка)Вот еще наткнулся bool is_numeric ( mixed $var ),Возвращает TRUE, если var является числом или строкой, содержащей число, в противном случае возвращается FALSE т е 2+2b =2 по моему коду ,а если 2b через is_numeric то он false будет.

(Отредактировано автором: 25 Апреля, 2015 - 10:56:44)

 
 Top
DeepVarvar Супермодератор
Отправлено: 25 Апреля, 2015 - 12:31:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну ты без предположений.
Перепиши код со своими измышлениями и кидай его сюда.
А я посмотрю какие дыры ты залатал, а какие нет.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB