Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Skriveni binarni podaci u formi? (ali ne upload)

[es] :: PHP :: Skriveni binarni podaci u formi? (ali ne upload)

[ Pregleda: 2654 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pisac

Član broj: 13046
Poruke: 4578



+3341 Profil

icon Skriveni binarni podaci u formi? (ali ne upload)28.03.2016. u 13:23 - pre 98 meseci
Kako da držim binarne podatke u skrivenom polju forme, i da ih pošaljem sa POST-om? Nisam našao način.

nešto što bi bilo kao <input type="binary" name="slika" value="0948509bf098" hidden readonly>

Dakle nije u pitanju polje za izbor fajla: <input name="userfile" type="file" />
već baš binarni podaci koji su već preneseni nekom ranijom formom i čuvaju se u variabli.

U pitanju je profilna slika koja se aploaduje posebnom formom, smanjuje i ubacuje u variablu u php-u, a u ovoj formi treba samo da bude prisutna sa ostalim podacima (i prikazana kroz <img...>), pa ako se korisnik odluči da prihvati postavljene izmene onda klikne send i sa svim podacima forme se šalje i nova slika u bazu.



 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)28.03.2016. u 13:48 - pre 98 meseci
HTML ne podržava binarne inpute. Uradi ovako:
Code:

<input type="hidden" name="slika" value="0948509bf098">

Standardno se koristi base64 encoding/decoding da za konverzije između stringa i binary.

Ako trebaš istovremeno i da prikažeš sliku, ponovi to isto i za img src, samo prefixovano sa mime-om i ecoding-om:
http://jsfiddle.net/hpP45/
 
Odgovor na temu

pisac

Član broj: 13046
Poruke: 4578



+3341 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)29.03.2016. u 05:02 - pre 98 meseci
Ok, radi.
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)29.03.2016. u 08:18 - pre 98 meseci
Ako je korisnik već poslao sliku drugom formom, što tu sliku ne čuvaš na serveru a u novoj formi samo prosleđuješ neki identifikator da po njemu tu sliku kasnije iskoristiš?

Ovako šalješ celu sliku što je prilično nepotrebno trošenje resursa.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)29.03.2016. u 10:21 - pre 98 meseci
Nema potrebe čak ni za identifikatorom, sesije postoje čak i u PHP-u http://php.net/manual/en/reserved.variables.session.php. Mada, nije baš uputno stavljati velike objekte u sesije, ili barem treba ograničiti veličinu da ti ne bi korisnik okačio BMP od 500 megabajta. Treba koristiti temp fajlove za ovu svrhu, a u sesiji čuvati samo putanju do fajla (ili fajl imenovati na osnovu session id-ja ili slično).

http://stackoverflow.com/quest...p-store-images-in-session-data
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
82.208.210.*



+218 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)29.03.2016. u 13:26 - pre 98 meseci
Kao sto Pedja kaze moras da cuvas sliku u temp folderu i da prosledis neki identifikator.
Sliku u sesiji mozes cuvati ali je ne mozes jednostavno prikazati. Mozes je prikazati preko mime ali onda ce cela slika biti ucitana u html kao deo html-a pa nema smisla cuvati je sesiji i u html. Sesija je tu suvisna.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

pisac

Član broj: 13046
Poruke: 4578



+3341 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)29.03.2016. u 20:25 - pre 98 meseci
Sliku prikazujem lako iz sesije:

Code:
<img height=50 src="data:image/jpeg;base64,<?php echo($_SESSION['pic'])?>">


A slika je već smanjena na <200px pa me zauzimanje resursa u formi ne opterećuje mnogo. Ovako mi je lakše za baratanje.

Trenutna slika profila se u hederu prikazuje iz $_SESSION['pic'], a nova slika profila se čuva u $_SESSION['forma']['pic'] gde se nalaze i ostali podaci iz forme (to je za slučaj da neko polje tokom pokušaja apdejta nije validno, pa se korisnik vraća na glavnu formu i svi podaci u formi popunjavaju sa tim istim podacima da bi ih korisnik ispravio). To je i način na koji prenosim sliku iz upload forme u glavnu formu (popunim $_SESSION['forma']['pic'] i skočim na glavnu formu).

U slučaju da je sve ispravo i upisano u bazu, onda se apdejtuje $_SESSION['pic'] (slika odmah postaje aktuelna) i radi unset($_SESSION['forma']).

Dakle stara slika je uvek u $_SESSION['pic'] a nova nesačuvana slika je i u $_SESSION['forma']['pic'] i u samoj formi (base64 a i prikazana):

Code:

<a href="pic_upload.php"><?php echo '<img width=150 src="data:image/jpeg;base64,'.$_SESSION['forma']['pic'].'"/>';?></a>
<input type="hidden" name="pic" value="<?php echo($_SESSION['forma']['pic'])?>" >

