Example of PHP GET method

Переменные извне PHP

Когда происходит отправка данных формы PHP-скрипту, информация из этой формы автоматически становится доступной ему. Существует несколько способов получения этой информации, например:

Пример #1 Простая HTML-форма

С версии PHP 5.4.0, есть только два способы получить доступ к данным из HTML форм. Доступные сейчас способы приведены ниже:

Пример #2 Доступ к данным из простой HTML POST-формы

В старых версиях PHP также существовало несколько других способов. Они приведены ниже. Смотрите также список изменений внизу страницы.

Пример #3 Старые способы получения пользовательских данных

// ВНИМАНИЕ: эти методы больше НЕ поддерживаются.

// Использование import_request_variables() — эта функция удалена в PHP 5.4.0
import_request_variables ( ‘p’ , ‘p_’ );
echo $p_username ;

// Эти длинные предопределенные массивы удалены в PHP 5.4.0
echo $HTTP_POST_VARS [ ‘username’ ];

// Использование register_globals. Эта функциональность удалена в PHP 5.4.0
echo $username ;
?>

GET-форма используется аналогично, за исключением того, что вместо POST, вам нужно будет использовать соответствующую предопределенную переменную GET. GET относится также к QUERY_STRING (информация в URL после ‘?’). Так, например, http://www.example.com/test.php?id=3 содержит GET-данные, доступные как $_GET[‘id’] . Смотрите также $_REQUEST .

Замечание:

Точки и пробелы в именах переменных преобразуется в знаки подчеркивания. Например, станет $_REQUEST[«a_b»].

PHP также понимает массивы в контексте переменных формы (смотрите соответствующие ЧАВО). К примеру, вы можете сгруппировать связанные переменные вместе или использовать эту возможность для получения значений списка множественного выбора select. Например, давайте отправим форму самой себе, а после отправки отобразим данные:

Пример #4 Более сложные переменные формы

if ( $_POST ) echo ‘

' ; 
echo htmlspecialchars ( print_r ( $_POST , true ));
echo '

‘ ;
>
?>

Имя:

Email:

Пиво:

Имена переменных кнопки-изображения

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

Когда пользователь щелкнет где-нибудь на изображении, соответствующая форма будет передана на сервер с двумя дополнительными переменными — sub_x и sub_y . Они содержат координаты нажатия пользователя на изображение. Опытные программисты могут заметить, что на самом деле имена переменных, отправленных браузером, содержат точку, а не подчеркивание, но PHP автоматически конвертирует точку в подчеркивание.

HTTP Cookies

PHP прозрачно поддерживает HTTP cookies как определено в » RFC 6265. Cookies — это механизм для хранения данных в удаленном браузере и отслеживания и идентификации таким образом вернувшихся пользователей. Вы можете установить cookies, используя функцию setcookie() . Cookies являются частью HTTP-заголовка, поэтому функция SetCookie должна вызываться до того, как браузеру будет отправлен какой бы то ни было вывод. Это ограничение аналогично ограничению функции header() . Данные, хранящиеся в cookie, доступны в соответствующих массивах данных cookie, таких как $_COOKIE и $_REQUEST . Подробности и примеры смотрите на странице setcookie() руководства.

Если вы хотите присвоить множество значений одной переменной cookie, вы можете присвоить их как массив. Например:

setcookie ( «MyCookie[foo]» , ‘Testing 1’ , time ()+ 3600 );
setcookie ( «MyCookie[bar]» , ‘Testing 2’ , time ()+ 3600 );
?>

Это создаст две разные cookie, хотя в вашем скрипте MyCookie будет теперь одним массивом. Если вы хотите установить именно одну cookie со множеством значений, примите во внимание сначала применение к значениям таких функций, как serialize() или explode() .

Обратите внимание, что cookie заменит предыдущую cookie с тем же именем в вашем браузере, если только путь или домен не отличаются. Так, для приложения корзины покупок вы, возможно, захотите сохранить счетчик. То есть:

