PHP nie widzi $_POST oraz $_GET.

0

Witam,

Mam sobie strone internetowa, a w niej musze na przechwycic na zamiane raz wartosci ze zmiennej $_POST, a raz z $_GET.
Strona ma za zadanie odbierac odpowiedz z innego serwera (nie mojego). I w sumie moj skryp nie widzi tych zmienny, tzn sa puste.
Jednak, ze jak wciapalem :$post = file_get_contents('php://input'); to sytuacja sie zmienila dla zmiennej typu $_POST, dzieki tej
funckcji czytam posta, ale z getem dalej nic, zero. Skad taka zaleznosc, o co moze chodzic? Dlaczego nie widze post i geta w swoim
skypcje? Czy problem wiaze sie z moim serwerem czy serwerem, ktory wysyla do mnie zadanie http

0

co to za inny skrypt? pokaż jego kod.

0

Nie ma innego skryptu. Kod jak kod. Chodzi jedynie o to, że jak zewnętrzny serwer wysyła żądanie z danymi typu $_POST do mojego serwera to ich nie czytam. $_POST jest zupełnie pusty, jedynie to file_get_contents('php://input'); przechwytuje mi dane. Problem ten sam z $_GETem. Mój serwer nie widzi ich. Wydaje mi się, że może serwer wysyła żądanie z jakimś nagłówkiem json czy coś. Nie wiem jaka cholera. Nigdy się nie spotkałem, żeby mi $_POSTów nie sczytywało.

0

Dowiedz się u źródła co jest wysyłane. Zapewne ten "inny serwer" traktuje Twój jako RESTowe API, a Ty traktujesz te żądania jako typowe POST-y. Poczytaj o parze REST + PHP.

0

Tak, tutaj możesz mieć rację. Czyli jak to rozwiązać? Jakieś header's dodać? a moze .htaccess?
A może coś takiego: ??

 
       // first of all, pull the GET vars
        if (isset($_SERVER['QUERY_STRING'])) {
            parse_str($_SERVER['QUERY_STRING'], $parameters);
        }

        // now how about PUT/POST bodies? These override what we got from GET
        $body = file_get_contents("php://input");
        $content_type = false;
        if(isset($_SERVER['CONTENT_TYPE'])) {
            $content_type = $_SERVER['CONTENT_TYPE'];
        }
0

To ostatnie wygląda OK, niestety nie wiem jak PHP reaguje na metody PUT/DELETE i ew. określone Content-Type w GET/POST, więc musisz sprawdzić czy coś pojawi się w $parameteres.

Zrób sobie var_dumpa z $_SERVER i zobacz czy tam w QUERY_STRING coś widać, ew. w innym elemencie tej tablicy.

0

@dzek69 - $_POSTdziala, $_GET caly czas pusty:

 
if (isset($_SERVER['QUERY_STRING'])) {
    parse_str($_SERVER['QUERY_STRING'], $parameters);
}

0

a jesteś pewien, że jakiś GET masz dostać w ogóle? ew. czy nie masz jakiegoś rewrite, który obdziera żądania z parametrów GET?

0

Sprawdz może na początek w ten sposób czy coś dostajesz wgl. ( dopisz to na poczatku skryptu)

 
print_r($_POST);
print_r($_GET);
 

jak bedzie array() to znaczy ze puste

1 użytkowników online, w tym zalogowanych: 0, gości: 1