Архив рубрики: Публикации

Как добавить аргументы командной строки в скрипт Python

Если вы разработали сценарий Python или приложение, предназначенное для запуска в основном в эмуляторах терминала или даже в приложениях с графическим интерфейсом пользователя, добавление аргументов командной строки может улучшить его удобство использования, читаемость кода, структуру приложения и общее удобство использования приложения для конечных пользователей. Эти аргументы командной строки также называются «параметрами» или «переключателями» и работают аналогично аргументам, которые вы обычно видите в сценариях bash и других программах на C/C ++.

Чтобы добавить аргументы в сценарии Python, вам нужно будет использовать встроенный модуль с именем «argparse». Как следует из названия, он анализирует аргументы командной строки, используемые при запуске скрипта или приложения Python. Эти проанализированные аргументы также проверяются модулем «argparse», чтобы убедиться, что они имеют правильный «тип». Ошибки возникают, если в аргументах есть недопустимые значения.

Использование модуля argparse можно лучше понять на примерах. Ниже приведены несколько примеров кода, которые помогут вам начать работу с модулем argparse.

 

Пример 1: Создание аргумента и сообщения справки

Рассмотрим пример кода ниже:

import argparse



parser = argparse.ArgumentParser(description='A test program.')



args = parser.parse_args()

 

Первый оператор импортирует модуль «argparse». Затем создается новый экземпляр объекта «ArgumentParser», и в качестве аргумента предоставляется краткое описание программы. Объект ArgumentParser необходим для преобразования значений аргументов командной строки в типы данных, понятные Python. Это выполняется методом parse_args объекта ArgumentParser, как показано в последнем операторе.

Предполагая, что вы сохранили пример кода, указанный выше, в файле с именем «test.py», выполнение приведенных ниже команд приведет к появлению справочных сообщений, связанных с программой.

$ ./test.py -h



$ ./test.py --help

 

Вы должны получить примерно такой результат:

usage: test.py [-h]



A test program.



optional arguments:



-h, --help show this help message and exit




 

Обратите внимание, что в упомянутый выше пример кода не добавлена ​​логика для обработки проанализированных аргументов и преобразования их в объекты. Следовательно, справочные сообщения для отдельных аргументов в выводе не отображаются. Как только вы добавите логику для обработки значений анализируемых аргументов в вашу программу, в справочных сообщениях начнется отображение описания отдельных аргументов.

 

Пример 2: Обработка строкового аргумента

Чтобы добавить аргументы, приемлемые для вашего скрипта python, вам необходимо использовать метод «add_argument». Взгляните на следующий код:

import argparse



parser = argparse.ArgumentParser(description='A test program.')



parser.add_argument("print_string", help="Prints the supplied argument.")



args = parser.parse_args()



print(args.print_string)

 

Был добавлен новый оператор, показывающий использование метода «add_argument». Любой аргумент, добавленный при запуске скрипта, будет обрабатываться ArgumentParser как объект «print_string».

Обратите внимание, что по умолчанию метод add_argument обрабатывает значения, полученные из аргументов, как строки, поэтому вам не нужно явно указывать «тип» в этом случае. Значение по умолчанию «Нет» также присваивается добавленным аргументам, если оно не отменено.

Еще раз взгляните на справочное сообщение:

usage: test.py [-h] [print_string]



A test program.



positional arguments:



print_string Prints the supplied argument.



optional arguments:



-h, --help show this help message and exit




 

Одна из строк вывода говорит «позиционные аргументы». Поскольку ключевое слово для аргумента не определено, в настоящее время аргумент рассматривается как «позиционный аргумент», где порядок и позиция предоставленного аргумента имеют прямое влияние на программу. Позиционные аргументы также являются обязательными, если вы не измените их поведение вручную.

Чтобы определить и проанализировать необязательные аргументы, вы можете использовать «-» (двойное тире) и изменить их значения по умолчанию, используя аргумент «default».

import argparse



parser = argparse.ArgumentParser(description='A test program.')



parser.add_argument("--print_string", help="Prints the supplied argument.", default=”A random string.”)



args = parser.parse_args()



print(args.print_string)

 

Теперь, когда вы запускаете скрипт test.py без аргументов, вы должны получить «случайную строку». как выход. Вы также можете дополнительно использовать ключевое слово «–print_string» для печати любой строки по вашему выбору.

$ ./test.py --print_string AndreyEx.ru