To sam ja tako organizovao kao laik pošto WEB/PHP nije nešto čime se bavim posebno često. Ako ima bolja ideja a da nije mnogo komplikovanija od ove moje, raspoložen sam da čujem predloge.
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)29.03.2016. u 20:32 - pre 98 meseci
Na stranu to što postoje bolja, ispravnija i elegantnija rešenja od ovog tvog pristupa
kao što je i napisano u prethodnim postovima, ne bih da ulazim u to...

Ali, jedan detalj mi nije jasan - zbog čega stavljaš $_SESSION['forma']['pic']
u hidden polje kada to već imaš u sesiji, šta će ti uopšte na klijentu,
ili kasnije postovano nazad, šta propuštam?
 
Odgovor na temu

pisac

Član broj: 13046
Poruke: 4578



+3341 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)29.03.2016. u 20:52 - pre 98 meseci
Zato što forma kada se postuje odlazi u na istu stranu u deo koda koji prvo uradi $_SESSION['forma']=$_POST i time automatski čuva sva postovana polja, a zatim proverava ispravnost svih polja i ukoliko neko nije ispravno vraća se opet na formu koja popunjava sva polja sa $_SESSION['forma']['....'], i korisnik može da nastavi da doteruje podatke na taj način u nedogled sve dok ne budu prihvaćeni.

To mi je najlakše i najčistije rešenje.
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)30.03.2016. u 08:48 - pre 98 meseci
A to što bez potrebe šetaš tu sliku od servera ka korisniku i nazad, možda i preko GPRS-a, to nikem ništa? :)
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
82.208.210.*



+218 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)30.03.2016. u 11:33 - pre 98 meseci
Ako sliku vec setas od servera do korisnika nema potrebe da je cuvas u sesiji.

Sta ako neko izmeni to tvoje hidden polje i stavi sliku 1000x1000px i ti prikazujes na home stranici poslednje registrovane korisnike i naravno prikazes tu veliku sliku?
Ne mozes verovati korisniku. Da je u tmp folderu gde cron job brise sve fajlove starije od jednog sata korisnik nikako ne bi mogao da ti zameni sliku.
I uvek je dobro cuvati originalnu sliku ili barem u nekoj velikoj velicini. Mozda je ti smanjis na max 200x200 i dodje redizajn sajta gde hoce 300x300


[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

Mister Big Time
The Consigliere
enterparadajz
Belgrade

Član broj: 15306
Poruke: 4747

Sajt: www.go2bed.net


+43 Profil

icon Re: Skriveni binarni podaci u formi? (ali ne upload)12.04.2016. u 00:50 - pre 97 meseci
Citat:
jablan: Nema potrebe čak ni za identifikatorom, sesije postoje čak i u PHP-u http://php.net/manual/en/reserved.variables.session.php


Da si ovo napisao 1998. pa ajde da se neko zamisli, ali ovako si ispao samo ignorantski infantilan i tendenciozan bez preke potrebe. NHF.


Citat:
pisac: Zato što forma kada se postuje odlazi u na istu stranu u deo koda koji prvo uradi $_SESSION['forma']=$_POST i time automatski čuva sva postovana polja, a zatim proverava ispravnost svih polja i ukoliko neko nije ispravno vraća se opet na formu koja popunjava sva polja sa $_SESSION['forma']['....'], i korisnik može da nastavi da doteruje podatke na taj način u nedogled sve dok ne budu prihvaćeni.

To mi je najlakše i najčistije rešenje.


Mozda jeste tebi najlakse, ali je daleko od najboljeg i najcistijeg.

Nikada ne smete verovati korisniku! Sanitizacija / filtracija obavezno.

Elem, jeste da je base64 standard za transformaciju binarnog sadrzaja i slanja preko HTTP-a, ali postoji jos nacina. Npr. mozes da saljes podatke u hexadecimalnoj notaciji.

Code:

$hexa_slika = bin2hex($slikaRaw);


GET/POST HTTP polje dobija format: zahtev=3b8f0edfe5c4dabae89f2e4fa7d4abc36e1167d30c91e680cc9ffc34ee60d2579bba3ded376087da2ef53dc8ba85b4f2892bb7d39f6c1496b0be412d7d134972114f818a08175575ec104b2d794635c1

Code:

$hex = hex2bin('3b8f0edfe5c4dabae89f2e4fa7d4abc36e1167d30c91e680cc9ffc34ee60d2579bba3ded376087da2ef53dc8ba85b4f2892bb7d39f6c1496b0be412d7d134972114f818a08175575ec104b2d794635c1');
var_dump($hex);

//premda je ovo za slike pravilnije nakon bin2hex transformacije:

$enkoduj = pack("H*", $hexa_zahtev);

 
Odgovor na temu

[es] :: PHP :: Skriveni binarni podaci u formi? (ali ne upload)

[ Pregleda: 2654 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.