[ timberman @ 26.09.2016. 21:55 ] @
Pošto nisam vešt sa php mučim se već dva dana da prilagodim jedan red koda. Naime, pomoću ove( i još nekih skripti) korisnik može da zipuje folder. Ja bih želio kada se taj folder zipuje da mu ime korisnika bude naziv. To je red 1304 koji nikako da sredim. U redu 734 imam f-ju getUserNameFromId($id), pretpostavljam da pomoću nje treba da dobijem ime korisnika, al nikako da to uklopim u red 1304. Šta god da upišem tu kao naziv mi vraća "array.zip". Ako neko može da pomogne, u prilogu je fajl. Hvala
[ Predrag Supurovic @ 27.09.2016. 04:44 ] @
getUserNameFromId($id) očigleno ne vraća ime kao string nego kao niz.

Prvo rezultat te funkcijr smesti u neku promenljivu pa sa print_r() pogledaj sta sve dobijaš u tom nizu i onda ćeš znati šta da uzmeš iz niza da bi napravio ime datoteke.

[ timberman @ 27.09.2016. 05:52 ] @
Probao sam al nisam dobio. Možete li mi reći kako i u kom redu da smestim u promenljivu, ja sam probao da mi 1304 red izgleda ovako $name = print_r($res['name']).'.zip'; ali nisam uspio.
[ Predrag Supurovic @ 27.09.2016. 06:09 ] @
Ova konstrukcija $name = print_r($res['name']).'.zip'; me je uverila da je pomagati ti gubljenje vremena, pošto očigledno nisi rad da sam pronađeš i pročitaš ni najosnovnije stvari.
[ timberman @ 27.09.2016. 06:50 ] @
Rekoh da ne poznajem php, i tražio sam samo da mi neko pomogne oko izmene koda. Možda neko i pomogne a Vama svakako hvala.
[ Predrag Supurovic @ 27.09.2016. 07:27 ] @
Neznanje nije opravdanje za netrud.
[ timberman @ 27.09.2016. 07:42 ] @
Tačno, ali ni "znanje" nije opravdanje za bahato ponašanje. Kad već nećete da pomognete ne morate držati ni predavanje. Rekoh da mi treba samo za taj red tako da mi se ne isplati učiti.
[ Nemanja Avramović @ 27.09.2016. 12:41 ] @
Ubaci ovo u red iznad i postavi ovde šta ti vraća:

Code:
$temp = getUserNameFromId($id); var_dump($temp); die;
[ Predrag Supurovic @ 27.09.2016. 12:45 ] @
Citat:
timberman:
Tačno, ali ni "znanje" nije opravdanje za bahato ponašanje. Kad već nećete da pomognete ne morate držati ni predavanje. Rekoh da mi treba samo za taj red tako da mi se ne isplati učiti.


Bahato ponasanje? Rekao sam ti sta treba da uradis a ti ako vec nisi razumeo nisi se ni potrudio da procitas opis funkcije print_r().

Ovaj forum je na glasu po tome sto se na njemu razmenjuje znaje i moze dosta toga da se nauci, ali ne i da dobijas gotova resenja a da ne moras ni prstom da mrdnes. Ako se ko ovde bahati to si ti. Ako ti treba pomoc, onda moras pokazati da tu pomoc zavredjujes (pre svega sopstvenim trudom da resis problem i da nesto naucis) a ne da vredjas nekoga ko ti pomaze zato sto neces da se potrudis da razumes i naucis.


[ ptosic @ 27.09.2016. 12:56 ] @
$name = getUserNameFromId($id);

$name = $name['name'].'.zip';

ili ako zelis da zamenis prazna mesta u $name :

$name = str_replace(' ','_',$name['name']).'.zip';


Ili kao sto je rekao Nemanja Avramović uradi var_dump(getUserNameFromId($id)); i posalji rezultat ovde
[ timberman @ 27.09.2016. 13:35 ] @
Nemanja, ubacio sam ovo što ste rekli i vraća mi bool(false) .
Ptosic, svoj red $name = getUserNameFromId($id).'.zip'; sam zamenio sa dva Vaša

$name = getUserNameFromId($id);
$name = $name['name'].'.zip';


i kao naziv fajla mi vraća .zip
Predraže, rekao sam da ne znam php, i trebalo bi mi dosta vremena da naučim da bih promenio samo jedan red, a ne planiram se baviti sa php-om, a Vi odmah sudite da je neko izgubljen slučaj. Zato sam rekao ako nekome ne želite da pomognete, nije problem, al ne odmažite,
[ ptosic @ 27.09.2016. 13:46 ] @
To je tako kada gledam na brzinu ... vidim da funkcija getUserNameFromId() vec vraca $res['name'] vec. Hajde da probamo jos jednu stvar :

ispod linije (trebalo bi da je 747 kod tebe ) : $res = Database::fetch_array($result);

stavi var_dump($res);

da vidim sta dobijas iz baze
[ timberman @ 27.09.2016. 13:58 ] @
Vraća mi

array(2) { ["name"]=> string(13) "Marko Markovic" [0]=> string(13) "Marko Markovic" } array(2) { ["name"]=> string(13) "Marko Markovic" [0]=> string(13) "Marko Markovic" } array(2) { ["name"]=> string(13) "Marko Markovic" [0]=> string(13) "Marko Markovic" } array(2) { ["name"]=> string(13) "Marko Markovic" [0]=> string(13) "Marko Markovic" }

gdje je Marko Markovic logovani korisnik.
[ ptosic @ 27.09.2016. 15:01 ] @
po ovome bi ti morao da dobijes name kao string u liniji 1304.

To mozes i da proveris, ispod te linije stavi var_dump($name)