AndreyEx.ru

 

Обратите внимание, что вы можете сделать необязательный аргумент обязательным, используя дополнительный аргумент «required = True».

Наконец, вы также можете определить сокращенные версии аргумента, используя «-» (одиночное тире), чтобы уменьшить многословие.

import argparse



parser = argparse.ArgumentParser(description='A test program.')



parser.add_argument(“-p”, "--print_string", help="Prints the supplied argument.", default=”A random string.”)



args = parser.parse_args()



print(args.print_string)

 

Выполнение следующей команды должно дать тот же результат, что и выше:

$ ./test.py -p AndreyEx.ru

Пример 3: Обработка целочисленного аргумента

Чтобы обрабатывать аргументы, которым требуются целочисленные значения, вам необходимо установить ключевое слово «type» на «int», чтобы разрешить проверку и выдавать ошибки в случае, если условие не выполняется.

import argparse



parser = argparse.ArgumentParser(description='A test program.')



parser.add_argument("-p", "--print_string", help="Prints the supplied argument.", type=int)



args = parser.parse_args()



print(args.print_string)

 

Попробуйте выполнить следующую команду:

$ ./test.py -p AndreyEx.ru

 

Вы должны получить такую ошибку:

usage: test.py [-h] [-p PRINT_STRING]



test.py: error: argument -p/--print_string: invalid int value: 'AndreyEx.ru'




 

Предоставление целочисленного значения даст вам правильный результат:

$ ./test.py -p 1000

1000

Пример 4: Обработка переключателей True и False

Вы можете передавать аргументы без каких-либо значений, чтобы рассматривать их как флаги True и False, используя аргумент «action».

import argparse



parser = argparse.ArgumentParser(description='A test program.')



parser.add_argument("-p", "--print_string", help="Prints the supplied argument.", action="store_true")



args = parser.parse_args()



print(args.print_string)

 

Выполните команду ниже, чтобы получить на выходе простое «Истина»:

$ ./test.py -p

 

Если вы запустите сценарий без аргумента «-p», вместо него будет присвоено значение «Ложь». Значение «store_true» ключевого слова «action» присваивает значение «True» переменной «print_string» всякий раз, когда аргумент «-p» явно указан, в противном случае переменной присваивается значение «False».

 

Пример 5. Обработка значений аргументов как списка

Если вы хотите получить сразу несколько значений и сохранить их в списке, вам необходимо указать ключевое слово nargs в следующем формате:

import argparse



parser = argparse.ArgumentParser(description='A test program.')



parser.add_argument("-p", "--print_string", help="Prints the supplied argument.", nargs='*')



args = parser.parse_args()



print(args.print_string)

 

Выполните следующую команду, чтобы проверить приведенный выше код:

$ ./test.py -p “a” “b”

 

Вы должны получить примерно такой результат:

['a', 'b']

Вывод

Модуль «argparse» довольно обширен с множеством опций для настройки поведения приложений командной строки и анализа значений, вводимых пользователем. Эти примеры касаются только базового использования модуля «argparse». Для сложных и сложных приложений вам могут потребоваться разные реализации.



2020-12-03T12:55:23
Python

Сжатие, дефрагментация и оптимизация базы данных MariaDB/MySQL

В этой статье мы будем исследовать некоторые методы сжатия таблицы / базы данных и дефрагментации в MySQL / MariaDB, что поможет вам сэкономить место на диске , база данных расположена на.

Базы данных крупных проектов со временем безмерно разрастаются, и всегда возникает вопрос, что с ними делать. Есть несколько способов решить проблему. Вы можете уменьшить объем данных в базе данных, удалив старую информацию, разделив базу данных на более мелкие, увеличив размер диска на сервере или сжав / сжав таблицы.

Еще один важный аспект функционирования базы данных — необходимость время от времени дефрагментировать таблицы и базы данных для повышения их производительности.

Сжатие и оптимизация таблиц InnoDB

Файлы ibdata1 и ib_log

Большинство проектов с таблицами InnoDB имеют проблемы с большими файлами ibdata1 и ib_log. В большинстве случаев это связано с неправильной  конфигурацией MySQL/MariaDB или архитектурой БД. Вся информация из таблиц InnoDB хранится в файле ibdata1, пространство которого само не используется. Я предпочитаю хранить данные таблицы в отдельных  файлах ibd*. Для этого добавьте в my.cnf следующую строку:

