Inurl redirect php http даба. Как в PHP задать редирект на другой URL до загрузки страницы? Удаление лишних символов в url-е

Несколько недель назад по некой нужде было необходимо добавить форум в только что написанный сайт. Сайт на этапе завершения, пользователей раз-два и обчелся. Сайт был написан на Codeigniter. В качестве форума был выбран phpBB, как один из распространенных free форум версии 3.1.1 . После несложных манипуляций форум без проблем был установлен. Стало интереснее, когда дело дошло до пользователей.

Первым делом я решил поискать готовые решение дабы не тратить ни свое время, ни время клиента. Была найдена уже не рабочая ссылка на библиотеку phpBB3_library, были найдены плагины для WP, и др. движков, но мне хотелось сделать интеграцию безболезненно для себя и моего детища (сайта) и форума.

Недолго погуглив, нашел вот эту , с которой и началось мое погружение в глубины пользовательской функциональности phpBB.

Постановка задачи
  • Сделать безболезненную интеграцию. Должен быть один реализующий класс. Без изменений в движке форума, дабы при обновлении форума ничего не слетело.
  • Максимальное использование функций форума в нашем классе. Городить велосипед не хочется.
  • Реализовать совместную регистрацию, смену пароля, авторизацию, конец сеанса, блокировку и отмену блокировки пользователя на основе уже существующего функционала форума.
  • Анализ После чтения доков, стало понятно, что функции управления пользователями размещаются в /includes/functions_user.php, а авторизация в /phpbb/auth/provider. В этой папке размещены функции для нескольких вариантов авторизации. Тип авторизации задается в панели администрирования форума, раздел «Общие -> Аутентификация». Я поставил значение по умолчанию - Db.

    В принципе, необходимый функционал я нашел в этих двух файла, кроме обновления данных пользователя. Далее приступаем к реализации.

    Начальные данные
  • Сайт, реализованный с помощью codeigniter.
  • Форум phpBB.
  • Таблица с пользователями сайта - USERS.
  • Таблица с пользователями форума - phpbb_USERS.
  • Регистрация/авторизация пользователей на сайте - переделанная под свои нужды библиотека Codeigniter Auth .
  • Решение Задача поставлена, надо делать.

    Перед началом - несколько нюансов.

  • Необходимо отключить регистрацию пользователей на сайте. Это делается в панели администратора (Общие -> регистрация пользователей -> Разрешить смену имени пользователя -> Нет). Разрешаем пользователю регистрацию только на сайте.
  • Запрещаем смену имени пользователя (Общие -> Регистрация пользователей -> Активация аккаунта -> Отключено).
  • Запрещаем авторизацию с форума. Авторизацию и выход делаем только с сайта. Сделал «в лоб» - в файле /ucp.php сделал редиректы на соответствующие страницы на сайте. (см. строки «case "login":», «case "login_link":», «case "logout":». Редирект «header("Location: /auth/login");» и «header("Location: /auth/logout");»).
  • На сайте (если есть функция redirect()) заменить функцию redirect(), например на ciredirect(), дабы избежать конфликта имен - в phpBB есть функция с аналогичным названием.
  • Для codeigniter создаю библиотеку my_phplib.php (библиотека в codeigniter - это некий вспомогательный, подключаемый класс, располагающийся в папке application/libraries. В нем нет ничего необычного, так что пользователи других движков/фрейморков - не унывайте).

    Итак, содержимое библиотеки:

    Библиотека my_phplib.php

    Parameters

    The header string.

    There are two special-case header calls. The first is a header that starts with the string "HTTP/ " (case is not significant), which will be used to figure out the HTTP status code to send. For example, if you have configured Apache to use a PHP script to handle requests for missing files (using the ErrorDocument directive), you may want to make sure that your script generates the proper status code.

    The second special case is the "Location:" header. Not only does it send this header back to the browser, but it also returns a REDIRECT (302) status code to the browser unless the 201 or a 3xx status code has already been set.

    Replace

    The optional replace parameter indicates whether the header should replace a previous similar header, or add a second header of the same type. By default it will replace, but if you pass in FALSE as the second argument you can force multiple headers of the same type. For example:

    Http_response_code

    Forces the HTTP response code to the specified value. Note that this parameter only has an effect if the header is not empty.

    Return Values

    No value is returned.

    Changelog Version Description
    5.1.2 This function now prevents more than one header to be sent at once as a protection against header injection attacks.
    Examples

    Example #1 Download dialog

    If you want the user to be prompted to save the data you are sending, such as a generated PDF file, you can use the » Content-Disposition header to supply a recommended filename and force the browser to display the save dialog.



    Your headers now look like this:

    HTTP/1.1 200 OK
    Server: Apache/2.2.11 (Unix)
    X-Powered-By: PHP/5.2.8
    Date: Fri, 16 Oct 2009 23:05:07 GMT
    Connection: close

    16 years ago

    If you haven"t used, HTTP Response 204 can be very convenient. 204 tells the server to immediately termiante this request. This is helpful if you want a javascript (or similar) client-side function to execute a server-side function without refreshing or changing the current webpage. Great for updating database, setting global variables, etc.

    Header("status: 204"); (or the other call)
    header("HTTP/1.0 204 No Response");

    10 years ago

    Here is a php script I wrote to stream a file and crypt it with a xor operation on the bytes and with a key:

    The encryption works very good but the speed is decrease by 2, it is now 520KiB/s. The user is now asked for a md5 password (instead of keeping it in the code directly). There is some part in French because it"s my native language so modify it as you want.