GAE - PHP7 - как передать параметры GET фронт-контроллером - PullRequest
0 голосов
/ 30 июня 2019

Google Apps Engine для PHP7 теперь требует "front-controller".Вот URL-адрес, которым я должен управлять:

  • / sitemap.xml
  • / app / myPHP? Param1 = значение ¶m2 = значение2

В моей исходной папке есть следующие файлы

  • index.php (фронт-контроллер)
  • home.php
  • gen_sitemap.php
  • myPHP.php

, поэтому я кодировал свой фронт-контроллер (index.php) как

<?php
switch ($_SERVER['REQUEST_URI']) {
    case '/':
        require 'home.php';
        break;

    case '/sitemap.xml':
        require 'gen_sitemap.php';
        break;

    case '/app/myPHP':
        require 'myPHP.php';
        break;

    default:
        echo "no page " . time();
        break;
}

Но он неправильно анализирует URL-адреса:

https://myProject.appspot.com/ -> home.php ok

https://myProject.appspot.com/?p="hello" -> нет страницы

https://myProject.appspot.com/sitemap.xml -> sitemap.php ok

https://myProject.appspot.com/sitemap.xml?p="h" -> нет страницы

https://myProject.appspot.com/app/myPHP -> myPHP.php ok

https://myProject.appspot.com/app/myPHP?p="h" -> нет страницы

Как мне исправить этот фронт-контроллер?спасибо,

1 Ответ

0 голосов
/ 30 июня 2019

Условие переключения может не работать должным образом, так как оно сравнивает «REQUEST_URI».Ключ глобальной переменной PHP SERVER REQUEST_URI, вероятно, будет иметь полный путь со строкой запроса.Вместо этого попробуйте ключ «SCRIPT_NAME» или «PATH_INFO»

Предложение. Сначала проверьте, какие все значения ключей доступны в переменной $ _SERVER, затем выберите, какое значение ключа использовать для добавления команды переключения.

Пример: print_r ($ _ SERVER);в качестве первой строки вашего кода

Ссылка: https://www.php.net/manual/en/reserved.variables.server.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...