Wysłanie zapytania POST i problem z odpowiedzią

danek
2013-07-11 22:17
danek
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;
}

Pozostało 580 znaków

Rev
2013-07-11 22:34
Rev
Moderator

Rejestracja: 12 lat temu

Ostatnio: 3 godziny temu

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ę.


edytowany 1x, ostatnio: Rev, 2013-07-11 22:36

Pozostało 580 znaków

danek
2013-07-11 23:01
danek
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

Pozostało 580 znaków

Rev
2013-07-11 23:04
Rev
Moderator

Rejestracja: 12 lat temu

Ostatnio: 3 godziny temu

0

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


Pozostało 580 znaków

danek
2013-07-11 23:09
danek
0

tak

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

to daj var_dump i sprawdź. Szczerze w to wątpie - unikalna_nazwa 2013-07-11 23:29

Pozostało 580 znaków

2013-07-11 23:24

Rejestracja: 9 lat temu

Ostatnio: 4 lata temu

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ć

Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 5x, ostatnio: unikalna_nazwa, 2013-07-11 23:44

Pozostało 580 znaków

danek
2013-07-11 23:59
danek
0

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

edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

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