Arquivo da tag: html

Como enviar POST no PHP sem formulário HTML

Forma Simples

O mesmo que o código HTML iria submeter, você poderia utilizar o código:

$content = http_build_query(array(
'field1' => 'Value1',
'field2' => 'Value2',
'field3' => 'Value3',
));

$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'content' => $content,
)
));

$result = file_get_contents('http://exemplo/make_action.php', null, $context);

Explicando o código

Na primeira linha o código

$content = http_build_query(array(

, a função http_build_query como diz a própria documentação do php Gera a string de consulta (query) em formato URLhttp://br1.php.net/http_build_query, resumindo, a função irá transformar um array de dados, em um forma de query, no caso, seria algo como:

field1=Value1&field2=Value2&field3=Value3

Na sexta linha encontraremos a função stream_context_create http://php.net/stream_context_create, que criará um fluxo de contexto, ou seja irá preparar a requisição da mesma forma que é feito pelo browser antes de enviar para o php quando submetemos o formulário.

E por ultimo a função file_get_contents, uma das minhas funções preferidas no php(já varri muito site com ela). Ela fará a requisição para a pagina, no caso http://exemplo/make_action.php, enviando o contexto gerado em stream_context_create, e pegará o output da pagina e colocando na variável $result;

Simples não? Essa é minha forma favorita, porem existem outras, se você se interessar procure por curl

fonte:

Para recuperar os POSTs no arquivo de destino:

//Por segurança, para pegar só o desejado, sem tags html
$Antes = "/[><']/";//Html, para retirar
$Depois = " ";

if(isset($_POST['valor'])){
$x_valor = preg_replace($Antes,$Depois,$_POST['valor']);
}else{
$x_valor = "";//Pega vazio se não vier como esperado
}

echo "$x_valor";

?>