PHP - OTURUM veri Mağazası Images?

6 Cevap php

Eğer bir PHP OTURUM bir görüntü saklayabilirsiniz?

Ben sitemde PHP kullanarak bir çok adım kayıt süreci var. Adımlarından biri üzerinde, kullanıcıların şirket logosu (resim) yükleyebilirsiniz.

Son adım kredi kartı işlemektir.

Ben veritabanı, web sunucusu ve görüntü konumu için herhangi bir görüntü yazma önce Yani, ben kendi kredi kartı geçerlidir ve süreç olduğundan emin olmak istiyorum.

Gibi, geçici OTURUM değişken bu görüntü verilerini saklamak mümkün mü?

Eğer değilse, nasıl başka insanların temporaily bu verileri işlemeden önce formlar üzerinde görüntü verilerini saklamak?

Şimdiden teşekkürler.

6 Cevap

Sen ancak oturumun bellek kullanımı görüntülerin boyutuna bağlı olarak artırmak için bekleyebilirsiniz. Bunu yapmak için, bir oturum değişkeni içine dosya içeriğini kaydetmeniz gerekir.

Bu oturumda veri olduğunu ve adımlar tamamlanana kadar görüntü her sayfa görünümü (oturumuna) yeniden edilecek yüklemeden sonra birden adımları var.

Ben şahsen bir ikili dosyayı tutmak için oturumu kullanarak karşı öneriyoruz. Kayıt tamamlanana kadar geçici bir konuma diskteki görüntüyü kaydetme. Ben sadece oturumda geçici dosya yolunu tasarruf sağlayacaktır. Işleminde bu tamamlandığında uygun bir konuma taşımak ve db ekler yapmak.

Ayrıca, özünde, oturum verileri diskte depolanır (veya db) zaten siz de resim dosyasına kaydetmek olabilir bu yüzden bir kez daha sonra bir kez tam bir hareket komutu.

Ben dosyayı diske kaydetmek istiyorum, hatta kullanıcının oturum kimliği kullanarak bir isim de verebiliriz. Sonra bir cron işi olarak çalışacak ve başarılı ödenen asla insanların görüntülerini siler temiz up script bir çeşit olabilir.

Eğer denemek ve oturumda bir görüntü saklamak, bunu yanlış yapıyoruz.

Bir dosya karşıya yüklendiğinde, onu $ _FILES dizisinin geçici bir ad atanır. Ben bu dosyaların tam ömrünü bilmiyorum, ama sen oturumda bu ismi yakalamak ve CC doğrulandıktan sonra kadar move_uploaded_file () çağrısı kapalı koymak mümkün olabilir.

Veya, ilk CC adımı yapabilirdi.

Eğer veri tutmak için varsa, ben base64_encoded dize olarak tutmak öneririz. Doğrudan tarayıcı base64_encode görüntü verilerini gönderebilirsiniz.

Ben de benzer bir durum olurdu eğer ben çok görüntü kaydedilir ve aktif / db olarak görüntü hakkında bilgi tutulması olurdu. Kayıt başarısız nedense eğer, ben daha sonra dosyayı bağlantısını olacaktır. ve bazen görüntülerle eksik bağlantıları bulmak için cron işleri çalıştırın.

Ama gerçekten ikinci seçenek sopa ve tamamen güçlük önlemek için önerecektir.

Evet, bir PHP oturumda bir görüntü saklayabilirsiniz. Bir dize (yani ikili veri) olarak PHP içine alın ve sonra oturumunda koyabilirsiniz.

Bunu sadece olması gereken ve en kısa sürede oturumda bilgilerin büyük parça oturum başlatma yavaşlar çünkü bunu gerekmez olarak silmek gerekir gibi büyük olmak isteyeceksiniz.

You can store image data in session as base encoded one easily. In production server you are supposed to have enough RAM. My application needed upto 40MB of 4 images/apps for update and change before putting in mongoDB. (Base encoding makes 1.3 times larger image size.)

  $tmpNameSS1 = $_FILES["screenshot1"]["tmp_name"];
  $fp      = fopen($tmpNameSS1, 'r');
  $rawDataSS1 = fread($fp, filesize($tmpNameSS1));
  fclose($fp);
  $SS1FileName = $_FILES["screenshot1"]["name"];
  $encodedSS1Data = base64_encode($rawDataSS1);

  registry::update('sCreateSS1Name', $SS1FileName);
  registry::update('sCreateSS1Data', $encodedSS1Data);

A case will be: you have multiple image to uploaded and both client and server validation for size and type. It is faster to fetch from session. After putting in DB null the variable holding the image.

Tarayıcı ile şov bu görüntü gösterecektir:

<img src="data:image/;base64,<?php echo registry::get('sCreateSS1Data'); ?>"/>

Kod bloğunun sonuna ulaştıktan sonra boş dize ile görüntü için oturumu güncelleyebilirsiniz. Kullanıcı metni değiştirmek istediğinde tipik bir vaka doğrulama form alanını güncellenmesi ve. Ayrıca görüntü o başarısız güncellemeleri arasında tarih ne göstermek istiyorum. Eğer yuvarlak gezi kaydetmek istiyorsanız (önerilir) oturumda bazı anlar için verileri tutmak ve kod çıkışına dair sonra bu değeri boşaltın.