Veri göndermek için flaş kullanırken session_id güvenilmez Ayarı

0 Cevap php

Benim yerel kalkınma sunucu ve uzak web sunucusu hem de PHP 5.3.2 sürümünü kullanıyorum.

I'm trying to use uploadify to upload several files to the server. In the receiving script, I would like to use data stored in the session, however because uploadify sends files to the script using flash it doesn't send the session cookie.
The workaround for this problem is to get uploadify to GET or POST the session id to the script, however I'm finding this very unreliable. In my script I have the following:

<?php
ini_set('session.use_only_cookies', FALSE);
ini_set('session.use_trans_sid', TRUE);
session_name('SESSNAME');
session_start();
print_r($_SESSION);

Komut url script.php gibi bir şeydir? SESSNAME = sessionid ve ben yukarıdaki gibi şeffaf oturum kimlikleri kullanarak ve aynı zamanda elle session_id ($ _GET ['SESSNAME']) kullanarak id ayarı denedim.

Tarayıcı ile doğrudan komut dosyasına erişmesini ve elle oturum tanımlama silseniz bile, birlikte geçerli oturum kimliğini göndererek bu always çalışır. Ayrıca her zaman benim yerel sunucuda uploadify ile çalışır. Uzak sunucuda Uploadify kullanırken Ancak, tamamen rastgele, zaman yaklaşık% 20 çalışır. Hiçbir model yoktur. Ben ilave zaman daha sık çalışmak gibiydi

ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);

komut dosyası, ancak bu sadece bir tesadüf olabilir.

Herhangi bir fikir?

Local server info: hxxp://www.dur.ac.uk/n.r.brook/info_local.php
Remote server info: hxxp://www.dur.ac.uk/n.r.brook/info.php
(sorry for hxxp, don't have the privileges to post multiple links!)


Some speculation...

Doing some digging around and looking at the headers the script is receiving, I think I may have determined the issue.
You need to send the session id when using uploadify because flash does not send cookies when using the FileReference.upload() (I think!) method. However, as well as the session id, in load balanced environments (such as the remote server) there is also the BALANCEID cookie which determines which server the user is currently working with. Flash doesn't send this cookie so the load balancer sometimes sends the request to a different server, and on this server the session does not exist.

Ben oturumu yazdırdıktan sonra bir oturum değişkeni ayarlayarak bu davranışı test ettik. Ilk başta boş bir dizi olsun, ama değişken birkaç tekrarlar görünen başlar - bu yapıyor ve tekrar tekrar dosya gönderme sorunu sergiler.

Yukarıdaki tüm doğruysa Yani, o benim soru yük dengeleyici kullanan için hangi sunucu bilir böylece yükleme ile bu verileri göndermek için flaş almak için ne yapabilirim? Ya da bu bir kayıp nedenidir?


The answer?

After further research, I found the following post - hxxp://swfupload.org/forum/generaldiscussion/977
This suggests there is no way cookies can be sent with FileReference.upload() and therefore uploadify cannot be used with load balanced servers if you want to use session data. However, I think I will now attempt a solution which saves data linked to the session id to a file. The uploadify receiving script can open this file and pull out the required data.
This is my first experience working with anything Flash based, it has not improved my opinion of the technology!

0 Cevap