Oturumlar ve Uploadify

8 Cevap php

Ben Uploadify kullanıyorum ve benim php dosyalarında oturumları ayarlanamaz, benim script şöyle:

    $("#uploadify").uploadify({
        'uploader'       : '/extra/flash/uploadify.swf',
        'script'         : '/admin/uploads/artistsphotos',
        'scriptData'     : {'PHPSESSID' : '<?= session_id(); ?>'},
        'cancelImg'      : '/images/cancel.png',
        'folder'         : '/img/artists',
        'queueID'        : 'fileQueue',
        'auto'           : false,
        'multi'          : true,
        'onComplete'     : function(a, b, c, d, e){

        },  
        'onAllComplete': function(event,data){
        	$bla = $('#art').find(':selected',this);
        	$fi  = $bla.val();
			 $.ajax({
			   type: "POST",
			   url: "/admin/uploads/artistsphotosupload",
			   data: "artist="+$fi,
			   success: function(msg){
			     console.log(msg);
			   }
			 });
     }
});

Ve php i denerseniz:

$_SESSION['name'] = 'something';

I can't access it in another file.and i have session_start(); activated Any solutions?

8 Cevap

Uploadify flash player tarafından oluşturulan oturum kimliği sahibi çünkü bu çözemez. Diğer bir deyişle flash player, yeni bir kullanıcı olarak Uploadify komut dosyası erişmek ve yeni bir oturum alır. Bunu çözebilecek tek yolu Uploadify script posta yoluyla geçerli sayfa session_id geçmektir.

Zaten vb giriş için bir oturum odaklı PHP arkaplana sahip, özellikle ben, uygulamak çok kolay bir çözüm bulundu:

Sadece jQuery açıklamada şu kodu yazmak:

'script'    : '/upload.php?<?= session_name(); ?>=<?= session_id(); ?>',

sihirli geçerli oturum adı ve oturum id eklemek hangi.

Bu işe yarayabilir, ancak güvenlik açısından gerçekten kötü bir uygulamadır. Bu, geçerli bir sessionID olan herkes sadece Sessionıd değiştirerek o oturuma kimliğine bürünmek için izin verecek. (Sadece arka uç kod bilinen) gizli bir anahtar ile oturum kimliği bile temel senkron şifreleme yapmak için daha iyi olacak ve daha sonra upload.php senaryo üzerinde şifresini olacaktır.

Şu anda Uploadify + PHP oturumları ile benzer bir sorun yaşıyorum.

() Ben Uploadify flaş uygulama sunucusuna kadar dosya verilerini gönderir, bu yükleme komut için doğru session_id geçtiği izleyebilirsiniz hatalar.log kullanma:

'ScriptData' {'session_id' session_id}

(Daha önce ayarlanmış session_id: var session_id ='' ;)

Yani, bu bana evet, Uploadify komut dosyası için benim sayfaları ve oturum kimliği için session id aslında aynı olduğunu kontrol etmenizi sağlar.

Ancak, komut dosyası çalışır ve ben tarafından oturumu başlattığınızda:

session_id($session_id); session_start();

Her nasılsa TÜM oturum verileri (I yenileme ve veri her isteği ile büyümeye izleyebilirsiniz böylece ben de bir diziye oturum verilerini ayar oldum ben Uploadify kullandığınızda, o zaman, süpürdü) imha edilir.

Ben bu :/ hata ayıklama konusunda hiçbir ipucu var

edit: Suhosin oturumu yok edilebilir:

http://www.uploadify.com/forum/viewtopic.php?f=7&t=2062

Harici önce bu ekleyin. Js Uploadify uygulama dosyası.

<!-- Get sesssionId -->
 <script type="text/javascript" charset="utf-8">
  var sessionId = "<?php echo session_id(); ?>";
 </script>

Sonra Uploadify komut bunu ekleyin.

$('#uploadify').uploadifySettings('scriptData', {'sessionId': sessionId});

PHP yükleme komut buna ihtiyacı var.

// Start session
 session_id($_POST['sessionId']);
 session_start();

Hepsi bitti!

Güvenlik ve yöntemin hem ilgili tüm parlak yanıtları okuduktan sonra, ben soruna kendi yolumu çalıştık, ve ben başkalarının yararına burada yayınlayacağız. Çözüm için alt atlayın, doğru bütün mesele bu? ;).

Uploadify uses it's own default session...

Bu uploadify.php erişirken, daha önce depolanmış olan herhangi bir oturum değişkenleri (Uploadify) oturum geçerli erişilebilir anlamına gelir bir sıkıntıdır. Siz aslında yaptığınız oturuma tamamen ilgisiz bir oturum nesnesi bakıyoruz. Aaah, bu yüzden biz ne yapacağız, javascript geçirin?

Sen javascript ile oturuma başvuru geçirmek "olabilir", ama javascript istemci (kullanıcı) tarafı ve sunucu kapalı gönderilmeden önce bu nedenle, bir kullanıcı oturum başvurusunu değiştirebilirsiniz. O etkili sahte olabilir onun oturum kimliği. Bu, en az benim uygulama durumunda, aslında terrifyingly tehlikelidir.

The solution...

AFAIK bir kimliği tarafından başvurulan olamaz da kendi üzerinde varsayılan session_start (), KULLANMAYIN. Bunun yerine, session_start kullanmak her zaman (), (Ben şimdi ne olursa olsun iyi bir uygulamadır hissediyorum), kullanmak istediğiniz oturum için bir kimlik ayarlayın.

EVERY SINGLE TIME you wish to start a session

session_id ("IDHere");

session_start ();

IMPORTANT: Setting a unique session for each user.

Oturumlar pervasız terk ile bağlantı sunucu ve diğer her müşteri arasında ortak değişkenler vardır. Sitenizin her kullanıcı için benzersiz olan oturum değişkenleri saklamak istiyorsanız, session_id bu kullanıcı için tamamen benzersiz, dinamik kimliği göreli bir çeşit HAS. Bu çerez, ya da daha güvenli bir veritabanı (kullanıcının benzersiz kimliği?) Ulaşılabilir.

Edit: biraz araştırma sonra, (bir kimliği olmadan) varsayılan oturumları SessionID "PHPSESSID" kullanmak gibi görünüyor. Bu yüzden uploadify.php de oturumu başlamadan önce, session_id ("PHPSESSID") ayarı, henüz denemedim, ancak çok sorunu çözebilir.

Ama bir eklenti sadece bu yüzden aynı oturum içinde size benzer bir oturum değişkeni kullanmak olur yine, sorunlar bahar olabilir, bu yüzden yine de o kendine özgü kimliği ile oturum yapmak için muhtemelen en iyisidir.

id = "id_usuario_logueado" and value $_SESSION[id] ile belgede bir etiket gizlemek koydu

sadece jQuery açıklamada şu kodu yazmak:

'scriptData': {'id_usuario':$('#id_usuario_logueado').text()},

Daha sonra php

$id_usuario = $_POST['id_usuario'];

Sadece kimlik doğrulaması gerekmez yeni bir denetleyici ya da komut dosyası oluşturmak - backend komut kimlik ihtiyacı ve 302 sorun alacak yönlendirir eğer ben, çözüm bulundu.

Then, from the code above change 'script' : '/admin/uploads/artistsphotos', To 'script' : '/admin/uploads-unprotected/artistsphotos/id=< ?php echo md5($theUserSessionId); ?>',

Sonra arka uç komut sadece geçildi kimliği kontrol ve farklı bir strateji ile yükleme isteği doğrulamak.