znaci ispod $name = getUserNameFromId($id).'.zip';

[ timberman @ 27.09.2016. 15:45 ] @
Ako sam Vas dobro shvatio Vi kažete da bi kod koji sam stavio u prvom postu trebalo da radi?
Kad stavim
$name = getUserNameFromId($id).'.zip';
var_dump($name);
ne dešava se ništa, radi normalno samo kada preuzimam fajl daje mu naziv .zip
Inače, ranije je u redu 1304 stajalo
$name = 'Tekst'.api_get_utc_datetime().'.zip';
i vraća mi naziv npr. tekst2016-09-27-143209.zip
ako ispod
$name = 'Tekst'.api_get_utc_datetime().'.zip';
stavim
var_dump($name);
ništa se ne dešava, radi normalno i vraća tekst2016-09-27-143209.zip
[ Nemanja Avramović @ 27.09.2016. 15:50 ] @
Ako ti onaj kod koji sam ti ja dao vraća boolean false, to znači da korisnik sa tim ID-om nije pronađen (niko nije ulogovan?)

Gledajući na brzinu funkciju getUserNameFromId($id) izgleda da bi trebalo da vrati string, a iz tvoje prve poruke zvuči kao da vraća niz. Proveri šta onaj moj kod vraća kad je korisnik ulogovan.
[ timberman @ 27.09.2016. 16:01 ] @
Sada sam ponovo iznad 1304 stavio
$temp = getUserNameFromId($id); var_dump($temp); die;
i vraća mi bool(false). Korisnik je ulogovan jer samo tako može pristupiti sekciji za download.
[ timberman @ 27.09.2016. 16:29 ] @
Ljudi, hvala puno, sredio sam uz vašu pomoć. U 1304 red sam uneo
$name = getUserNameFromId(api_get_user_id()).'.zip';
i radi.
[ timberman @ 27.09.2016. 19:15 ] @
Da ne bih otvarao temu pitaću ovde, pošto menjam isti kod. Hteo bih da mi ovaj zip fajl bude zaštićen lozinkom. Vidim da ovaj moj kod za zipovanje koristi klasu (ako je to klasa) PclZip
Code (php):
$zip = new PclZip($temp_zip_file);
    foreach ($files as $value) {
        $zip->add(
            api_get_path(SYS_COURSE_PATH).$_course['path'].'/dropbox/'.$value['filename'],
            PCLZIP_OPT_REMOVE_ALL_PATH,
            PCLZIP_CB_PRE_ADD,
            'my_pre_add_callback'
        );
    }

Da li neko zna da li se pomoću PclZip može zaštititi fajl.
Video sam da to može da se uradi pomoću klase ZipArchive, al sad ne znam koliki je posao da umesto PclZip samo u ovom delu koda koristim ZipArchive. Ako je neko radio sa tim klasama ako može da pomogne.
[ dusans @ 27.09.2016. 22:39 ] @
Ljudi ti dali mali prst, sad bi hteo celu šaku... sedi pa nauči.
[ timberman @ 27.09.2016. 22:53 ] @
Ljudi su mi stvarno puno pomogli, al na kraju sam i ja shvatio šta fali i sam završio. U jednom se slažemo, oni su ljudi, hoće da pomognu, za razliku od ovih drugih koji bi na tuđem neznanju da se prave pametni. Pitao sam jel radio ko sa ovim klasama al i to neki iskoriste samo da kažu nešto "pametno".
[ Nemanja Avramović @ 27.09.2016. 23:34 ] @
Ako je to ova klasa: https://github.com/ivanlanin/pclzip

...

Citat:
4 - Known bugs or limitations
=============================

Please publish bugs reports in SourceForge :
http://sourceforge.net/tracker/?group_id=40254&atid=427564

In Version 2.x :
- PclZip does only support file uncompressed or compressed with deflate (compression method 8)
- PclZip does not support password protected zip archive
- Some concern were seen when changing mtime of a file while archiving.
Seems to be linked to Daylight Saving Time (PclTest_changing_mtime).
[ timberman @ 28.09.2016. 05:31 ] @
Jeste. Da li je neko radio sa ovom drugom klasom, ili možda zna drugi način da se zaštiti dokument?
Nemanja, hvala na informaciji.
[ brux002 @ 28.09.2016. 08:46 ] @
Mozes da zastitis bilo koji fajl uz pomoc funkcije mcrypt_encrypt

Znaci prvo procitas fajl sa file_get_contents().

Potom dobijeni data enkriptujes sa mcrypt_encrypt (tutorijale mozes naci po netu - https://www.leaseweb.com/labs/2014/02/aes-php-mcrypt-key-padding/ ovo jedan od mnogih)

Potom dobijeni data opet vratis u fajl sa file_put_contents().

Postupak dekripcije je slican samo obrnut.
[ timberman @ 28.09.2016. 13:40 ] @
Hvala Gorane, pogledaću mada već vidim da je ovo preteško za mene.
[ Nemanja Avramović @ 28.09.2016. 20:20 ] @
To će kreirati ZIP arhivu sa enkriptovanim podacima ali i dalje bez šifre, plus ti podaci moraju da se dekriptuju kad se arhiva raspakuje.

Koliko sam uspeo da izguglam, trenutno ne postoji elegantno rešenje da se iz PHP-a generiše ZIP arhiva zaštićena šifrom, osim da se preko shell_exec() ili slične funkcije pozove sistemska ZIP aplikacija koja može da kreira ZIP i postavi šifru, ali to neće raditi otprilike ni na jednom shared hostingu.
[ timberman @ 28.09.2016. 22:38 ] @
Hvala Nemanja, da ne pokušavam uzalud. Hvala svima na pomoći.