innodb_file_per_table

или

innodb_file_per_table = 1

Если ваш сервер настроен и у вас есть продуктивные базы данных с таблицами InnoDB, сделайте следующее:

  1. Сделайте резервную копию всех баз данных на вашем сервере (кроме mysql и performance_schema). Вы можете получить дамп базы данных с помощью этой команды:

    # mysqldump -u [username] –p[password] [database_name] > [dump_file.sql]
  2. После создания резервной копии базы данных остановите сервер mysql/mariadb;
  3. Измените настройки в my.cfg;
  4. Удалите  файлы ibdata1  и  ib_log;
  5. Запустите демон mysql/mariadb;
  6. Восстановить все базы из резервной копии:

    # mysql -u [username] –p[password] [database_name] < [dump_file.sql]

После этого все таблицы InnoDB будут храниться в отдельных файлах, и ibdata1 перестанет экспоненциально расти.

Сжатие таблиц InnoDB

Вы можете сжимать таблицы с текстовыми данными / данными BLOB и экономить довольно много места на диске.

У меня есть база данных innodb_test, содержащая таблицы, которые потенциально могут быть сжаты, и поэтому я могу освободить место на диске. Прежде чем что-либо делать, я рекомендую сделать резервную копию всех баз данных. Подключитесь к серверу mysql:

# mysql -u root -p

Выберите нужную базу данных в консоли mysql:

# use innodb_test;

Чтобы отобразить список таблиц и их размеры, используйте следующий запрос:

SELECT table_name AS "Table",

ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size in (MB)"

FROM information_schema.TABLES

WHERE table_schema = "innodb_test"

ORDER BY (data_length + index_length) DESC;

Где innodb_test — имя вашей базы данных.

Некоторые таблицы могут быть сжаты. Возьмем для примера таблицу b_crm_event_relations. Запустите этот запрос:

mysql> ALTER TABLE b_crm_event_relations ROW_FORMAT=COMPRESSED;

После его запуска вы можете увидеть, что размер таблицы уменьшился с 26 МБ до 11 МБ из-за сжатия.

Сжимая таблицы, вы можете сэкономить много дискового пространства на вашем хосте. Однако при работе со сжатыми таблицами нагрузка на процессор возрастает. Используйте сжатие для таблиц db, если у вас нет проблем с ресурсами процессора, но есть проблема с дисковым пространством.

Сжатие таблиц MyISAM в MySQL / MariDB

Для сжатия  таблиц Myisam используйте специальный запрос в консоли сервера вместо консоли mysql. Чтобы сжать таблицу, запустите следующее:

# myisampack -b /var/lib/mysql/test/modx_session

Где /var/lib/mysql/test/modx_session — это путь к вашей таблице. К сожалению, у меня не было большой таблицы и пришлось сжимать маленькие, но результат все равно можно было увидеть (файл был сжат с 25 МБ до 18 МБ):

# du -sh modx_session.MYD

25M modx_session.MYD

# myisampack -b /var/lib/mysql/test/modx_session

Compressing /var/lib/mysql/test/modx_session.MYD: (4933 records)

— Calculating statistics

— Compressing file

29.84%

Remember to run myisamchk -rq on compressed tables

# du -sh modx_session.MYD

18M modx_session.MYD

Я использовал в команде ключ -b. Когда вы добавляете его, таблица создается перед сжатием и помечается меткой OLD:

# ls -la modx_session.OLD

-rw-r----- 1 mysql mysql 25550000 Dec 17 15:20 modx_session.OLD

# du -sh modx_session.OLD

25M modx_session.OLD

Оптимизация таблиц и баз данных в MySQL и MariaDB

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

Откройте консоль MySQL, выберите базу данных и выполните этот запрос:

select table_name, round(data_length/1024/1024) as data_length_mb,

round(data_free/1024/1024) as data_free_mb from 

information_schema.tables where round(data_free/1024/1024) > 50 order

by data_free_mb;

Таким образом, вы отобразите все таблицы с не менее 50 МБ неиспользуемого пространства:

+-------------------------------+----------------+--------------+

| TABLE_NAME | data_length_mb | data_free_mb |

+-------------------------------+----------------+--------------+

| b_disk_deleted_log_v2 | 402 | 64 |

| b_crm_timeline_bind | 827 | 150 |

| b_disk_object_path | 980 | 72 |

