Как вы можете управлять целевым URL-адресом по имени начального URL-адреса?
Мой URL-адрес
www.example.com/index.php?ask_question
Я выполняю следующие манипуляции в целевом URL
if ($_GET['ask_question']) { // Problem HERE, since if -clause is always false if ( $login_cookie_original == $login_cookie ) { include "/codes/handlers/handle_login_status.php"; header("Location: /codes/index.php?ask_question"); die("logged in - send your question now"); } }
if (isset($_GET['ask_question'])) { ...
Если бы вы сделали print_r () $ _GET, вы бы увидели
Array ( [ask_question] => )
, который показывает, что ask_question установлен, но пуст, поэтому он проверяет false.
$location = "test.php"; if(isset($_SERVER['QUERY_STRING'])) { header("Location:".$location . "?" . $_SERVER['QUERY_STRING']); } else { header("Location:".$location); }
Вы можете получить значения после знака вопроса, используя суперглобальный $_GET. Для примера ?ask_question=true.
$_GET
?ask_question=true
//is ask_question true? if($_GET['ask_question'] == 'true') { echo 'ask_question is true'; } else { echo 'ask_question is not true'; }
Для переменных без значений (например, ?hello) используйте $_GET таким образом:
?hello
if(isset($_GET['hello'])) { echo 'hello is there'; } else { echo 'hello is not there'; }
Вы задали много очень простых вопросов о PHP, и вы, похоже, не понимаете, как работает язык. Я предлагаю прочитать документацию до вашего следующего вопроса.
PHP Документация Home PHP: переменные из внешних источников
Я думаю, вы хотите заменить это на:
if (isset($_GET['ask_question'])) {
Что будет истинно, только если оно содержится в URL.
вы могли бы проверить переменную $ _SERVER ['QUERY_STRING'], чтобы увидеть, содержит ли она 'ask_question'
редактировать: исправлена опечатка