2013-03-05 16 views
20

Chcę wiedzieć, jak wykryć, czy ustawiono $ _POST, czy nie.

Teraz wykryć to tak:

if(isset($_POST['value'])) 

Ale ja nie szukam, jeśli wartość jest ustawiona już. Zasadniczo każdy POST będzie działał.

if(isset($_POST)) 

Nie jestem pewien, jak PHP sobie z tym poradzić. Ustawienie Perhabs ($ _ POST) zawsze zwraca wartość true, ponieważ jest to globalna wersja PHP?

Zasadniczo, jak mogę to zrobić?

+1

'$ _POST' zawsze towarzyszy żądaniu nagłówka, ** zawiera ** wartości. Może chcesz '$ _SERVER ['REQUEST_METHOD'] == 'POST''. – BenM

+2

Czy chcesz dowiedzieć się, czy '$ _POST' zawiera * dowolne dane lub czy żądanie wykorzystało metodę HTTP POST? – deceze

Odpowiedz

48

Spróbuj z:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {} 

aby sprawdzić, czy skrypt został wysłany.

Jeśli dodatkowe dane zostały przekazane, $_POST nie będzie pusty, w przeciwnym razie będzie.

Możesz użyć metody empty, aby sprawdzić, czy zawiera dane.

if (!empty($_POST)) {} 
+1

który nie działa, przetestowałem go .. –

+5

Ponieważ '$ _POST' zawsze istnieje' if ($ _POST) 'zrobi dobrze, nie ma potrzeby' pustego'. – deceze

+1

@DipeshParmar Co nie działa? – hsz

3

Prostym rozwiązaniem może okazać się po prostu użyć

if (!empty($_POST)) 
+1

nie jest rozwiązaniem niewłaściwa odpowiedź ... –

3

Wystarczy użyć go jak poniżej. ponieważ jego super global tak zawsze zwraca wartość true podczas sprawdzania dla isset i empty.

<?php 
    if($_POST) 
    { 
     echo "yes"; 
    } 
?> 
+0

@ Down-voter proszę wyjaśnić, że próbowałem również puste, ale nie działało ... –

+1

Rzeczywiście, działa to dobrze. Tak powinno być '! Empty', ale jest zbędne. – deceze

9

$_POST to tablica. Możesz sprawdzić:

count($_POST) 

Jeśli wartość jest większa od zera, oznacza to, że niektóre wartości zostały opublikowane.

2

wiem ta odpowiedź została już odpowiedział, ale tutaj jest to prosta metoda używam w jednym z moich klas, aby zrozumieć, czy wpis został ustawiony (może ktoś znajdzie to przydatne):

public function isPost($key = null) { 

    if ($_SERVER['REQUEST_METHOD'] != 'POST') { 

     return false; 

    } 

    if (!empty($key)) { 

     return isset($_POST[$key]); 

    } 

    return true; 

} 
-1

Najlepszy sposób sprawdzenia: $ _POST

<?php 
if(isset($_POST['value']) && !empty($_POST['value'])) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
+0

Uważaj na 'empty()'! Łańcuch z zerem ('0'') jest pusty. Ponadto jest zbyteczne, aby używać go razem z 'isset()'. –

Powiązane problemy