[PHP][json] Zczytanie odpowiedzi strony, Przypisanie odpowiedzi wywołanej strony do zmiennych |
[PHP][json] Zczytanie odpowiedzi strony, Przypisanie odpowiedzi wywołanej strony do zmiennych |
6.04.2019, 08:44:47
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.04.2019 Ostrzeżenie: (10%) |
Cześć,
Mam następujący problem: napisałem większy skrypt, który na zapytanie: https:// adres12345. pl/wsZrobSwoje.php?zmienna1=wartosc1&zmienna2=wartosc2 // spacje zrobione w adresie, żeby na forum się dobrze wyświetlało Prawidłowo zwraca następujące możliwe odpowiedzi: [{"zmienna3":"wartosc3","zmienna4":"wartosc4"}] // powstaje przez "return print json_encode($rows);" lub [{"zmienna3":"wartosc3","zmienna5":"wartosc5","zmienna6":"wartosc6","zmienna7":"wartosc7"}] // powstaje przez "return print json_encode($rows);" lub Odpowiedz_tekstowa_w_przypadku_bledu (wyświetla je na stronie - jak otworzę przez przeglądarkę to tak się to wyświetli) PROBLEM: Chciałbym w innym pliku, móc skorzystać z tego skryptu. Logika mówi tak: $czytajZmienne = https:// adres12345. pl/wsZrobSwoje.php?zmienna1=wartosc1&zmienna2=wartosc2 ; // spacje zrobione w adresie, żeby na forum się dobrze wyświetlało Ale nie działa... Perfekcyjne rozwiązanie to takie, które te parametry zrzucałoby do tablicy asocjacyjnej $tablica["komunikat"] = "w_przypadku_zwrocenia_stringa"; $tablica["zwrocona_zmienna1"] = "wartosc1"; $tablica["zwrocona_zmienna2"] = "wartosc2"; itd. Serdeczna prośba o pomoc. Z góry dziękuję. Ten post edytował amatorzphp 6.04.2019, 09:14:03 |
|
|
6.04.2019, 10:24:53
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
W najprostszej postaci file_get_contents.
-------------------- |
|
|
6.04.2019, 10:57:01
Post
#3
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.04.2019 Ostrzeżenie: (10%) |
Dziękuję viking za zainteresowanie problemem.
W pliku odbierającym mam teraz kod:
i efekt wywołania:
Odwołałem się do adresu względnego na serwerze:
Skróciłem zmienną - choć nie chciałbym tego robić
Dodałem adres domeny na początku i wróciłem do błędu z pierwszego wywołania (o SSL) :/ Co mogę spróbować teraz? Ten post edytował amatorzphp 6.04.2019, 11:19:02 |
|
|
6.04.2019, 11:27:26
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
https://stackoverflow.com/questions/2614870...code-1-and-more
To ten sam serwer? -------------------- |
|
|
6.04.2019, 12:58:18
Post
#5
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.04.2019 Ostrzeżenie: (10%) |
Nie, hosting (nie dedyk) jest na nazwa.pl
W linku, który podesłał viking było kilka propozycji rozwiązań:
oraz
Żadna nie zwraca błędu, ale też niestety żadna nie pobiera treści. ALE za to trzecia opcja na tej stronie:
ZWRÓCIŁA POPRAWNE DANE - dziękuję viking za wsparcie. Kontynuując wątek główny: Jak przerobić to: [{"zmienna3":"wartosc3","zmienna4":"wartosc4"}] lub [{"zmienna3":"wartosc3","zmienna5":"wartosc5","zmienna6":"wartosc6","zmienna7":"wartosc7"}] lub Odpowiedz_tekstowa_w_przypadku_bledu na to: $tablica["komunikat"] = "w_przypadku_zwrocenia_stringa"; $tablica["zwrocona_zmienna1"] = "wartosc1"; $tablica["zwrocona_zmienna2"] = "wartosc2"; itd. Ten post edytował amatorzphp 6.04.2019, 13:03:43 |
|
|
6.04.2019, 13:23:35
Post
#6
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 29.03.2019 Ostrzeżenie: (0%) |
"Dolączył dzisiaj"
heehe I tak kolorowanie ładne umie zobic. Hehe taaaa... forum zdycha co nie ? |
|
|
6.04.2019, 13:30:42
Post
#7
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.04.2019 Ostrzeżenie: (10%) |
Wcześniej mnie tu nie było, więc nie mam porównania, ale 5 godzin na rozwiązanie problemu mnie w pełni satysfakcjonuje:)
Pozostało tylko dopełnienie. Mam nadzieję, że ktoś w wolnej chwili skrobnie jakąś gotową metodę na to. |
|
|
6.04.2019, 13:44:49
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Generalnie zależy co chcesz zwrócić. Jeśli masz tam JSON to na stronie gdzie pobierasz odwróć operację przez json_decode() - zwróć uwagę na 2 argument funkcji. Błędy też zależy jakie. Najlepiej na 1 stronie dać odpowiedni błąd od razu do odpowiedzi.
-------------------- |
|
|
6.04.2019, 14:21:25
Post
#9
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.04.2019 Ostrzeżenie: (10%) |
Strukturę / typ odpowiedzi mam jak poniżej:
[{"zmienna3":"wartosc3","zmienna4":"wartosc4"}] // powstaje przez "return print json_encode($rows);" lub [{"zmienna3":"wartosc3","zmienna5":"wartosc5","zmienna6":"wartosc6","zmienna7":"wartosc7"}] // powstaje przez "return print json_encode($rows);" lub Odpowiedz_tekstowa_w_przypadku_bledu Niestety mi to nie wyszło. Chciałbym tak:
$zmienna się wyświetla, wartości dla nazw kolumn już nie:/ Ten post edytował amatorzphp 6.04.2019, 16:43:16 |
|
|
6.04.2019, 19:02:51
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Tak jak ci mówiłem - zwróć uwagę na 2 argument funkcji. teraz masz obiekt.
-------------------- |
|
|
6.04.2019, 20:40:16
Post
#11
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.04.2019 Ostrzeżenie: (10%) |
W żadnej konfiguracji nic nie jest zwracane:/ Jak tego użyć? |
|
|
6.04.2019, 21:14:16
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
-------------------- |
|
|
6.04.2019, 21:45:36
Post
#13
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.04.2019 Ostrzeżenie: (10%) |
Nie wykombinowałem. Napisz prosze jak się mam dostać do konkretnej zmiennej, gdyż:
I pomysły mi się skończyły jak do tej zmiennej dotrzeć:/ var_dump pisze: NULL Minuta przerwy - WS zaczął mi dziwnie odpowiadać. Dam znać. Ten post edytował amatorzphp 6.04.2019, 21:57:01 |
|
|
6.04.2019, 21:56:41
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Coś mieszasz. Skoro var_dump zwraca null to jednocześnie echo $v nie może zwracać Array
-------------------- |
|
|
6.04.2019, 22:16:05
Post
#15
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.04.2019 Ostrzeżenie: (10%) |
Prawdę mówisz, var_dump zwracało null jak było ponad $zmienną w kodzie
Poniżej zmiennej wygląda tak: var_dump: array(1) { [0]=> array(4) { ["kolumna1"]=> string(17) "wartosc1" ["kolumna2"]=> string(10) "wartosc2" ["kolumna3"]=> string(19) "wartosc3" ["kolumna4"]=> string(19) "wartosc4" } } Nie wiem co zepsulem chwilę temu, ale przywróciłem się z backupu:) Dodatkowo: print_r($arr); zwraca:Array ( [0] => Array ( [kolumna1] => wartosc1 [kolumna2] => wartosc2 [kolumna3] => wartosc3 [kolumna4] => wartosc4 ) ) print_r($arr[0]); zwraca: Array ( [kolumna1] => wartosc1 [kolumna2] => wartosc2 [kolumna3] => wartosc3 [kolumna4] => wartosc4 ) var_dump zwraca wartości z cudzysłowami, a te pozostałe bez. Ten post edytował amatorzphp 6.04.2019, 22:39:16 |
|
|
7.04.2019, 05:03:14
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Wewnątrz foreach musisz zrobić kolejny który będzie zwracał już właściwy klucz wartość.
-------------------- |
|
|
7.04.2019, 09:11:26
Post
#17
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 6.04.2019 Ostrzeżenie: (10%) |
Sukces
Wpis bardziej dla kolejnych poszukujących rozwiązań. Nie wiem co się zmieniło przez noc, ale działa - i to po pierwszej pętli - druga daje te same wyniki, więc chyba jest zbędna:
Pozostał tylko problem jeśli skrypt nagle nie zwróci Jsona tylko łańcuch znaków. Funkcja, która zwykle daje wynik w postaci jsona, może dawać komunikat błędu, co daje: 1. Jak tą linijkę zamienić na Jsona, żeby powyższa funkcja mogła ją wyświetlić? 2. Jak się wtedy do niej odwołać? Pytam i odpowiadam 1. 2. A teraz jak rozróżnić, czy jsona zrobiono ze stringa czy z wielu wartości (w sensie, że to tablica asocjacyjna)? - samo foreach kiedy mamy pojedyńczy string zwraca błąd Jak na moje, to potrzebna jest funkcja typu: "czy_tablica_asocjacyjna(arr2)" // tak/nie i wtedy albo robię tak: albo tak: Dla dwóch wartości wygląda to tak: var_dump(json_decode($zmienna, true)); // array(1) { [0]=> array(4) { ["kolumna1"]=> string(17) "wartosc1" ["kolumna2"]=> string(10) "wartosc2" ["kolumna3"]=> string(19) "wartosc3" ["kolumna4"]=> string(19) "wartosc4" } } // string(34) "Komunikat błędu" Odpowiedź: Temat zakończony. Serdeczne podziękowania dla użytkownika viking @Kshyhoo Drogi Użytkowniku / Opiekunie. Większy autorytet ma się pomagając niż utrudniając zdobywanie wiedzy na tym forum, zamykając kolejne wątki merytoryczne, które otwierałem aby podzielić problem na części pierwsze. Jak możesz w wątku przeczytać również odpowiadam merytorycznie i opisuję co i jak zrobiłem, że zadziałało. Tamten wątek zamknąłeś, więc piszę tutaj. Ten wątek uważam merytorycznie za zakończony - szkoda m tylko, że z taką zaciekłością jak pilnowanie czy ktoś nie otworzył wątku za dużo, nie pomagasz. Najlepiej bierz przykład z użytkownika viking - czysta merytoryka i chęć pomocy - chyba taka jest idea tego forum, prawda? Pomijam już kwestię wycieczek personalnych. Zamiast wycieczek personalnych typu http://forum.php.pl/index.php?showtopic=262589 Ten post edytował amatorzphp 7.04.2019, 07:31:33 |
|
|
7.04.2019, 13:43:33
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Generalnie zobacz https://prophp.pl/advice/show/17/jak_przygo...dan_xhr_json%3F akurat dotyczy ajaxa ale zasada działania jest gra ta sama wszędzie (w końcu to tylko żądanie i odpowiedź). W curl możesz odczytać nagłówki i po kodzie błędu zrobić lepszą obsługę.
-------------------- |
|
|
8.04.2019, 09:22:08
Post
#19
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że |
@Kshyhoo Drogi Użytkowniku / Opiekunie. Większy autorytet ma się pomagając niż utrudniając zdobywanie wiedzy na tym forum, zamykając kolejne wątki merytoryczne, które otwierałem aby podzielić problem na części pierwsze. Jak możesz w wątku przeczytać również odpowiadam merytorycznie i opisuję co i jak zrobiłem, że zadziałało. Tamten wątek zamknąłeś, więc piszę tutaj. Ten wątek uważam merytorycznie za zakończony - szkoda m tylko, że z taką zaciekłością jak pilnowanie czy ktoś nie otworzył wątku za dużo, nie pomagasz. Najlepiej bierz przykład z użytkownika viking - czysta merytoryka i chęć pomocy - chyba taka jest idea tego forum, prawda? Pomijam już kwestię wycieczek personalnych. Zamiast wycieczek personalnych typu http://forum.php.pl/index.php?showtopic=262589 Zakładając konto, potwierdziłeś przestrzeganie regulaminu, więc go przestrzegaj... Nie mam takiej wiedzy jak Viking, więc nie mogę w żaden sposób pomóc, ale mam obowiązki wynikające z nadanej mi rangi Opiekuna, z której się należycie wywiązuję. P.S. to Forum umiera, więc nie spodziewaj się szybkiej pomocy, Admini tu nie zaglądają, Modzi są sporadycznie. Niemniej jednak regulamin Forum wciąż obowiązuje wraz z punktem o jednym wątku dotyczącym jednego problemu... i tyle na temat. -------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 05:34 |