PHP - данные после "?" в URL отображается разная информация - PullRequest
0 голосов
/ 29 августа 2009

Я знаю, что название не очень понятно. Я новичок в PHP, поэтому для такого рода вещей может быть название, я постараюсь объяснить как можно лучше. Иногда в URL при использовании PHP появляется знак вопроса, за которым следуют данные. Извините, я знаю, что это очень дурацкий вопрос, но я не уверен, как он называется, чтобы искать учебник или что-то еще. Вот что я имею в виду:

http://www.website.com/error_messages.php?error_id=0

Как настроить его так, чтобы он отображал другой текст в зависимости от того, какое число (в данном примере это число)

Может кто-нибудь сказать мне, как это называется и как я могу это сделать? Я работал с PHP пару дней, и я заблудился. Большое спасибо за понимание, что я новичок в этом.

Ответы [ 7 ]

6 голосов
/ 29 августа 2009

Этими "данными" является URL строка запроса , и он кодирует переменные GET этого HTTP-запроса.

Подробнее о строках запроса: http://en.wikipedia.org/wiki/Query_string

В PHP вы получаете доступ к ним с помощью $_GET «суперглобальной» переменной:

// http://www.website.com/error%5Fmessages.php?error%5Fid=0
// %5F is a urlencoded '_' character, which your webserver will most likely
// decode before it gets to PHP.
// So ?error%5Fid=0 reaches PHP as the 'error_id' GET variable
$error_id = $_GET['error_id'];
echo $error_id; // this will be 0

Строка запроса может кодировать несколько переменных GET, разделяя их символом &. Например:

?error_id=0&error_message=Something%20bad%20happened

  • error_id => "0"
  • error_message => "Something bad happened"

В этом примере вы также можете видеть, что пробелы кодируются как %20.

Вот дополнительная информация о «процентном кодировании»: http://en.wikipedia.org/wiki/Percent-encoding

2 голосов
/ 29 августа 2009

Данные после знака вопроса называются «строкой запроса». Обычно он содержит данные в следующем формате:

param1=value1&param2=value2

Т.е. это список пар ключ-значение, каждая пара разделена символом амперсанда (&). Чтобы передать специальные значения в значениях, они должны быть закодированы в формате URL-кодировки: с использованием знака процента (%), за которым следуют два шестнадцатеричных символа, представляющих код символа.

В PHP параметры, передаваемые через строку запроса, автоматически передаются в ваш скрипт с использованием суперглобальной переменной $_GET:

echo $_GET['param1']; // will produce "value1" for the example above.

Необработанную необработанную строку запроса можно получить с помощью серверной переменной QUERY_STRING:

echo $_SERVER['QUERY_STRING'];
1 голос
/ 29 августа 2009

Как описано выше, данные после ? являются строкой запроса (или данными GET), и доступ к ним осуществляется с помощью переменной $_GET. Переменная $_GET представляет собой массив, содержащий пары имя = значение в строке запроса.

Вот краткое описание $_GET и пример его использования:

http://www.w3schools.com/php/php_get.asp

Данные также могут быть переданы в сценарий PHP как данные POST (находятся в переменной $_POST), которые используются для паролей и т. Д. И не хранятся в URL-адресе. Переменная $_REQUEST содержит данные POST и GET. Данные POST и GET обычно происходят от того, что пользователь вводит их в веб-форму (но данные GET также могут поступать напрямую по ссылке на адрес, как в вашем примере). Более подробную информацию об использовании веб-форм в PHP можно найти здесь:

http://www.w3schools.com/php/php_forms.asp

1 голос
/ 29 августа 2009

Это называется строкой запроса.

В PHP вы можете получить доступ к его данным через superglobal $_GET

Например:

http://www.example.com/?hello=world

<?php

// Use htmlspecialchars to prevent cross-site scripting attacks (XSS)
echo htmlspecialchars($_GET['hello']);

?>

Если вы хотите создать строку запроса для добавления к URL, вы можете использовать http_build_query():

$str = http_build_query(array('hello' => 'world'));
0 голосов
/ 29 августа 2009

Бит после знака вопроса называется Строка запроса . Формат, как правило, хотя и не всегда, пары ключ-значение, где пары разделяются амперсандом (&), а значение отделяется от имени знаком равенства (=): ?var1=value1&var2=value2&.... Большинство сред веб-программирования предоставляют простой способ доступа к парам имя-значение в этом формате. Например, в PHP есть superglobal , который является ассоциативным массивом этих пар ключ-значение. В вашем примере error_id будет доступен через:

$_GET['error_id']

Причина имени "GET" заключается в том, что переменные строки запроса обычно связаны с запросом HTTP GET. POST-запросы также могут содержать переменные GET, тогда как GET-запросы не могут содержать переменные POST.

Что касается остальной части вашего вопроса, вы можете подойти к текстовой проблеме несколькими способами, самое простое из которых - включить идентификатор ошибки:

$error_id = isset($_GET['error_id']) ? $_GET['error_id'] : 0;
switch($error_id) {
    case 1:
        echo "Error 1";
        break;
    default: 
        echo "Unknown Error";
        break;
}

и более сложные способы включают поиск сообщения об ошибке из файла, базы данных или чего-то еще.

0 голосов
/ 29 августа 2009

Вы ищете термин GET. Так что в php вам нужно получить доступ к переменным GET в $ _GET ['variable_name'], например, в приведенном вами примере $ _GET ['error_id'] будет содержать значение 0. Затем вы можете использовать это в своей логике для отображения другой информации.

0 голосов
/ 29 августа 2009

это называется "строка запроса"

и вы можете получить его через $ _SERVER ["QUERY_STRING"]

или вы можете перебрать $ _GET

в этом случае error_id, вы можете проверить это примерно так

echo $_GET['error_id'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...