Nasıl PHP geçici resim yükleme ile anlaşma yapmak?

4 Cevap php

Kullanıcıların oynanabilir karakterler oluşturabilirsiniz PHP bir online oyun oluşturma. Her karakter bir kullanıcı tarafından yüklenen portre olabilir. Bir oyuncu aynı anda birden fazla karakter olabilir ve onlar için resimler her zaman değiştirilebilir. Doğal olarak, resim resized ve büyük dosyaları engellemek için yeniden sıkıştırılmış gerekir. İşte benim sorunum:

Ne zaman oyuncu (bunun arasında resmi) onun verileri değiştirir ve daha sonra, herhangi bir hata bulunursa, bu vb benzersiz olmayan bir karakter isimleri, boş zorunlu alanlar, gibi şeyler için denetler sunucu tarafında doğrulama tekmeler içeri, "kaydetmek" vurur onlar görüntülenir. Bu durumda formu oyuncu girilen verilerle önceden doldurulmuş olmalıdır, bu yüzden o sadece hatalı biraz değiştirmek zorunda değil, re-tipi herşey. Ama nasıl böyle bir "geçici" devlet resmi kaydedebilirim?

Ben yapamam dosya yükleme alanını önceden doldurmak, tarayıcılar buna izin vermez. Ben geçici bir dosyaya kaydetmek eğer oyuncu sadece kendi tarayıcısını kapatın ve tüm işlemi iptal edebilirsiniz, çünkü resim daha sonra, bazı noktada temizlenmelidir. Ne zaman olmalı? Ve hangi dosya adı Ben geçici dosya için seçmeliyim? Oyuncu iki tarayıcı sekmeleri düzenlemek için aynı karakteri açarsa, onlar (her biri kendi kopyasına sahip olmalıdır) çakışmaması gerekir.

Nasıl bu sorunu çözmek istiyorsunuz?

4 Cevap

Ben geçici bir konuma dosya kaydetmek ve benzersiz bir tanımlayıcı yanı sıra dosya içinde mevcut damgası hem saklamak istiyorum. Sonra kullanıcının oturumunda dosya koydu. Bir kullanıcı başarıyla oluşturuldu veya bunların hesabını güncelledi zaman, kalıcı konuma görüntü dosyasını kaydedin ve geçici dosyayı kaldırın. Sen sona erme daha eski herhangi bir dosya (belki bir saat) silme, geçici dizini tarama ve damgaları kontrol etmek için bir cron işlemi çalıştırabilirsiniz.

Eğer bir cron işi çalıştırmak için yapamıyorsanız, her zaman sadece dizin temizlik başarılı oluşturmak / güncelleme doğrulama var, her zaman başlatmak olabilir. Bu biraz daha verimsiz olabilir (ekstra dizin okur ve muhtemelen her başarılı sunulması için dosya işlemleri) ama trafik bir sürü uğraşıyoruz sürece, muhtemelen farkına bile olmaz belki.

Görüntülere başvuruları tutmak için bir tablo oluşturun.

Bir dosya yüklenir zaman geçerli bir görüntü ise, vb, tüm yeniden boyutlandırma yapmak ve dosyasına işaret tablosunda bir kayıt oluşturun.

Form verileri ile etrafında referans kaydın id geçmektedir. Eğer formu tekrar görüntülemek zaman görüntüyü ekrana, böylece kullanıcı onlar yeniden yükleme gerekmez bilir.

Sonunda yeni bir karakter nesnesi kabul ettiğinizde, avatar_id ayarlamak ya da her neyse.

(De diskteki dosyaları silme) yetim görüntü kayıtları itlaf düzenli bir cron işi çalıştırın.

Her zaman resmin adını tutmak için bir engelli metin kutusunu doldurmak olabilir - bu göz giriş alanını doldurmak, ama hiçbir şey daha iyi olmaz. Düzenleme için, her kullanıcının karakterler için bazı "Modifing" sütunu oluşturabilirsiniz çatışmaları önlemek için, ve bir karakter düzenleme istek üzerine true değerini değiştirin. Kullanıcı karakterini kaydeder, false geri ayarlayın. "Modifing" false olduğunda her düzenleme isteği için, onu vermek.

Ben formda olursa olsun hata, hemen resmi güncellemeden veya ayrı bir forma görüntünün güncellenmesi ayıran ya da tavsiye ederim. Bu şekilde karmaşık devlet makineleri olmadan iki sorunların kurtulmak ve temizlik alırsınız.