Muszę sprawdzić, czy istnieje/jest ustawiony php://input
. Czy to działa z php isset()
? Jaki jest właściwy sposób, aby to sprawdzić?Jak sprawdzić, czy ustawione jest wejście php: //?
Odpowiedz
można uzyskać zawartość php://input
użyciu file_get_contents
i sprawdzić wartość zwracaną, aby zobaczyć, czy to faktycznie ustawić:
$input = file_get_contents("php://input");
if ($input) {
// set
}
else {
// not set
}
spróbuj przetestować go z file_get_contents()
(do czytania) + empty()
lub boolean conversion (do testowania) :
<?php
$input = file_get_contents('php://input');
if ($input) {
// exists
} else {
// not exists
}
Od php.net:
Strumień otwarty z php: // wejściem można odczytać tylko raz; strumień nie obsługuje operacji wyszukiwania. Jednak w zależności od implementacji SAPI może być możliwe otwarcie innego strumienia wejściowego php: // i ponowne uruchomienie odczytu. Jest to możliwe tylko po zapisaniu danych treści żądania . Zazwyczaj ma to miejsce w przypadku żądań POST, ale nie innych metod żądań, takich jak PUT lub PROPFIND.
Czy w tym przypadku odczytuję dane base64 z pliku, file_get_contents zwraca tylko coś, jeśli odczytuje prawdziwy plik? (to znaczy, jeśli użytkownik wyśle fałszywą bazę 64, tylko tekst, ale wstępnie sformatowany, aby wyglądał jak baza 64, ale nie prawdziwy plik, co wynikałoby z $ input?) – sagits
@sagits yes. 'file_get_contents()', podczas korzystania z tego wrappera URL, odczytuje dowolną treść, jeśli jest tam. Bez względu na strukturę zawartości. – BlitZ
Dziękuję za @CORRUPT, trochę się zdezorientowałem z twojej odpowiedzi, masz na myśli to, że może odczytać fałszywą bazę 64, ale zwróci fałsz, czy też zwróci true? Czytałem w instrukcji funkcji, że zwraca wartość false, jeśli nie może odczytać zawartości. Czy możesz mi to wyjaśnić? Dziękuję za Twój czas. – sagits
Załóżmy otrzymujesz wejściowych użytkownika z POST wnioskować można sprawdzić, czy jest to zestaw tak
if(isset($_POST['var_name']))
{
//for additional checking like if it's not empty do this
if(!empty($_POST['var_name']))
{
//Do whatever you want here
}
}
'php: // input' to miejsce, w którym znajdują się dane" POST "lub" PUT ", a nie parametry" GET ". – Barmar
Edytował odpowiedź .. thanx za poinformowanie mnie, że – user2801966
Lepiej, chociaż będzie działać tylko wtedy, gdy dane są poprawnie sformatowane jako dane formularzy. Zwykle powodem użycia 'php: // input' jest to, że musisz uzyskać dostęp do nieprzetworzonych danych. – Barmar
zwraca true, jeśli zmienna istnieje i jej not null
$foo = 'bar';
var_dump(isset($foo)); -> true
$baz = null;
var_dump(isset($baz)); -> false
var_dump(isset($undefined)); -> false
Look to Kot Schrödingera! Nie możesz tego wiedzieć, dopóki go nie otworzysz! :) – Prasanth
Jeśli jest to żądanie sieciowe, możesz sprawdzić $ _SERVER ['CONTENT_LENGTH'], poza tym nie ma innego sposobu. Funkcje takie jak fstat lub stream_get_meta_data nie działają w tym przypadku. :( – xpuu