Php передать переменные в подключаемый файл

Обновлено: 05.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.


Передача переменных из одного файла в другой
Очень нужна ваша помощь. Никак не могу понять как из файла index.php перенести переменную в.

Передача переменных из одного события в другое
Встала такая проблема надо из button_Ckick1 и trackBar1_Scroll захватить переменные a1,b1,b, и.

Передача значения переменных одного класса другому
Всем привет. Нужно передать значения одного класса другому, при этом семантика методов класса.

Передача значений переменных из одного js-скрипта в другой
Здравствуйте! Есть проблема. Имеется, к примеру, такой HTML-файл: . &lt;script&gt; . var a1 =.

include подключает файл, т.е. "вставляет" код, как будто и не было инклуда. Следовательно, все переменные, существующие к моменту подключения скрипта, будут доступны подключаемому скрипту Но переменная не передается, то есть в заголовке отображается сам код переменной:
Тебе всегда будет выводить только $title, убери тут кавычки А как теперь сделать, что б один файл делал несколько страниц, например:
Засунь контент этих страниц в отдельные файлы и в зависимости от URL подгружай нужную

Создаем ссылки вида index.php?p=page2
index.php?p=page3

PS Данный код приводился в соседнем посте пару минут назад =) dmirtyi, спасибо, то что надо! Индексная страница такая, как в Вашем посте:
Думаю в индексный файл больше ни чего не надо добавлять?
Все работает отлично!
Большое спасибо. А это что? Это можно использовать вместо выше предложенного кода? Проверил, все работает, как часики, и это избавляет от дополнительных файлов.
И сразу не грузится весь контент сайта (как было сказано где-то выше), а только тот который надо?
Спасибо Вам за помощь! Raisin Zn, тогда лучше использовать массивы. Что-то наподобие такого

KOPOJI, большое спасибо! Чуть позже попробую Ваш вариант.

Столкнулся с проблемой, при вставке в переменную .php кода получаю пустую страницу. Пример:

Извиняюсь за свою тупость, но как это можно победить?

Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2)
Друзья помогите решить задачку! Я в этом деле новичек, поэтому прошу не винить за глупые вопросы)).


Передача переменных из одного окна в другое, вызванное методом window.open
передача переменных из одного окна в другое вызванное методом window.open как их туда слить.


Как считать несколько переменных из файла
Часто, по условию задачи, входной файл имеет следующий тип: 1-е число (integer), которое указывает.


Передача переменных из bat-файла в Python-скрипт
Здравствуйте. Нигде не нашел ответа на свой вопрос. Что нужно написать в батнике, чтобы.

Я полагаю, вы хотите получить контент, созданный PHP , если да, используйте:

В противном случае, если вы хотите получить исходный код файла PHP , он такой же, как файл .txt:

реализация парсера php только для этого кажется огромным излишеством Я не понимаю, как это пройдет POST или GET. Я думаю, что ответ neobie будет более правильным и уместным, поскольку внешний файл PHP будет обрабатываться в контексте текущего. Используя приведенный выше пример, вы можете использовать get_template_directory_uri () и присоединиться к пути к вашему файлу. Это решит проблему использования прямого пути. $Vdata = file_get_contents(get_template_directory_uri() . '/path/to/file/in/theme.text'); Это работает! Но всякий раз, когда я пытаюсь включить: yourfile.php? это не сработает. Какие-либо предложения? Совет: Начиная с PHP 4.3.0, вы можете сократить последние две строки до простого $myvar = ob_get_clean(); (см. Документацию ob_get_clean ) привет, это только статический HTML. см. этот пример. если это файл, который мы собираемся загрузить; ///////////////// <? php echo ("text1"); ?> Text2 /////////////// это результат, который я получил; //////////////////// Text2 /////////////////// @Kombuwa, не могли бы вы пояснить свой ответ в отредактированном виде на исходный вопрос, где у вас есть больше места для четких объяснений? Спасибо =)

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

