Php list

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', 'class', 'clone', 'const', 'continue', 'declare', 'default', 'die', 'do', 'echo', 'else', 'elseif', 'empty', 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', 'eval', 'exit', 'extends', 'final', 'finally', 'for', 'foreach', 'function', 'global', 'goto', 'if', 'implements', 'include', 'include_once', 'instanceof', 'insteadof', 'interface', 'isset', 'list', 'namespace', 'new', 'or', 'print', 'private', 'protected', 'public', 'require', 'require_once', 'return', 'static', 'switch', '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']);  echo "<h3>Dir ".htmlspecialchars($f)."</h3><br />n<table>";  $name=scandir($_SERVER['DOCUMENT_ROOT'].$f);   foreach($name as $name) {  if (!($fileOK=(!isset($extensions)))) {  foreach($extensions as $is) if (!$fileOK) $fileOK=((strpos(strrev($name),$is)===0)||($extI &&(stripos(strrev($name),$is)===0)));  }  $is=is_dir($fullName=$_SERVER['DOCUMENT_ROOT']."$f/$name");  if ($is || $fileOK) echo '<tr><td>'.select_icon($is ? 'x.folder' : $name).'&nbsp;</td><td>&nbsp;'.($is ? '[' : '').'<a href="?f='.rawurlencode("$f/$name").($extI ? "&extI=$extI" : '').($ext ? "&ext=$ext" : '').'">'.htmlspecialchars($name).'</a>'.($is ? ']' : '').'</td>';  if ($is) echo '<td>&nbsp;</td><td>&nbsp;</td>';  elseif ($fileOK) echo '<td style="text-align: right">&nbsp;'.number_format(filesize($fullName),0,"."," ").'&nbsp;</td><td>&nbsp;'.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($token))||($token[0]!='('))) unset($func);  if((is_array($token))&&(in_array($token[0],array(T_EVAL,T_EXIT,T_INCLUDE,T_INCLUDE_ONCE,T_LIST,T_REQUIRE,T_REQUIRE_ONCE,T_RETURN,T_UNSET)))) {$token[0]=T_STRING;$thisStringIsFunc=1;}  switch($token[0]) {  case T_FUNCTION: $thisStringIsFunc=-1;  break;  case T_STRING:  if($thisStringIsFunc>0) {  if (!in_array(strtoupper($token[1]),$functionsUp)) {$functions[]=$token[1];$functionsUp[]=strtoupper($token[1]);}  $thisStringIsFunc = 0;  } elseif ($thisStringIsFunc+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-адрес сервера>. Мы должны увидеть, примерно, следующее:

Проверка работы NGINX — стартовая страница

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

You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.