Как использовать переменную из другого файла php

Обновлено: 06.07.2024

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

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

Замечание:

Точки и пробелы в именах переменных преобразуется в знаки подчёркивания. Например, <input name="a.b" /> станет $_REQUEST["a_b"] .

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

<?php
if ( $_POST ) echo '<pre>' ;
echo htmlspecialchars ( print_r ( $_POST , true ));
echo '</pre>' ;
>
?>
<form action="" method="post">
Имя: <input type="text" name="personal[name]" /><br />
Email: <input type="text" name="personal[email]" /><br />
Пиво: <br />
<select multiple name="beer[]">
<option value="warthog">Warthog</option>
<option value="guinness">Guinness</option>
<option value="stuttgarter">Stuttgarter Schwabenbräu</option>
</select><br />
<input type="submit" value="Отправь меня!" />
</form>

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

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

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

Замечание: Начиная с PHP 7.2.34, 7.3.23 и 7.4.11, соответственно, имена входящих cookie больше не декодируются из URL-закодированной строки из соображений безопасности.

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

<?php
setcookie ( "MyCookie[foo]" , 'Testing 1' , time ()+ 3600 );
setcookie ( "MyCookie[bar]" , 'Testing 2' , time ()+ 3600 );
?>

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

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

<?php
if (isset( $_COOKIE [ 'count' ])) $count = $_COOKIE [ 'count' ] + 1 ;
> else $count = 1 ;
>
setcookie ( 'count' , $count , time ()+ 3600 );
setcookie ( "Cart[ $count ]" , $item , time ()+ 3600 );
?>

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

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

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

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

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

HTTP является текстовым протоколом, и большинство, если не всё, содержимое, которое приходит в суперглобальные массивы, например, $_POST и $_GET , останется в виде строк. PHP не будет преобразовывать значения в определённый тип. В приведённом ниже примере $_GET["var1"] будет содержать строку "null", а $_GET["var2"] - строку "123".

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

Версия Описание
7.2.34, 7.3.23, 7.4.11 имена входящих cookie больше не декодируются из URL-закодированной строки из соображений безопасности.

User Contributed Notes 30 notes

The full list of field-name characters that PHP converts to _ (underscore) is the following (not just dot):
chr(32) ( ) (space)
chr(46) (.) (dot)
chr(91) ([) (open square bracket)
chr(128) - chr(159) (various)

PHP irreversibly modifies field names containing these characters in an attempt to maintain compatibility with the deprecated register_globals feature.

Important: Pay attention to the following security concerns when handling user submitted data :

This post is with regards to handling forms that have more than one submit button.

Suppose we have an HTML form with a submit button specified like this:

<input type="submit" value="Delete" name="action_button">

Normally the 'value' attribute of the HTML 'input' tag (in this case "Delete") that creates the submit button can be accessed in PHP after post like this:

<?php
$_POST [ 'action_button' ];
?>

We of course use the 'name' of the button as an index into the $_POST array.

This works fine, except when we want to pass more information with the click of this particular button.

Imagine a scenario where you're dealing with user management in some administrative interface. You are presented with a list of user names queried from a database and wish to add a "Delete" and "Modify" button next to each of the names in the list. Naturally the 'value' of our buttons in the HTML form that we want to display will be "Delete" and "Modify" since that's what we want to appear on the buttons' faceplates.

Both buttons (Modify and Delete) will be named "action_button" since that's what we want to index the $_POST array with. In other words, the 'name' of the buttons along cannot carry any uniquely identifying information if we want to process them systematically after submit. Since these buttons will exist for every user in the list, we need some further way to distinguish them, so that we know for which user one of the buttons has been pressed.

Using arrays is the way to go. Assuming that we know the unique numerical identifier of each user, such as their primary key from the database, and we DON'T wish to protect that number from the public, we can make the 'action_button' into an array and use the user's unique numerical identifier as a key in this array.

Our HTML code to display the buttons will become:

<input type="submit" value="Delete" name="action_button[0000000002]">
<input type="submit" value="Modify" name="action_button[0000000002]">

The 0000000002 is of course the unique numerical identifier for this particular user.

Then when we handle this form in PHP we need to do the following to extract both the 'value' of the button ("Delete" or "Modify") and the unique numerical identifier of the user we wish to affect (0000000002 in this case). The following will print either "Modify" or "Delete", as well as the unique number of the user:

<?php
$submitted_array = array_keys ( $_POST [ 'action_button' ]);
echo ( $_POST [ 'action_button' ][ $submitted_array [ 0 ]] . " " . $submitted_array [ 0 ]);
?>

$submitted_array[0] carries the 0000000002.
When we index that into the $_POST['action_button'], like we did above, we will extract the string that was used as 'value' in the HTML code 'input' tag that created this button.

If we wish to protect the unique numerical identifier, we must use some other uniquely identifying attribute of each user. Possibly that attribute should be encrypted when output into the form for greater security.

поэтому мне интересно, можно ли получить переменную из определенного php-файла, когда имя переменной используется в нескольких php-файлах. Вот пример:

нижний колонтитул.PHP должен иметь <a href="">$var1 from page1</a><a href="">$var1 from page2</a>

Ok пример немного абстрактный, но настолько короткий, насколько я могу это сделать. Думаю, вы поняли, к чему я клоню! Так это в нижнем колонтитуле, за которым я охочусь! Есть какие-нибудь решения?

вы можете, но переменная в вашем последнем include перезапишет переменную в вашем первом:

myfile.в PHP

mysecondfile.в PHP

вы также можете использовать сеанс для передачи небольших битов информации. Вам нужно будет иметь session_start (); в верхней части страниц PHP, которые используют сеанс, иначе переменные не будут доступны

используя include 'page1.php' на второй странице есть один вариант, но он может генерировать ошибки и предупреждения неопределенных переменных.
три метода, с помощью которых вы можете использовать переменные одного файла php в другом файле php:

используйте сеанс для передачи переменной с одной страницы на другую
способ:
сначала вы должны запустить сеанс в обоих файлах с помощью команды php

sesssion_start ();
тогда в первом файле рассмотрим у вас одну переменную
$x= 'var1';

теперь назначьте значение $x переменной сеанса, используя это:
$_SESSION ['var']=$x;
теперь получаем значение в любом другом файле php:
$y=$_SESSION ['var'];//$y-любая объявленная переменная

использование метода get и получение переменных при нажатии ссылка
метод

<a href="page2.php?variable1=value1&variable2=value2">clickme</a>
получение значений в page2.php файл с помощью функции $_GET:
$x=$_GET['variable1'];//value1 be stored in $x
$y=$_GET['variable2'];//vale2 be stored in $y

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

Читайте также: