Preciso inserir todas as variáveis enviadas com a postagem, eram caixas de seleção, cada uma representando um usuário.
Se eu usar GET, obtenho algo assim:
?19=on&25=on&30=on
Preciso inserir as variáveis no banco de dados.
Como obtenho todas as variáveis enviadas com POST? Como uma matriz ou valores separados por vírgulas ou algo assim?
Respostas:
A variável
$_POST
é preenchida automaticamente.Tente
var_dump($_POST);
ver o conteúdo.Você pode acessar valores individuais como este:
echo $_POST["name"];
Isso, é claro, assume que seu formulário está usando a codificação de formulário típica (ou seja,
enctype=”multipart/form-data”
Se seus dados de postagem estiverem em outro formato (por exemplo, JSON ou XML, você pode fazer algo assim:
$post = file_get_contents('php://input');
e
$post
conterá os dados brutos.Supondo que você esteja usando a
$_POST
variável padrão , você pode testar se uma caixa de seleção está marcada desta forma:if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes') { ... }
Se você tiver uma série de caixas de seleção (por exemplo,
<form action="myscript.php" method="post"> <input type="checkbox" name="myCheckbox[]" value="A" />val1<br /> <input type="checkbox" name="myCheckbox[]" value="B" />val2<br /> <input type="checkbox" name="myCheckbox[]" value="C" />val3<br /> <input type="checkbox" name="myCheckbox[]" value="D" />val4<br /> <input type="checkbox" name="myCheckbox[]" value="E" />val5 <input type="submit" name="Submit" value="Submit" /> </form>
Usar
[ ]
no nome da caixa de seleção indica que os valores selecionados serão acessados pelo script PHP como um array. Neste caso$_POST['myCheckbox']
, não retornará uma única string, mas retornará uma matriz que consiste em todos os valores das caixas de seleção que foram marcadas.Por exemplo, se eu verifiquei todas as caixas,
$_POST['myCheckbox']
seria um conjunto constituído por:{A, B, C, D, E}
. Aqui está um exemplo de como recuperar a matriz de valores e exibi-los:$myboxes = $_POST['myCheckbox']; if(empty($myboxes)) { echo("You didn't select any boxes."); } else { $i = count($myboxes); echo("You selected $i box(es): <br>"); for($j = 0; $j < $i; $j++) { echo $myboxes[$j] . "<br>"; } }
fonte
você deve ser capaz de acessá-los a partir da
$_POST
variável:foreach ($_POST as $param_name => $param_val) { echo "Param: $param_name; Value: $param_val<br />\n"; }
fonte
Ele está obsoleto e não deseja acessar superglobais diretamente (desde o php 5.5, eu acho?)
Cada IDE moderno dirá a você:
Para nossa solução, para obter todos os parâmetros de solicitação, temos que usar o método
filter_input_array
Para obter todos os parâmetros de um método de entrada, use o seguinte:
$myGetArgs = filter_input_array(INPUT_GET); $myPostArgs = filter_input_array(INPUT_POST); $myServerArgs = filter_input_array(INPUT_SERVER); $myCookieArgs = filter_input_array(INPUT_COOKIE); ...
Agora você pode usá-lo em
var_dump
ou em seuforeach
-LoopsO que não funciona é acessar a Superglobal $ _REQUEST com este método. Sempre retorna
NULL
e isso está correto.Se você precisar obter todos os parâmetros de entrada, vindo de métodos diferentes, basta mesclá-los como no seguinte método:
function askForPostAndGetParams(){ return array_merge ( filter_input_array(INPUT_POST), filter_input_array(INPUT_GET) ); }
Editar: versão estendida deste método (funciona também quando um dos métodos de solicitação não está definido):
function askForRequestedArguments(){ $getArray = ($tmp = filter_input_array(INPUT_GET)) ? $tmp : Array(); $postArray = ($tmp = filter_input_array(INPUT_POST)) ? $tmp : Array(); $allRequests = array_merge($getArray, $postArray); return $allRequests; }
fonte
Então, algo como a
$_POST
matriz?Você pode usar
http_build_query($_POST)
para colocá-los em umavar=xxx&var2=yyy
string novamente. Ou apenasprint_r($_POST)
para ver o que há.fonte
Por que não isso, é fácil:
extract($_POST);
fonte
Usando isso, você pode obter todas as variáveis de postagem
print_r($_POST)
fonte