data_length_mb — общий размер стола

data_free_mb — неиспользуемое место в столе

Это таблицы, которые мы можем дефрагментировать. Проверьте, сколько места они занимают на диске:

# ls -lh /var/lib/mysql/innodb_test/ | grep b_

-rw-r ----- 1 mysql mysql 402M 17 октября, 12:12 b_disk_deleted_log_v2.MYD

-rw-r ----- 1 mysql mysql 828M 17 октября 13:23 b_crm_timeline_bind.MYD

-rw-r ----- 1 mysql mysql 981M 17 октября, 11:54 b_disk_object_path.MYD

Чтобы оптимизировать эти таблицы, выполните следующую команду в консоли mysql:

# OPTIMIZE TABLE b_disk_deleted_log_v2, b_disk_object_path, b_crm_timeline_bind;

После успешной дефрагментации вы увидите следующий результат:

+ ------------------------------- + ---------------- + -------------- +

| TABLE_NAME | data_length_mb | data_free_mb |

+ ------------------------------- + ---------------- + -------------- +

| b_disk_deleted_log_v2 | 74 | 0 |

| b_crm_timeline_bind | 115 | 0 |

| b_disk_object_path | 201 | 0 |

Как видите, data_free_mb теперь равно 0, а размер таблицы значительно уменьшился (в 3-4 раза).

Вы также можете запустить дефрагментацию, используя mysqlcheck в консоли сервера:

# mysqlcheck -o innodb_test b_workflow_file -u root -p innodb_test.b_workflow_file

Где innodb_test ваша база данных и b_workflow_file название таблицы.

Чтобы оптимизировать все таблицы в базе данных, запустите эту команду в консоли сервера:

# mysqlcheck -o innodb_test -u root -p

Где innodb_test — имя базы данных

Или запустите оптимизацию всех баз на сервере:

# mysqlcheck -o --all-databases -u root -p

Если вы проверите размер базы данных до и после оптимизации, вы увидите, что общий размер уменьшился:

# du -sh

2,5 г

# mysqlcheck -o innodb_test -u root -p

innodb_test.b_admin_notify

note : Table does not support optimize, doing recreate + analyze instead

status : OK

innodb_test.b_admin_notify_lang

note : Table does not support optimize, doing recreate + analyze instead

status : OK

innodb_test.b_adv_banner

note : Table does not support optimize, doing recreate + analyze instead

status : OK

# du -sh

1,7 г

Таким образом, чтобы сэкономить место на вашем сервере, вы можете время от времени оптимизировать и сжимать свои таблицы и базы данных MySQL/MariDB. Не забудьте создать резервную копию базы данных перед выполнением любой работы по оптимизации.



2020-12-03T10:40:23
Вопросы читателей

Запуск chkdsk в Windows 10

Как бы проста ни была Windows 10, она поставляется с набором инструментов, которые дают пользователям возможность управления на более глубоком уровне, а также диагностические возможности. Почти все эти инструменты доступны из командной строки или доступны с графическим интерфейсом, чтобы сделать их доступными как можно большему количеству людей.

Запоминающие устройства — это обычно уязвимая область ПК по ряду причин. Если у вас есть механический привод в вашем ПК или ноутбуке, даже небольшой удар может вызвать проблемы. К счастью, в Windows есть инструмент для диагностики и обнаружения любых таких проблем до того, как они вызовут головную боль.

Инструмент «Проверить диск» существует в Windows с незапамятных времен и помог многим пользователям решить проблемы с дисками. В этой статье мы расскажем, как запустить утилиту проверки диска, также известную как CHKDSK в Windows 10.

Есть два способа сделать это:

  • Запуск CHKDSK через командную строку.
  • Запуск CHKDSK через проводник Windows.

Запуск CHKDSK через командную строку

Шаг 1.  Найдите cmd в поле поиска на панели инструментов.

Шаг 2.  Щелкните правой кнопкой мыши командную строку и выберите «Запуск от имени администратора».

Шаг 3.  Когда откроется командная строка, введите

chkdsk Y: /f /r /x

Здесь параметры:

  • Y:  буква вашего диска.
  • /f:  попытается исправить любые ошибки.
  • /r  ищет поврежденные сектора и пытается восстановить любую возможную информацию.
  • /x принудительно отключить том, который вы собираетесь проверить, до начала процесса.

