Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kodowanie i dekodowanie tekstu.
Forum PHP.pl > Forum > Przedszkole
Giluś
Cześć, jakimi funkcjami można zakodować tekst (funkcje podobne do: MD5) i później ponownie je odkodować do normalnego tekstu ?.

Pozdrawiam i z góry bardzo dziękuje.
nospor
Chociażby base64
Giluś
A coś innego smile.gif
nospor
To może napisz co chcesz konkretnie zrobić, do czego to ma służyć, a nie będziemy czekać i podawać ci pokolei wszystkie funkcje z manuala, które sam możesz sobie wypisać.
Giluś
Potrzebuje przesłać różne ciągi znaków (wyrazy, zdania, notatki itp) przez HTTP do drugiego serwera, ale do mysql zapisują mi się wiadomości tylko takie które są bez żadnego znaku specjalnego ani spacji, wiec chciałbym na na czas wysłania tej wiadomości zakodować go do jakiś znaków bez spacji ani znaków specjalnych a później od kodować do normalnej formy i wysłać do MySQL..

Pozdrawiam i dziękuje za odpowiedzi:)
nospor
No to base64 nadaje się do tego wyśmienicie.

Cytat
ale do mysql zapisują mi się wiadomości tylko takie które są bez żadnego znaku specjalnego ani spacji
yy....a co ty masz za baze ze nie pozwala ci spacji wpisywać? Prawdopodobnie to nie baza jest problemem, a fakt, że źle przeysłasz dane. Może pokaż jak to robisz.
Giluś
A wiec robię tak..:

  1. function send($url) {
  2. $curl = curl_init($url) ;
  3. curl_setopt( $curl, CURLOPT_URL , $url );
  4. curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
  5. $source = curl_exec( $curl );
  6. curl_close( $curl );
  7. } else {
  8. $source = file_get_contents($url);
  9. }
  10. return $source;
  11. }
  12.  
  13. $wiadomosc2 = '<b><i>Koniec sesji:</i>, Data: 13:15 Piątek, 26 października 2012</b>, <small>Nr. 22</small>';
  14. $user2 = '<i>System</i>';
  15.  
  16. $msgs = base64_encode($wiadomosc2);
  17. $users = base64_encode($user2);
  18. $li = rand(1,100);
  19. $lis = base64_encode($li);
  20.  
  21. $send = send('http://********/save.php?msg='.$msgs.'&time='.$data.'&user='.$users.'&ranga='.$user2.'&idrec='.$id_rec.'&datarec='.$da_rec.'&s='.$li.'&s2='.$lis,'r');


A teraz na drugim serwerze:

  1. $msg = base64_decode($_GET['msg']); $s2 = base64_decode($_GET['s2']); $user = base64_decode($_GET['user']);
  2. $time = $_GET['time']; $ranga = $_GET['ranga']; $id_rec = $_GET['idrec']; $da_rec = $_GET['datarec']; $s = $_GET['s'];
  3.  
  4.  
  5. if($s2 == $s) {
  6. if ($msg and $time and $user and $ranga and $id_rec and $da_rec) {
  7.  
  8. mysql_query("INSERT INTO czat_rec SET message='$msg', time='$time', user='$user', ranga='$ranga', id_rec='$id_rec', date_rec='$da_rec'");
  9.  
  10. }
  11. }



Baza mi pozwala dodać spację, ale gdy one przechodzą przez http to spacje zostaje zamieniona na bodajże: %20 - a tego prawdopodobnie dodać nie mogło...


Edit, dodam jeszcze zakodowane zmienne:

Kod
$wiadomosc2 = PGI+PGk+S29uaWVjIHNlc2ppOjwvaT4sIERhdGE6IDEzOjE1IFBpuXRlaywgMjYgcGGfZHppZXJuaWth
IDIwMTI8L2I+LCA8c21hbGw+TnIuIDIyPC9zbWFsbD4=

