Wysłanie zapytania POST i problem z odpowiedzią

0

Mam na serwerze(localhost) dwa skrypty. Pierwszy wysyła do drugiego zapytanie POST. Problem w tym ,że zamiast odpowiedzi dostaję:

{ [0]=> string(899) " //tutaj kod źródłowy test.php "}

Wczesniej wysyłałem POST przez Ajaxa i wszystko działało, teraz chciałem zrobić to samo przez php i dupa.

Oto funkcja wysyłająca:

function PostScrap($scrapstr){
$url = 'test.php';

$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\nAccept-Encoding: gzip, deflate\r\nConnection: close\r\nCache-Control: no-cache",
        'method'  => 'POST',
        'content' => ("act=get&" . $scrapstr)
    ),
);

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);
return $result;
}
0

W zmiennej $url nie masz wcale poprawnego url. Wprowadź tam poprawny adres (taki który się np. zaczyna od http://). Takie żądanie musi obsłużyć serwer www, a podając taką relatywną ścieżkę do file_get_contents sprawiasz, że nie powstaje żądanie HTTP i zamiast tego pobierana jest treść pliku.

Ewentualnie wydziel logikę z tego pliku test.php, tak by można było go dołączyć przez include i wywołać jako funkcję.

0

hmm

zmnieniłem $url na:

$url = 'http://localhost/~test/bazatest.php';

i skrypt nie może się połączyć :/

Fatal error: Maximum execution time of 30 seconds exceeded

0

A masz w ogóle uruchomiony webserver? Skrypt wykonuje się po uruchomieniu w przeglądarce?

0

tak

Wydaje mi się ,że php wywala tyldę z adresu.

0
danek napisał(a):

Fatal error: Maximum execution time of 30 seconds exceeded

usuń Accept-Encoding: gzip, deflate\r\n

po co w ogóle wysyłasz zapytanie POST z jednego skryptu do drugiego? niepotrzebnie angażujesz w to sockety, apache i drugi wątek php
to co masz w tym drugim skrypcie powinieneś wydzielić do jakiejś funkcji, takiej żebyś mógł ją wywoływać w obu plikach zamiast przesyłać dane z jednego do drugiego

możesz też po prostu ustawić dane w superglobalnej tablicy $_POST i includować skrypt

parse_str('act=get&' . $scrapstr, $params);
$_POST = $params + $_POST;

ob_start();
include('test.php');
$result = ob_get_clean();
// możesz przywrócić starą zawartość $_POST żeby po sobie posprzątać
0

Ok, przebudowałem trochę oba skrypty, tamten włączyłem przez include() i działa ,dzięki.

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