Обратите внимание, что если вы проверяете  диск C:/, лучше всего добавить параметр Y. Это заставит команду сканировать диск при следующей перезагрузке.

Запуск CHKDSK через проводник Windows

Шаг 1. Зайдите в  Мой компьютер.

Шаг 2.  Щелкните правой кнопкой мыши диск, который вы хотите просканировать, и выберите «Свойства».

Шаг 3: перейдите на  вкладку Инструменты.

Шаг 4. В разделе «Проверка ошибок» нажмите «Проверить».

Шаг 5: Windows может показать вам сообщение о том, что вам не нужно проверять наличие ошибок. Просто нажмите «Сканировать диск»,  чтобы начать сканирование.

Вы можете продолжать использовать диск во время сканирования. Если будут обнаружены какие-либо ошибки, ваша файловая система будет исправлена ​​при следующей перезагрузке компьютера.

https://www.youtube.com/watch?v=lwWQlyRpIWw



2020-12-03T10:12:10
Вопросы читателей

Как настроить WireGuard VPN в Ubuntu 18.04

WireGuard — это современная технология VPN (виртуальная частная сеть) с самой современной криптографией. По сравнению с другими аналогичными решениями, такими как IPsec и OpenVPN , WireGuard быстрее, проще в настройке и более производительно. Это кроссплатформенный и может работать практически где угодно, включая Linux, Windows, Android и macOS. Wireguard — это одноранговая VPN; он не использует модель клиент-сервер. В зависимости от конфигурации одноранговый узел может действовать как традиционный сервер или клиент. Читать

Вирусы и Linux

Среди пользователей бытует мнение, что Linux полностью безопасен от вирусов и поймать здесь какую-либо заразу невозможно. Антивирус не нужен и вообще про любые возможные опасности можно забыть, поскольку вирусов для этой операционной системы нет. Ходит даже шутка что если даже вы захотите запустить вирус в Linux то вам придется потратить несколько часов на его установку.

В этих словах есть доля истины, однако вирусы для Linux всё же существуют. Их гораздо меньше по сравнению с Windows, и система, в целом, защищённые, но вирусы существуют и о них не стоит забывать. В этой статье мы попытаемся разобраться почему Linux считается безопасным, какие у него слабые стороны, а также какие типы вирусов существуют.

Читать

Как перенаправить в PHP

URL-адрес браузера пользователя можно изменить с одного места на другое с помощью перенаправления. Перенаправление требуется для многих целей, таких как переключение с HTTP на HTTPS, изменение домена и т. д. Когда пользователь отправляет запрос на страницу на сервер, который не существует, или на местоположение страницы, которое изменилось, сервер будет отправьте информацию о новом URL с кодом HTTP 301 или 302. Это поможет пользователю узнать о новом URL-адресе путем перенаправления, и пользователь отправит запрос в новое место, чтобы получить желаемый контент. URL-адрес перенаправляется в PHP с помощью функции header(). В этой статьи показано, как функцию header() можно использовать в PHP для перенаправления URL-адреса с одной страницы на другую.

 

Функция header()

Это встроенная функция PHP для отправки клиенту необработанного HTTP-заголовка. Синтаксис этой функции показан ниже.

Синтаксис:

header( $header, [$replace, [$http_response_code]] )

 

Эта функция может принимать три аргумента. Первый аргумент является обязательным, а последние два аргумента — необязательными. $header используется для хранения строки заголовка, который содержит расположение перенаправления. $replace определяет, будет ли заменить предыдущий похожий заголовок и значение этого аргумента Boolean. $http_response_code используется для хранения определенного кода ответа, который будет отправлять пользователь.

 

Пример-1: URL-адрес перенаправления с кодом состояния по умолчанию

Создайте файл PHP со следующим кодом, который будет перенаправлять в новое место после ожидания в течение 2 секунд. Здесь функция die() используется для завершения скрипта. Когда функция header() используется с одним аргументом, 302 используется в качестве кода HTTP по умолчанию.

<?php



//Подождите 2 секунды

sleep(2);

//Перенаправление в конкретное место

header("Location: http://localhost/php/contactForm/index.html");

die();



?>


 

Вывод:

После выполнения кода URL-адрес перенаправляется в адрес http: //localhost/php/contactForm/index.html через 2 секунды. Если вы проверите код и откроете вкладку «Сеть», то в качестве кода состояния по умолчанию будет отображаться 302.

 