$user2 = PGk+U3lzdGVtPC9pPg==
nospor
To już jak użyłeś base64 to ci już działa czy nadal masz jakiś problem?
Giluś
No własnie jeszcze mam problem,
nospor
No ale jaki masz problem..... kurcze, wróżek nie ma....
Temat: Jak poprawnie zada pytanie
zastosuj się do tego tematu bo w życiu się niczego nie dowiemy...
Niktoś
Spróbuj z base32, może bardziej Ciebie zadowoli.
nospor
A skoro wysyłasz dane url'em to może poprostu użyć URLENCODE()
Giluś
Początkowo, chciałem się zapytać o samo kodowanie wiec mi dałeś base64, a w późniejszej części sam się mnie zapytałeś jak mam zapisany ten skrypt że mi nie dodaje do MySQL.
nospor
No i...? Nie bardzo rozumiem do czego zmierzasz.

Pytam się ponownie: jaki teraz masz problem. Wróżek nie ma.

Dodatkowo też ci wyjaśniam, że skoro dane wysyłasz czystym URLem to zamiast base64 możesz użyć URLENCODE
Giluś
Gdy używam URLEN(DE)CODE to nie wysyłają mi się plusy i znaki specjalne.
nospor
Masz używać tylko URLENCODE. URLDECODE jest nie potrzebne wręcz zbędne.

Wykonałem właśnie test i wszystko się przesyła jak należy. Użyłem twoich wartosci.
Giluś
Ale popatrz, wpisałem sobie takie wartości:
Kod
!@#$%^&*()_+{}"|?>

I przesłało mi się takie:
Kod
!@#$%^&amp;*()_ {}&quot;|?&gt;

+ całkowicie ominął tak jak gdyby zamienił go na spację..
nospor
Wpisałem właśnie to co podałeś. Drugi skrypt odebrał dane poprawnie.

Pokaż i tym razem jak ty to wszystko kodujesz i odbierasz.
Giluś
Wysyłanie:
  1.  
  2. $wiadomosc = 'test +++ test';
  3. $user = '<i>System</i>';
  4.  
  5. $msgs = urlencode($wiadomosc); $users = urlencode($user);
  6. $li = rand(1,100); $lis = urlencode($li);
  7. $send = send('http:/*********/save.php?msg='.$msgs.'&time='.$data.'&user='.$users.'&ranga=4&idrec='.$id_rec.'&datarec='.$da_rec.'&s='.$li.'&s2='.$lis,'r');
  8.  
  9.  


Odbieranie:
  1.  
  2. $msg = urldecode($_GET['msg']); $s2 = urldecode($_GET['s2']); $user = urldecode($_GET['user']);
  3. $time = $_GET['time']; $ranga = $_GET['ranga']; $id_rec = $_GET['idrec']; $da_rec = $_GET['datarec']; $s = $_GET['s'];
  4.  
  5.  
  6. if($s2 == $s) {
  7. if ($msg and $time and $user and $ranga and $id_rec and $da_rec) {
  8.  
  9. mysql_query("INSERT INTO czat_rec SET message='$msg', time='$time', user='$user', ranga='$ranga', id_rec='$id_rec', date_rec='$da_rec'");
  10.  
  11. }
  12. }
  13.  
nospor
Przecież ci wyraźnie napisałem że masz nie używać URLDECODE...... przecież po chińsku nie piszę....
Giluś
Dzięki bardzo wink.gif, nie za bardzo wiedziałem, że jak prześlę to przez http, to te znaki są zamienią i będą już normalne.. smile.gif

Dziękuje bardzo jeszcze raz smile.gif
nospor
Cytat
nie za bardzo wiedziałem, że jak prześlę to przez http, to te znaki są zamienią i będą już normalne..
Dlatego ci napisałem, byś nie używał urldecode a Ty mimo wszystko nadal go używałeś i ciągle pisałeś że źle odbierasz. Przecież dla żartów nie piszę ci różnych głupot.
Nawet jeśli uznałeś moją treść za dziwną to powinieneś był o tym napisać, a nie udawać że nic nie mówiłem a Ty nadal swoje. No tak się przecież nie da nic zrobić kiedy ja swoje a Ty swoje smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.