Пример #5 Пример использования setcookie()

if (isset( $_COOKIE [ ‘count’ ])) $count = $_COOKIE [ ‘count’ ] + 1 ;
> else $count = 1 ;
>
setcookie ( ‘count’ , $count , time ()+ 3600 );
setcookie ( «Cart[ $count ]» , $item , time ()+ 3600 );
?>

Точки в именах приходящих переменных

Как правило, PHP не меняет передаваемых скрипту имен переменных. Однако следует отметить, что точка не является корректным символом в имени переменной PHP. Поэтому рассмотрим такую запись:

В данном случае интерпретатор видит переменную $varname , после которой идет оператор конкатенации, а затем голая строка (то есть, не заключенная в кавычки строка, не соответствующая ни одному из ключевых или зарезервированных слов) ‘ext’. Очевидно, что это не даст ожидаемого результата.

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

Определение типов переменных

Поскольку PHP определяет и конвертирует типы переменных (в большинстве случаев) как надо, не всегда очевидно, какой тип имеет данная переменная в конкретный момент времени. PHP содержит несколько функций, позволяющих определить тип переменной, таких как: gettype() , is_array() , is_float() , is_int() , is_object() и is_string() . Смотрите также раздел Типы.

Список изменений

Версия Описание
5.4.0 Register Globals, Magic Quotes и register_long_arrays удалены
5.3.0 Register Globals, Magic Quotes и register_long_arrays стали устаревшими
4.2.0 register_globals по умолчанию стала равна off.
4.1.0 Добавлены Суперглобальные массивы, такие как $_POST и $_GET

Источник

What is GET, POST and REQUEST variables in PHP

In this tutorial, we will figure out how to send data to the server utilizing HTTP GET, POST and REQUEST strategies and recover them utilizing PHP.

Strategies for Sending Information to Server

An internet browser speaks with the server with the help of HTTP and HTTPS (Hypertext Transfer Protocol) protocols. The two techniques pass the data diversely and have various points of interest and weaknesses, as depicted beneath.

The GET Method

In GET technique the information is sent as URL parameters that are generally strings of name and worth sets isolated by ampersands (and). By and large, a URL with GET information will resemble this.

http://www.example.com/action.php?name=A&age=24 https://learncodeweb.com/?s=images

In the above examples after what sign (?) parameters start in. The first value is a parameter and equals some value parameter=value and the next parameter is joined with the help of and (&) sign. One can just send basic content information by means of GET strategy.

Advantages and Disadvantages of Using the GET Method

Since the information sent by the GET technique is shown in the URL. It is conceivable to bookmark the page with explicit inquiry string esteems.

The GET strategy isn’t appropriate for passing delicate data, for example, the username and secret word, in light of the fact that these are completely noticeable in the URL question string just as conceivably put away in the customer program’s memory as a visited page.

In the $_GET method the URL is restricted you can not send a very long URL with this method.

There is a superglobal variable $_GET in PHP that use to get to all the data sent either through the URL or submitted through an HTML structure utilizing the method=”get” as shown in below snippet.

     Hi, " . $_GET["name"] . "

"; > ?> ">

The POST Method

In the POST strategy the information is sent to the server as a bundle in a different correspondence with the preparing content. Information sent through the POST technique won’t notice in the URL.

Advantages and Disadvantages of Using the POST Method

It is more secure than GET in light of the fact that client entered data is never unmistakable in the URL question string or in the server logs.

There is a lot bigger cutoff on the measure of information that can be passed and one can send content information just as paired information (transferring a record) utilizing POST.

Since the information sent by the POST technique isn’t obvious in the URL, so it is beyond the realm of imagination to bookmark the page with the explicit questions.

Like $_GET, PHP gives another superglobal variable $_POST to get to all the data sent by means of post strategy or submitted through an HTML structure utilizing the method=”post”.

     Hi, " . $_POST["name"] . "

"; > ?> ">

The $_REQUEST Variable

