Размещение переменных в PHP - PullRequest
1 голос
/ 01 апреля 2009

Как опубликовать переменную в PHP без использования формы и доступа к переменной со следующей страницы.

Что я действительно пытаюсь сделать, так это опубликовать такую ​​переменную:

$username = "Sam";
$_POST[$username];

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

Есть идеи?

Ответы [ 4 ]

9 голосов
/ 01 апреля 2009

Чего ты пытаешься достичь? Я думаю, что вы, возможно, захотите сеансов :

// page1.php
session_start();
$_SESSION['username'] = 'Sam';
header('Location: page2.php');

// page2.php
session_start();
print 'Hello, ' . $_SESSION['username'] . '!';

Однако, если вы уверены, что это именно то, что вам нужно, посмотрите cURL , который позволит вам POST на страницу, но я не уверен, что он позволит вам точно перейти к ней, говорить. Вы можете получить его вывод, хотя:

// page1.php
$curl = curl_init('http://www.mysite.com/page2.php');
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, array('username' => 'Sam'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
print $result; // prints "Hello, Sam!"

// page2.php
print 'Hello, ' . $_POST['username'] . '!';
3 голосов
/ 01 апреля 2009

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

Более конкретно, вот краткое изложение вашей проблемы:

  1. С помощью $_GET (информация, передаваемая непосредственно в URL) вы можете передавать свои переменные, в зависимости от того, что они из себя представляют и чего вы пытаетесь достичь.

  2. С $_POST (информация, размещаемая в заголовке HTTP на URL), вы не сможете перенаправить на страницу, потому что это делается браузером (клиент- сторона), а не на сервере (где вы запускаете сценарий PHP). Вы можете использовать скрытую форму и некоторый javascript, чтобы сделать сообщение (и перенаправление одновременно), хотя. Это может работать, в зависимости от вашей целевой аудитории, так как JavaScript не является надежным; это может быть отключено в браузере. Вы также можете использовать CURL, как говорили некоторые, хотя это будет эмулировать ваш сервер как браузер; данные будут опубликованы от имени вашего пользователя, но он не будет автоматически перенаправлен на страницу с опубликованными данными. И если конечным результатом этой публикации является аутентификация пользователя, например, то у вашего пользователя (на стороне клиента) не будет открыт сеанс для него.

  3. Использование $_SESSION с информацией, которая остается на стороне сервера. Он только (автоматически) передает уникальный идентификатор в браузер (обычно через cookie), чтобы связать пользователя с данными, которые вы храните для его сеанса на вашем веб-сайте. Конечно, это будет полезно, только если вы перенаправляете пользователя на собственное приложение, а не на другой веб-сайт.

Таким образом, в зависимости от вашей конкретной проблемы, существуют различные возможные способы ее решения.

0 голосов
/ 02 ноября 2009

будет ли целевая страница знать, является ли это CURL или отправкой на основе формы?

0 голосов
/ 01 апреля 2009

Я не думаю, что это возможно. Попробуйте вместо этого использовать $ _GET или переменные сеанса.

Редактировать: На самом деле, по-видимому, вы можете использовать CURL .

Или этот метод , который выглядит так, будто он просто записывает в файл и снова читает переменные. Я думаю, что вам лучше использовать переменные сеанса.

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