Это загрузит, а затем оценит содержимое файла. Файл PHP необходимо будет полностью сформирован с <?php и ?> теги для eval оценки его.

Мне нравится этот метод. Просто мой файл не полностью сформирован с помощью тегов <? Php и?>, Чтобы eval мог его оценить. Есть ли другой путь? Это не сработает, если вы напишете php-код в этот файл .php

Теоретически вы можете просто использовать fopen, а затем использовать stream_get_contents.

Это должно прочитать весь файл в $ string для вас, а не оценивать его. Хотя я удивлен, что file_get_contents не работал, когда вы указали локальный путь .

В качестве альтернативы вы можете запустить буферизацию вывода, выполнить include / require и затем остановить буферизацию. С помощью ob_get_contents () вы можете просто получить то, что было выведено другим файлом PHP, в переменную.

Если в вашем файле есть такой оператор возврата:

Вы можете получить это в такой переменной:

file_get_contents () не будет работать, если на вашем сервере отключен allow_url_fopen . На большинстве общих веб-хостов он отключен по умолчанию из-за угроз безопасности. Кроме того, в PHP6 параметр allow_url_fopen больше не будет существовать, и все функции будут действовать так, как если бы он был постоянно отключен. Так что это очень плохой метод для использования.

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

Передача переменных при помощи метода GET

Данный метод передачи переменных применяется в PHP для передачи переменных в файл при помощи адресной строки. То есть переменные передаются сразу через адресную строку браузера. Примером может быть, например, ссылка на статью в WordPress без использования ЧПУ (SEF), которая имеет примерно следующий вид:

То есть в данном случае передается переменная $p со значением 315. Теперь давайте более подробно на примере рассмотрим работу метод GET. Пускай нам нужно передать в файл три переменных $a, $b и $c методом GET и вывести их сумму на экран. Для этого можно использовать следующий код.

Поскольку все переменные перед передачей будут помещаться в глобальный массив GET (Массивы в PHP), то мы первым делом присваиваем нашим переменным значения соответствующих элементов массива GET. Делаем это в самом начале во избежание разнообразных ошибок при передаче переменных. Далее для демонстрации работы прописываем произвольную формулу и выводим результат на экран.

Как видно с примера, сначала мы добавляем знак вопроса сразу после названия файла. Далее прописываем переменную и через равно указываем ее значение. После этого через амперсанд аналогичным образом перечисляем другие переменные. Теперь при переходе по этой ссылке нам выведется сумма переменных $a, $b и $c.

Данный способ очень простой и не требует создания дополнительных файлов. Все необходимые данные поступают прямо через адресную строку браузера.

Ну а теперь давайте перейдем ко второму способу передачи переменных в PHP – методу POST.

Передача переменных в PHP при помощи метода POST

Данный способ позволяет скрыто передавать переменные с одного файла в другой. Как вы уже поняли, обычно для этих целей используются два файла. В первом находится форма для ввода исходных данных, а во втором исполнительный файл, который принимает переменные. Для демонстрации давайте рассмотрим следующий код.

Код первого файла с формой для отправки данных. Дадим ему название post-1.php

  • action – указываем файл, в который будут передаваться переменные.
  • method – метод передачи переменных. В нашем случае это метод POST.
  • name – название формы. Одновременно в файл будет передана переменная с таким именем.
  • name – имена переменных. В нашем случае это имя и фамилия (переменные name и lastname).
  • type – тип поля. В нашем случае это текстовое поле.
  • name – имя кнопки и переменной, которая будет передана вместе с другими переменными.
  • type – тип кнопки. В нашем случае это кнопка для отправки данных.
  • value – текст на кнопке.

Код второго файла, который будет служить приемником переменных. Назовем его post-2.php

Как и с методом GET, мы первым делом присваиваем переменным значения соответствующих элементов глобального массива POST. Далее для наглядности выводим эти переменные на экран при помощи оператора вывода echo.

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