Autor Zpráva
Flek
Profil
Dobrý den,
řeším zajimavý problém s CI, doufám že se zde najde někdo kdo tento framework používá. Vytvářím stránky pro nahrávání fotek a obrázků. Pro nahrávání jsem zvolil FancyUpload (Mootools + Flash).

Můj problém je takový - ve scriptu pro zpracování uploadu se získané informace o obrázku ukládají do databáze (name, user_ip, user_id). Script volá FancyUpload. Do CI mám přidělanej model pro získávání informací o uživateli z databáze. Pokud ale script zavolá FancyUpload tak mi tento model pro získání informací o uživateli nefunguje (vrací stále 0), pokud jej ale zavolám klasicky z prohlížece, vrátí ID právě přihlášeného uživatele. Už si stímto lámu hlavu poměrně dlouho a netuším v čem by mohl být problém, proto se obracím na ty zkušenější, kteří by mohli poradit.

Ve scriptu pro zpracování volám toto:

$u_id = $this->user_model->userid();


V user_modelu tato funkce vypadá takto:

function userid() {

                if ($this->islogedin()) {
                        return $this->session->userdata('user_id');
                } else {
                        return NULL;
                }
        }


Děkuji za připadné rady.
Pan X
Profil
Flek:
Tendle kousek kódu asi stačit nebude, můžeš postnout ještě ten kousek z FancyUpload kde voláš toto id?

Ještě mě napadlo, nevymazává FancyUpload nějakým způsobem session?. Jestli nedochází ke kolizi jmen. FancyUpload jsem nikdy nepoužíval, ale určitě to bude nějaká maličkost

Zkus si nechat vypsat všechny data uložená v session někde v FancyUpload
Flek
Profil
Tady je JS, který zprovozňuje upload:
        window.addEvent('domready', function() {

                // One Roar instance for our notofications, positioned in the top-right corner of our demo.
                var log = new Roar({
                        container: $('demo'),
                        position: 'topLeft',
                        duration: 5000
                });
	
                var link = $('select-0');
                var vysledek = $('vysledek');
                var test = $('infotext');
                var linkIdle = link.get('html');
	
                function linkUpdate() {
                        if (!swf.uploading) return;
                        var size = Swiff.Uploader.formatUnit(swf.size, 'b');
                        test.set('html', '<span class="small">' + swf.percentLoaded + '% z ' + size + '</span>');
                }

                // Uploader instance
                var swf = new Swiff.Uploader({
                        path: '/assets/fancy/Swiff.Uploader.swf',
                        url: '/upload/',
                        verbose: true,
                        queued: false,
                        multiple: false,
                        target: link,
                        instantStart: true,
                        typeFilter: {
                                'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'
                        },
                        fileSizeMax: 2 * 1024 * 1024,
                        onSelectSuccess: function(files) {
                                if (Browser.Platform.linux) window.alert('Varování: Jelikož Linux a Adobe Flash spolu moc nepracují, je možné že během nahrávání obrázku se průběh zasekne.');
                                log.alert('Nahrávám..', 'Obrázek <em>' + files[0].name + '</em> (' + Swiff.Uploader.formatUnit(files[0].size, 'b') + ')');
                                this.setEnabled(false);
                                $$('#loader').set('html', '<img style="margin-right: 5px;" src="/assets/images/ajax-loader.gif" />');
                        },
                        onSelectFail: function(files) {
                                log.alert('<em>' + files[0].name + '</em> nebyl přidán!', 'Prosím zvolte menší obrázek než je 5MB. (Error: #' + files[0].validationError + ')');
                        },
                        appendCookieData: true,
                        onQueue: linkUpdate,
                        onFileComplete: function(file) {
			
                                // We *don't* save the uploaded images, we only take the md5 value and create a monsterid ;)
                                if (file.response.error) {
                                        log.alert('Nahrávání se nazdařilo..', 'Uploading <em>' + this.fileList[0].name + '</em> failed, please try again. (Error: #' + this.fileList[0].response.code + ' ' + this.fileList[0].response.error + ')');
                                } else {

                                        var thumb_link = JSON.decode(file.response.text, true).thumb;
                                        var moo = JSON.decode(file.response.text, true).moo;
                                
                                        vysledek.set('html', '<img src="' + thumb_link + '"/>' );
                                        log.alert('Nahrávání bylo úspěšné :-)', 'MD5 hash pro váš obrázek <em>' + this.fileList[0].name + '</em>: <code>' + moo + '</code>.<br />');
                                        $$('#loader').set('html', '<img style="margin-right: 5px;" src="/assets/images/done_square.png" />');
                                }
			
                                file.remove();
                                this.setEnabled(true);
                        },
                        onComplete: function() {
                                link.set('html', linkIdle);
                                var clickable=$$('.inp');
                                clickable.highlight('#ffeb41');
                        }
                });

                // Button state
                link.addEvents({
                        click: function() {
                                return false;
                        }

                });
        
		

        });

        //]]>
</script>


Nechal jsem si vypsat všechna session, ale výsledek byl prázdný.
Pan X
Profil
Měl jsem namysli php kód :)

Nemaže ten uploader někde session?
Flek
Profil
Právě že nemaže, pokud ten script zavolám klasicky z prohlížeče, v pořádku se vše uloží do DB (s přednastaveným textem). Ale začal jsem googlovat po problémech s session a CI a našel jsem pár odkazů (http://digitarald.de/forums/topic.php?id=126 ; http://www.google.cz/search?sourceid=chrome&ie=UTF-8&q=FancyUpload+sessions) Tak to zkusím prolézt.. :)
Flek
Profil
Nakonec jsem to vyřešil pomocí tohoto, sice žádný extra řešení ale na vině je FancyUpload..

http://themeaty.wordpress.com/2009/06/03/flash-fancyupload-session-problem/
Pan X
Profil
Čekal jsem že bude chyba uvnitř, ale že by se to dalo takhle obejít mě fakt nenapadlo

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0