PHP gives another superglobal variable $_REQUEST that contains the estimations of both the $_GET and $_POST factors just as the estimations of the $_COOKIE superglobal variable. When you use this variable it will return both GET and POST values.

     Hi, " . $_REQUEST["name"] . "

"; > ?> ">

Other superglobal variables are listed below you can use them anywhere is a PHP without defining them.

Источник

$_REQUEST

An associative array that by default contains the contents of $_GET , $_POST and $_COOKIE .

Notes

Note:

This is a ‘superglobal’, or automatic global, variable. This simply means that it is available in all scopes throughout a script. There is no need to do global $variable; to access it within functions or methods.

Note:

When running on the command line , this will not include the argv and argc entries; these are present in the $_SERVER array .

Note:

The variables in $_REQUEST are provided to the script via the GET, POST, and COOKIE input mechanisms and therefore could be modified by the remote user and cannot be trusted. The presence and order of variables listed in this array is defined according to the PHP request_order, and variables_order configuration directives.

See Also

User Contributed Notes 5 notes

Don’t forget, because $_REQUEST is a different variable than $_GET and $_POST, it is treated as such in PHP — modifying $_GET or $_POST elements at runtime will not affect the ellements in $_REQUEST, nor vice versa.

$_GET [ ‘foo’ ] = ‘a’ ;
$_POST [ ‘bar’ ] = ‘b’ ;
var_dump ( $_GET ); // Element ‘foo’ is string(1) «a»
var_dump ( $_POST ); // Element ‘bar’ is string(1) «b»
var_dump ( $_REQUEST ); // Does not contain elements ‘foo’ or ‘bar’

?>

If you want to evaluate $_GET and $_POST variables by a single token without including $_COOKIE in the mix, use $_SERVER[‘REQUEST_METHOD’] to identify the method used and set up a switch block accordingly, e.g:

switch( $_SERVER [ ‘REQUEST_METHOD’ ])
case ‘GET’ : $the_request = & $_GET ; break;
case ‘POST’ : $the_request = & $_POST ; break;
.
. // Etc.
.
default:
>
?>

The default php.ini on your system as of in PHP 5.3.0 may exclude cookies from $_REQUEST. The request_order ini directive specifies what goes in the $_REQUEST array; if that does not exist, then the variables_order directive does. Your distribution’s php.ini may exclude cookies by default, so beware.

To access $_POST, $_GET, etc, use the function filter_input(TYPE, varname, filter) to ensure that your data is clean.

Also, I was brought up to believe that modifying superglobals is a BAD idea. I stand by this belief and would recommend you do too

The way $_REQUEST is populated by default can lead to strange bugs because of the unfortunate default setting of the configuration directive ‘variables_order’.

Example: In an e-shop you want to display prices based on user preference. User can either switch the currency or the previous selection is used. By defaut, the following code WILL NOT WORK as expected:

if ( $_REQUEST [ ‘currency’ ]) # change currency on user request
$currency = $_REQUEST [ ‘currency’ ]; # use it
setcookie ( ‘currency’ , $_REQUEST [ ‘currency’ ], 0 , ‘eshop.php’ ); # store it
>
else # use default currency
$currency = ‘USD’ ;
>

# display shop contents with user selected currency
echo ‘All prices are shown in ‘ , $currency ;

# let the user switch currency
echo ‘Switch to USD’ ;
echo ‘Switch to EUR’ ;
?>

Regardless of the user choice, the cookie value is used, so unless you change the default ‘request_order’ or ‘variables_order’ the $_REQUEST[something] variable is stuck with the cookie value forever regardless of the user ‘REQUEST’.

ini_set ( ‘request_order’ , ‘CGP’ ); # use previous value (stored in cookie) or new value upon user request
.
.
.
?>

Fix 2:
Be very careful and patient and go with $_GET, $_POST and $_COOKIE instead of the convenient $_REQUEST. Good luck.

Источник

Читайте также:  Php filter html content
Оцените статью