Отправка данных POST без формы

могу ли я отправить, например, строку или другую часть информации другому .php-файл без его экспонирования [таким образом, не GET, а POST соответствует тому, что я знаю] без использования формы?

5 ответов


Если вы не хотите, чтобы ваши данные были видны пользователю, используйте сеанс PHP.

данные в запросе post по-прежнему доступны (и управляемы) пользователем.

оформить заказ в этом уроке на сеансах PHP.


вы можете использовать AJAX для отправки запроса POST, если вам не нужны формы.

использование jquery $.пост метод довольно прост:

$.post('/foo.php', { key1: 'value1', key2: 'value2' }, function(result) {
    alert('successfully posted key1=value1&key2=value2 to foo.php');
});

отправьте свои данные с помощью сеанса, а не post.

session_start();
$_SESSION['foo'] = "bar";

на странице, где вы получаете запрос, если вам абсолютно нужны данные POST (какая-то странная логика), вы можете сделать это где-то в начале:

$_POST['foo'] = $_SESSION['foo'];

данные post будут действительны так же, как если бы они были отправлены с POST.

затем уничтожьте сеанс (или просто снимите поля, если вам нужен сеанс для других целей).

важно уничтожить сеанс или отменить установку поля, потому что в отличие от POST, SESSION будет оставаться действительным до тех пор, пока вы не уничтожите его или до конца сеанса браузера. Если вы этого не сделаете, вы можете наблюдать некоторые странные результаты. Например: вы используете sesson для фильтрации некоторых данных. Пользователь включает фильтр и получает отфильтрованные данные. Через некоторое время он возвращается на страницу и ожидает, что фильтр будет сброшен, но это не так: он все еще видит отфильтрованные данные.


посмотрите документацию php для этих функций, которые вы можете отправить post reqeust, используя их.

fsockopen()
fputs()

или просто использовать класс метод zend_http_client который также основан на socket-conenctions.

также нашел замечательный пример использование google...


просто использовать: file_get_contents()

// building array of variables
$content = http_build_query(array(
            'username' => 'value',
            'password' => 'value'
            ));
// creating the context change POST to GET if that is relevant 
$context = stream_context_create(array(
            'http' => array(
                'method' => 'POST',
                'content' => $content, )));

$result = file_get_contents('http://www.example.com/page.php', null, $context);
//dumping the reuslt
var_dump($result);

ссылка: мой ответ на подобный вопрос: