Kiedy wykonuję proste echo $HTTP_RAW_POST_DATA, pojawia się błąd:

Undefined variable: HTTP_RAW_POST_DATA

Czytałem, że w php.ini muszę odznaczyć

always_populate_raw_post_data = On

Ale nadal otrzymuję błąd i ponownie uruchomiłem Apache. Używam php 5.3.6

php
15
Exploit 4 marzec 2012, 11:31

2 odpowiedzi

Najlepsza odpowiedź

Jeśli potrzebujesz dostępu do surowego ciała POST, powinieneś naprawdę preferować użycie strumienia php://input zamiast $HTTP_RAW_POST_DATA zgodnie z odpowiedni wpis ręczny:

PHP: // wejście jest strumieniem tylko do odczytu, który umożliwia odczytanie surowych danych z korpusu żądania. W przypadku żądań pocztowych korzystne jest użycie PHP: // wkład zamiast $ http_raw_post_data, ponieważ nie zależy od specjalnych dyrektyw php.ini. Co więcej, dla tych przypadków, w których $ http_raw_post_data nie jest domyślnie zamienne, jest to potencjalnie mniej intensywnej pamięci alternatywy dla aktywowania zawsze_popule_raw_post_data. PHP: // Wejście nie jest dostępne z Enctype = "Multipart / Form-Data".

Tak więc, aby uzyskać dostęp do treści POST za pomocą php://input:

$post = file_get_contents('php://input');
26
rdlowrey 4 marzec 2012, 11:40

Jeśli dostaniesz

Uwaga: niezdefiniowana zmienna: HTTP_RAW_POST_DATA

Otwórz plik serwera dodaj znajdź

$server->service($HTTP_RAW_POST_DATA);

I zastąp następującymi 2 liniami.

if ( !isset( $HTTP_RAW_POST_DATA ) ) $HTTP_RAW_POST_DATA =file_get_contents( 'php://input' );
$server->service($HTTP_RAW_POST_DATA);

Mam nadzieję, że to pomoże.

23
Narendrasingh Sisodia 24 grudzień 2015, 12:23