Пример-2: URL перенаправления навсегда

Создайте файл PHP со следующим кодом, который будет перенаправлять в новое место после ожидания в течение 2 секунд. Здесь функция die() используется для завершения скрипта. Здесь функция header() используется с тремя аргументами. TRUE, используется для второго аргумента и 301 используется для третьего аргумента. Код состояния 301 используется для постоянного перенаправления.

<?php



//Подождите 2 секунды

sleep(2);

//Перенаправление в конкретное место

header("Location: http://localhost/php/contactForm/index.html",TRUE,301);

die();



?>

 

Вывод:

После выполнения кода URL-адрес перенаправляется в адрес http: //localhost/php/contactForm/index.html через 2 секунды. Если вы проверите код и откроете вкладку «Сеть», то в качестве кода состояния отобразится 301, указывающий, что URL-адрес перемещен навсегда.

 

Пример-3: временный URL перенаправления

Создайте файл PHP со следующим кодом, который будет перенаправлять в новое место после ожидания в течение 2 секунд. Здесь функция die() используется для завершения скрипта. Здесь функция header() используется с тремя аргументами. TRUE, используется для второго аргумента и 307 используется для третьего аргумента. Код состояния 307 используется для временного перенаправления.

<?php



//Подождите 2 секунды

sleep(2);

//Перенаправление в конкретное место

header("Location: http://localhost/php/contactForm/index.html",TRUE,307);

die();



?>


Вывод:

После выполнения кода URL-адрес перенаправляется в адрес http: //localhost/php/contactForm/index.html через 2 секунды. Если вы проверите код и откроете вкладку «Сеть», то в качестве кода состояния отобразится 307, указывающий, что URL-адрес временно перенаправлен.

 

Пример-4: URL-адрес перенаправления на основе условия

Создайте файл PHP со следующим кодом, который будет перенаправлять URL-адрес на основе условного оператора. В сценарии создается HTML-форма для перенаправления URL-адреса на основе выбранного значения раскрывающегося списка. Здесь раскрывающийся список содержит три значения. Если в раскрывающемся списке выбрать Google, сценарий PHP перенаправит URL-адрес в адрес https://google.com с кодом состояния по умолчанию 302. Когда AndreyEx выбран в раскрывающемся списке, сценарий PHP перенаправит URL-адрес в расположение https://andreyex.ru с кодом состояния 301. Когда выбран WordPress из раскрывающегося списка, то скрипт PHP перенаправит URL-адрес в расположение https://andreyex.ru/blog-platforma-wordpress/ с кодом состояния 302.

<html>

<head>

<title>Пример заголовка</title>

</head>

<body>

<form method="post" action=#>

<select name="web">

<option>Google</option>

<option>AndreyEx</option>

<option>Wordpress</option>

</select>



<input type="submit" name="submit" value="Go" />

</html>

<?php



//Проверьте, нажата ли кнопка отправки или нет

if(isset($_POST["submit"]))

{

if($_POST['web'] == 'Google')

{

//Перенаправление в конкретное место

header("Location: https://google.com");

}

elseif($_POST['web'] == 'AndreyEx')

{

//Перенаправление в конкретное место

header("Location: https://andreyex.ru",TRUE,301);

}

else

{

//Перенаправление в конкретное место

header("Location: https://andreyex.ru/blog-platforma-wordpress/");

}

die();

}

?>


 

После выполнения кода в браузере появится следующий вывод, который отобразит раскрывающийся список с тремя значениями и кнопкой «Перейти». Код состояния сейчас 200. После перенаправления код статуса будет изменен.

Если Google выберет вариант из раскрывающегося списка, то после нажатия кнопки «Перейти» он перенаправит вас в адрес https://google.com, и появится следующее изображение. Здесь генерируется код состояния по умолчанию 302.

Если AndreyEx выберет из раскрывающегося списка, то после нажатия кнопки «Go» он будет перенаправлен в адрес https://andreyex.ru, и появится следующее изображение. Здесь генерируется постоянный код статуса 301.

 

Вывод:

Различные варианты использования функции PHP header() объясняются в этой статьи на нескольких примерах. Перенаправление может быть выполнено временно и постоянно на основе кода состояния, используемого в функции header(). Эта статья поможет читателям узнать больше о цели перенаправления и применить ее, используя скрипт PHP в своем веб-приложении, когда это необходимо.



2020-12-02T18:56:48
Python