Odbieranie danych przez $_GET, Niecodzienny temat |
Odbieranie danych przez $_GET, Niecodzienny temat |
19.04.2018, 19:18:41
Post
#1
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 1 Dołączył: 10.08.2007 Ostrzeżenie: (0%) |
Witam,
Czy jest możliwość przesłania danych, które nie sa znakami asci i zawierają znak & poprzez $_GET Sprawa wygląda tak. Postawiłem stronę WWW - strona2.php
I teraz jak wejdę na www.mojastrona.pl/strona2.php?data=123 to później jak wejdę na www.mojastrona.pl/fota.txt to mam w niej zawartość 123. Ale co jeśli chciałbym wysłać jakieś dane które nie są znakami ASCI oraz dodatkowo mogą zawierać znaki takie jak . ? & Wtedy będzie to źle 'zrozumiane' przez serwer i jeśli chciałbym wysłać taką paczkę danych: Tajne&dane to w pliku fota.txt będę miał tylko tajne Da się jakoś sprawić, żeby znak & był ignorowany? Generalnie posiadam moduł Wifi ESP8266, który można fajnie programować i który służy do łączenia się z internetem, i chciałbym wysłać nim dane, ale moga one zawierać znak &, więc musiałbym wymyślić coś innego. Ktoś wie jak to rozwiązać? EDIT: Myślę, że można znaleść jakiś algorytm, który zakodowałbymi dane tak, żeby wynikiem były tylko znaki alfabetu. wtedy mógłbym to przesłać. Czy to dobry pomysł? Ten post edytował xamrex 19.04.2018, 19:44:44 |
|
|
19.04.2018, 19:53:02
Post
#2
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 3 Dołączył: 28.12.2011 Ostrzeżenie: (0%) |
Myślę, że to może pomóc: base64_encode($str). Po otrzymaniu przez get odkodujesz za pomocą: base64_decode($str)
Ten post edytował Azek 19.04.2018, 19:54:29 |
|
|
19.04.2018, 20:19:26
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
|
|
|
20.04.2018, 08:20:06
Post
#4
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 1 Dołączył: 10.08.2007 Ostrzeżenie: (0%) |
Hej.
Pomysł z base64 wydawał się świetny. Myślałem,że już wszystko rozwiązane, ALE bo zakodowaniu tego w base64 ( a nawet przed zakodowaniem) dane które chce przesłać mają ok 28kb. Jak wysyłam je w polu adresu dostaję komunikat: Request-URI Too Long The requested URL's length exceeds the capacity limit for this server. Wiem, że można zmienić ustawienia serwera ale na pewno na to administrator się nie zgodzi. WIęc jedyne rozwiązanie któe widzę, to wysyłanie tych danych w paczkach:< No chyba, że ma ktos jakis pomysł jeszcze? |
|
|
20.04.2018, 08:24:24
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) |
Nie możesz ich wysłać metodą POST?
Ten post edytował markuz 20.04.2018, 08:24:40 -------------------- |
|
|
20.04.2018, 08:25:56
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
Cytat Czy jest możliwość Nie ma takiej możliwości, bo GET nie służy do przesyłania danych. |
|
|
21.04.2018, 23:53:25
Post
#7
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 28.09.2014 Ostrzeżenie: (0%) |
Hej. Pomysł z base64 wydawał się świetny. Myślałem,że już wszystko rozwiązane, ALE bo zakodowaniu tego w base64 ( a nawet przed zakodowaniem) dane które chce przesłać mają ok 28kb. Jak wysyłam je w polu adresu dostaję komunikat: Request-URI Too Long The requested URL's length exceeds the capacity limit for this server. Wiem, że można zmienić ustawienia serwera ale na pewno na to administrator się nie zgodzi. WIęc jedyne rozwiązanie któe widzę, to wysyłanie tych danych w paczkach:< No chyba, że ma ktos jakis pomysł jeszcze? zamiast & spróbuj w adres dać %26 |
|
|
22.04.2018, 08:23:03
Post
#8
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 1 Dołączył: 10.08.2007 Ostrzeżenie: (0%) |
Hej,
Nie możesz ich wysłać metodą POST? Nie, niestety nie mogę ;( MOduł na to nie pozwala Stanęło na tym, zę będę dane kodował base64, i wysyłał po kilka razy. Na serwerze gdzie mam stornę, max długość adresu to 8kb, więc będę 3-4x musiał wysłać te moje dane. Chyba nic innego nie wymyślę. |
|
|
24.04.2018, 21:47:13
Post
#9
|
|
Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) |
... przecież moduł Wifi ESP8266 może przesyłać POST
Czego używasz Arduino?
albo
-------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
24.04.2018, 21:50:56
Post
#10
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 1 Dołączył: 10.08.2007 Ostrzeżenie: (0%) |
Witam serdecznie
Udało mi się wysłać dane metodą POST, ale niestety dalej są problemy. Generalnie moja storna wygląda tak:
I teraz dla testów uzywam oprogramowaia ZOC7terminal i gdy nim wysyłam dane:
To tworzy się plik zdj.jpg z zawartością : 0123456789. Problem jest jeśli chce wysłać dane binarne. Tzn prawie wszystko działa, ale gdy wysyłam 0x26 czyli znak '&' to do pliku zdj.jpg lecą wszystkie dane do momentu wystąpienia tego znaku. Pomyślałem, że zmodyfikuję nagłówek i puszczę coś takiego:
ale po czymś takim to w ogóle plik zdj.jpg ma 0 bajtów (nic do niego nie leci) DOmyślam, się, że winny jest ten nagłowek Content-Type: application/octet-stream i jeśil go ustawię to do $dane = $_POST['data'];nic nie przychodzi Pomożecie jakoś? P.S wiem, ze mogę użyć Base64 tak jak radziliście, ale może da się to jakoś obejść? Bo chyba da się wysłać dane z pełnym zakresie od 0x00 do 0xff na serwer przez post |
|
|
24.04.2018, 22:07:41
Post
#11
|
|
Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) |
binarne dane przesyłaj "Content-Transfer-Encoding: binary"
ale jak przesyłasz obrazek to dodaj nagłówek "Content-Type: image/jpeg" przykład jak wysłać pliki https://tttapa.github.io/ESP8266/Chap12%20-...o%20Server.html Ten post edytował LowiczakPL 24.04.2018, 22:13:44 -------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
24.04.2018, 22:41:49
Post
#12
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 1 Dołączył: 10.08.2007 Ostrzeżenie: (0%) |
binarne dane przesyłaj "Content-Transfer-Encoding: binary" ale jak przesyłasz obrazek to dodaj nagłówek "Content-Type: image/jpeg" przykład jak wysłać pliki https://tttapa.github.io/ESP8266/Chap12%20-...o%20Server.html Jak dodam ten nagłówek encoding:binary, czyli mój nagłówek będzie wyglądał tak:
To w pliku zdj.jpg będę miał wartości tylko 0x21 0x22 0x23 0x24 0x25 Natomiast jak zmienię nagłówek na:
to w pliku zdj.jpg nie mam nic. Wydaje mi się, że $_GET odbiera tylko dane jak ten nagłówek jst Content-Type: application/x-www-form-urlencoded. jednak tym sposobem nie prześlę znaku '&' Ten post edytował xamrex 24.04.2018, 22:42:18 |
|
|
25.04.2018, 05:36:57
Post
#13
|
|
Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) |
no ale data ty musisz wypełnić swoimi odpowiednimi danymi dostosowanymi do nagłówka.
Znasz C czy raczej nie? -------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
25.04.2018, 06:49:12
Post
#14
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 1 Dołączył: 10.08.2007 Ostrzeżenie: (0%) |
Znam
Cytat no ale data ty musisz wypełnić swoimi odpowiednimi danymi dostosowanymi do nagłówka. Jak to? Nagłówki wysyłam przed 'contentem' Czyli wysyłam te swoje nagłówki:
No i jeśli robie to w taki sposób, to do pliku strony.php dane które są odbierane przez $_POST['data']; to tylko dane do cyfry 0x26 No i nie wiem jak to rozwiązać. Mógłbyś mnie bardziej nakierować? Ten post edytował xamrex 25.04.2018, 06:49:51 |
|
|
25.04.2018, 07:13:13
Post
#15
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
A
$postdata = file_get_contents("php://input"); file_put_contents('zdj.jpg', $postdata); |
|
|
25.04.2018, 17:02:22
Post
#16
|
|
Grupa: Zarejestrowani Postów: 267 Pomógł: 1 Dołączył: 10.08.2007 Ostrzeżenie: (0%) |
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 15:17 |