To get list of defined and used functions in code, with small useful file manager, you can use code below. Enjoy!
if ((!function_exists('check_password'))||(!check_password()) ) exit('Access denied.'); //...security! echo "<html><body>"; if (!$f) echo nl2br(htmlspecialchars(' Useful parameters: $ext - allowed extensions, for example: ?ext=.php,css $extI - case-insensitivity, for example: ?extI=1&ext=.php,css ')); if (($f)&&(is_readable($_SERVER['DOCUMENT_ROOT'].$f))&&(is_file($_SERVER['DOCUMENT_ROOT'].$f))) { echo "<h3>File <strong>$f</strong></h3>n"; if(function_exists('get_used_functions_in_code')) { echo '<h3>Used:</h3>'; $is=get_used_functions_in_code(file_get_contents($_SERVER['DOCUMENT_ROOT'].$f)); sort($is); $def=get_defined_functions(); $def['internal']=array_merge($def['internal'], array('__halt_compiler', 'abstract', 'and', 'array', 'as', 'break', 'callable', 'case', 'catch', .
tch', 'throw', 'trait', 'try', 'unset', 'use', 'var', 'while')); foreach ($def['user'] as &$e) $e=strtolower($e); unset($e); foreach ($is as &$e) if (!in_array(strtolower($e), $def['internal'], TRUE)) $e='<span style="color: red">'.$e.'</span>'; unset($e); //user-defined functions will be red echo implode('<br />'.PHP_EOL,$is); } else echo "Error: missing function 'get_used_functions_in_code' !"; if(function_exists('get_defined_functions_in_code')) { echo '<br /><h3>Defined:</h3>'; $is=get_defined_functions_in_code(file_get_contents($_SERVER['DOCUMENT_ROOT'].$f)); sort($is); echo implode('<br />',$is); } else echo "Error: missing function 'get_defined_functions_in_code' !"; } /* File manager */ else { if (!function_exists('select_icon')) { function select_icon($name) {$name = pathinfo($name); return '['.$name["extension"].']';} } if($ext) $extensions=explode(',',strrev($ext)); if(!$f) $f=dirname($_SERVER['PHP_SELF']).
p;</td><td> '.($is ? '[' : '').'<a href="?f='.rawurlencode("$f/$name").($extI ? "&extI=$extI" : '').($ext ? "&ext=$ext" : '').'">'.htmlspecialchars($name).'</a>'.($is ? ']' : '').'</td>'; if ($is) echo '<td> </td><td> </td>'; elseif ($fileOK) echo '<td style="text-align: right"> '.number_format(filesize($fullName),0,"."," ").' </td><td> '.date ("Y.m.d (D) H:i",filemtime($fullName)).'</td>'; if ($is || $fileOK) echo '</tr>'.PHP_EOL; } echo "n</table>n"; } echo "<br /><br />".date ("Y.m.d (D) H:i")."</body></html>"; return; /********************************************************************/ function get_used_functions_in_code($source) { $tokens = token_get_all($source); $functions = array(); $thisStringIsFunc = 0; foreach($tokens as $token) { if(($token[0]!=T_WHITESPACE)&&((!is_string($tok.
sStringIsFunc+1>0) { $func = $token[1]; } else $thisStringIsFunc = 0; break; case '(':if($func) if(!in_array(strtoupper($func),$functionsUp)) {$functions[]=$func;$functionsUp[]=strtoupper($func);} } } return $functions; } /********************************************/ function get_defined_functions_in_code($source) { $tokens = token_get_all($source); ... then Andrew code (get_defined_functions_in_file) (https://stackoverflow.com/a/2197870/9996503) }
stackoverflow.com
Подготовка сервера
1. Отключаем Selinux
Для этого вводим две команды:
* первая команда отключает систему безопасности разово для текущей загрузки, вторая — навсегда. Подробнее про отключение Selinux или его правильную настройку.
2. Настраиваем время
Задаем временную зону:
* в данном примере московское время.
Устанавливаем утилиту для синхронизации времени:
Настраиваем cron для автоматического обновления времени:
Разово обновляем время:
Установка и настройка веб-сервера
NGINX
Если в системе не установлен NGINX, выполняем команду:
Открываем порт в брандмауэре:
Разрешаем автостарт NGINX и запускаем его:
Открываем браузер на любом компьютере в сети и вводим http://<IP-адрес сервера>. Мы должны увидеть, примерно, следующее:
PHP и PHP-FPM
Устанавливаем необходимые компоненты:
Разрешаем автозапуск php-fpm и запускаем его:
Установка сервера баз данных
Устанавливаем СУБД MariaDB:
Разрешаем автозапуск и стартуем службу:
Задаем пароль для root-пользователя базы данных:
Установка phplist
1. Скачиваем и распаковываем портал
Переходим на страницу sourceforge.net — скачиваем последнюю версию phplist или копируем ссылку для скачивания и вводим команду в CentOS:
* где https://downloads.sourceforge.net/project/phplist/phplist/3.3.5/phplist-3.3.5.zip — скопированная ссылка на phplist версии 3.3.5.
* если мы скачали архив на компьютере с Windows, перенести его на Linux можно с помощью программы WinSCP.
Распаковываем архив:
* если система выдаст ошибку, устанавливаем unzip — yum install unzip.
Переходим в распакованный каталог:
Создаем каталог для портала:
и переносим в него файлы phplist:
Меняем владельца для папки:
2. Создаем базу данных
Подключаемся к СУБД:
* нужно будет ввести пароль, который мы устанавливали на этапе установки MariaDB.
Создаем базу:
* где phplistdb — имя базы.
Добавляем пользователя:
* где phplist — имя пользователя; phplist123 — пароль.
Выходим:
3. Настраиваем phplist
Открываем конфигурационный файл phplist и редактируем следующее:
* где опции database_host — имя сервера баз данных; database_name — имя базы данных; database_user — пользователь для подключения к базе данных; database_password — пароль для подключения к базе; define ("TEST",0) — отключение тестового режима (на первое время, можно оставить без изменения).
Добавляем следующие строки:
4. Настраиваем NGINX
Создаем новый виртуальный домен:
* phplist.dmosk.local — виртуальный домен нашего портала управления рассылками; /var/www/phplist — путь расположения файлов портала на сервере; /var/run/php-fpm/php-fpm.sock — путь до нашего сокетного файла php-fpm;
Перезапускаем nginx:
5. Настраиваем PHP-FPM
Открываем конфиг php-fpm:
Меняем:
На:
Перезапускаем php-fpm:
www.dmosk.ru
Всем доброго времени суток. На связи Алексей Гулынин. В статье, посвященной обработке полей формы в PHP, мы с вами убедились, что передавать значения полей формы на обработку достаточно просто. Мы использовали массив $_REQUEST, где в качестве параметра указывали имя поля. И у всех полей были разные имена. Но как скрипт отработает в том случае, когда у полей одинаковые имена и мы выбираем несколько, например такая ситуация возникает при работе со списками, флажками (checkbox). Давайте создадим скрипт, который будет показывать значения из списка, которые мы выбрали. Также будем создавать всё в одном файле:
<?php if (!isset($_REQUEST['start'])) {?> <?php echo "<form action='$_SERVER[SCRIPT_NAME]'> <select name='cities' multiple> <option>Moscow <option>Piter <option>Saratov </select> <input type='submit' name='start' value='Запустить сценарий'/> </form>";} else { echo "Города: ".$_REQUEST["cities"]; } ?>
Если мы запустим данный скрипт и выберем пару городов, то будет показан только последний. Чтобы иметь возможность вывести все города, необходимо как-то их всех передать. Для этого можно использовать массивы, т.е. в качестве значения атрибута name нашего select можно поставить cities[]:
<?php <select name='cities[]' multiple> ?>
Все города можно вывести с помощью print_r($_REQUEST[‘cities’]) (это быстрый вариант), или воспользоваться циклом foreach:
<?php foreach ($_REQUEST["cities"] as $city) { echo "$city "; } ?>
После этого, сколько бы элементов мы ни выбрали, скрипт нормально отработает и выведет нам все города.
Аналогично будет строиться работа по обработке флажков (checkbox). В отличие от radiobutton, элементов с типом checkbox можно выбрать сколько угодно много.
В качестве домашнего задания:
Создайте скрипт, который будет спрашивать ваш пол (использовать radiobutton), а также языки программирования, которые вы знаете (сделать на выбор 3 языка). На страницу должно выводиться: ваш пол, языки, которые знаете.
Рекомендую сделать самим, но, если возникнут трудности, то код можно посмотреть под хайдом.
В данной статье вы узнали, как работать с полями множественного выбора в PHP.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.
alekseygulynin.ru