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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
SofiaKit
Отправлено: 09 Мая, 2015 - 00:34:59
Post Id


Частый гость


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


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




Всем привет. Есть функция:
PHP:
скопировать код в буфер обмена
  1. function user_browser($agent) {
  2.         preg_match("/(MSIE|Opera|Firefox|Chrome|Version|Opera Mini|Netscape|Konqueror|SeaMonkey|Camino|Minefield|Iceweasel|K-Meleon|Maxthon)(?:\/| )([0-9.]+)/", $agent, $browser_info);
  3.         list(,$browser,$version) = $browser_info;
  4.         if (preg_match("/Opera ([0-9.]+)/i", $agent, $opera)) return 'Opera '.$opera[1];
  5.         if ($browser == 'MSIE') {
  6.                 preg_match("/(Maxthon|Avant Browser|MyIE2)/i", $agent, $ie);
  7.                 if ($ie) return $ie[1].' based on IE '.$version;
  8.                 return 'IE '.$version;
  9.         }
  10.         if ($browser == 'Firefox') {
  11.                 preg_match("/(Flock|Navigator|Epiphany)\/([0-9.]+)/", $agent, $ff);
  12.                 if ($ff) return $ff[1].' '.$ff[2];
  13.         }
  14.         if ($browser == 'Opera' && $version == '9.80') return 'Opera '.substr($agent,-5);
  15.         if ($browser == 'Version') return 'Safari '.$version;
  16.         if (!$browser && strpos($agent, 'Gecko')) return 'Browser based on Gecko';
  17.         return $browser.' '.$version;
  18. }

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

(Отредактировано автором: 09 Мая, 2015 - 00:35:52)

 
 Top
exlant
Отправлено: 09 Мая, 2015 - 00:49:57
Post Id



Посетитель


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


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




Правильно выводите... Так тоже можно выводить!
Ковыряйте саму функцию, почему в $browser.' '.$version не попадает, то что вам нужно, или почему не заходит в другие if

(Отредактировано автором: 09 Мая, 2015 - 00:50:34)

 
 Top
SofiaKit
Отправлено: 09 Мая, 2015 - 01:10:20
Post Id


Частый гость


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


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




exlant пишет:
Правильно выводите... Так тоже можно выводить!
Ковыряйте саму функцию, почему в $browser.' '.$version не попадает, то что вам нужно, или почему не заходит в другие if

потаму что правильный вывод такой:
PHP:
скопировать код в буфер обмена
  1. echo user_browser($_SERVER['HTTP_USER_AGENT']);
 
 Top
dcc0
Отправлено: 09 Мая, 2015 - 01:21:23
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




А зачем тогда функция? echo и переменной разве не достаточно?


-----
Март 2021. Бросил программирование
 
 Top
SofiaKit
Отправлено: 09 Мая, 2015 - 02:22:53
Post Id


Частый гость


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


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




dcc0 пишет:
А зачем тогда функция? echo и переменной разве не достаточно?

А функция как раз и обрабатывает то, что выдает $_SERVER['HTTP_USER_AGENT'], классно придумано, я бы не догадалась... я бы все в функции сделала... Однако
 
 Top
SofiaKit
Отправлено: 09 Мая, 2015 - 07:45:41
Post Id


Частый гость


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


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




Вот только не определяет IE, пишет:
Browser based on Gecko

Что надо вписать чтобы IE начал определять?
 
 Top
dcc0
Отправлено: 09 Мая, 2015 - 08:26:03
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




Непонятен смысл этой функции, когда почти то же самое, ну + еще некоторые данные.

PHP:
скопировать код в буфер обмена
  1. echo $_SERVER['HTTP_USER_AGENT'];
  2.  


Нет, надо обязательно 6 раз регуляркой пройтись, чтоб показать только название и версию.

(Отредактировано автором: 09 Мая, 2015 - 08:27:36)



-----
Март 2021. Бросил программирование
 
 Top
lastdays
Отправлено: 09 Мая, 2015 - 10:10:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


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




dcc0 пишет:
Нет, надо обязательно 6 раз регуляркой пройтись, чтоб показать только название и версию.


Наверно, потому, что user agent можно подделать?
риторический вопрос.
 
 Top
dcc0
Отправлено: 09 Мая, 2015 - 10:19:09
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




И что? lastdays, Что это дает?


-----
Март 2021. Бросил программирование
 
 Top
lastdays
Отправлено: 09 Мая, 2015 - 10:37:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


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




Ну, во первых, возможно нужен четко отформатированное название браузера пользователя, например для статистики или ещё каких-либо идей.
Ещё есть варианты взлома. Это потенциальная дыра, если идет запись в базу.

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

(Отредактировано автором: 09 Мая, 2015 - 10:39:28)

 
 Top
dcc0
Отправлено: 09 Мая, 2015 - 11:09:04
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




Цитата:
Ну, во первых, возможно нужен четко отформатированное название браузера пользователя, например для статистики или ещё каких-либо идей.



Это грех.


Цитата:
Это потенциальная дыра, если идет запись в базу.

В это можно поверить.
В сurl можно вписать все что угодно.

Но думаю, можно сократить эту функцию без ущерба для безопасности.


-----
Март 2021. Бросил программирование
 
 Top
lastdays
Отправлено: 09 Мая, 2015 - 11:40:20
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


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




Сейчас время такое. Можно не верить, но это есть.

Слыхали об Яндекс.Вебвизор ?
так те, вообще пишут видео экрана пользователя , координаты мышки и т.п.)
а всего то ссылка на статистику может висеть..

сорри за оффтоп конечно)
 
 Top
dcc0
Отправлено: 09 Мая, 2015 - 11:49:38
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




Значок оффтопа я поставил для своего сообщения Улыбка
В вашем комментарии оффтопа не вижу.
Цитата:

так те, вообще пишут видео экрана пользователя , координаты мышки и т.п.)


Это не может не печалить.


-----
Март 2021. Бросил программирование
 
 Top
SofiaKit
Отправлено: 09 Мая, 2015 - 18:32:36
Post Id


Частый гость


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


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




Все-же ушли от темы Растерялся
Какую строчку надо добавить, чтобы определялся IE? У меня вот к примеру:


И скрипт не распознает Однако
 
 Top
dcc0
Отправлено: 09 Мая, 2015 - 20:15:54
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


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




Можно положить переменную в файл, открыть и посмотреть, как определяется.
IE 6.0 в XP, например, так и определяется.


Вообще у вас уже есть MSIE

(Отредактировано автором: 09 Мая, 2015 - 20:16:50)



-----
Март 2021. Бросил программирование
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB