Могу ли я POST и получить на одной странице PHP - PullRequest
6 голосов
/ 11 июля 2011

Я хотел знать, возможно ли ПОЛУЧИТЬ и ПОСТИТЬ на одной и той же странице PHP, например

Я хочу отправить данные по адресу:

http://www.example.com/my.php

Итак, сначала ПОЛУЧИТЬ

http://www.example.com/my.php?task=dosomething

и POST некоторые $thexml = XML до

http://www.example.com/my.php?task=dosomething

и затем иметь доступ к обоим в некотором коде, как (пример)

// Example Code ============================

    if($_GET["task"] == "dosomething"){
      $mynewxml = $_POST["$thexml"];
    }
//==========================================

Ответы [ 7 ]

18 голосов
/ 11 июля 2011

Технически нет, вы не можете POST и GET одновременно. Это два разных глагола, и вы можете сделать только один во время вашего запроса.

Однако вы обнаружите, что если вы введете POST и включите в URL параметры, такие как yourscript.php?param1=somevalue&param2=somevalue, то оба параметра $_GET и $_POST будут заполнены соответствующими данными.

Было бы целесообразно прочитать о том, как на самом деле работает HTTP. http://www.jmarshall.com/easy/http/

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

6 голосов
/ 11 июля 2011

Да, вы можете сделать это, включив параметры $_GET как часть действия формы:

<form method='post' action='handler.php?task=dosomething'>
   ...
</form>
4 голосов
/ 26 июля 2013

Вот как я это делаю ....

if (isset($_POST['somevar'])) { 
    $somevar = $_POST['somevar']; } 
    else { 
    $somevar = $_GET['somevar']; 
}
3 голосов
/ 11 июля 2011

Да, вы можете. Убедитесь, что вы используете $_GET для получения и $_POST. Существует также $_REQUEST, который объединяет два в одном массиве. Использование этого не рекомендуется.

2 голосов
/ 11 июля 2011

Конечно.Довольно просто:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  ... handle form submission here ...
}

?>

<html>

<body>

<form action="thisscript.php" method="post">
... form here ...
</form>
0 голосов
/ 11 июля 2011

Да, мой молодой падаван. Это так же просто, как изменить атрибут сообщения в форме.

<form method="post"....
<input type="text" name="some_name"...

или

<form method="get"....
<input type="text" name="some_name"...

И добавление кнопки отправки. После отправки вы получаете доступ к данным HTTP Request Post / GET, хранящимся в их соответствующих переменных.

$_POST['some_name'] or $_GET['some_name']
0 голосов
/ 11 июля 2011

Вы не можете использовать оба метода из клиента (два разных запроса) и видеть все параметры в одном и том же исполнении вашего PHP-скрипта.Вам нужно выбрать POST или GET.

Вы можете использовать как данные GET, так и данные POST, поступающие из одного и того же запроса, как и другие сигналы.

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

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