lostyazilim
tr.link

en fazla 5 resim seçme nasıl yapılır?

6 Mesajlar 1.008 Okunma
acebozum
tr.link

gokrtl gokrtl mekatronik.org Kullanıcı
  • Üyelik 11.11.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek Özel Güvenlik Görevlisi
  • Konum Antalya
  • Ad Soyad G** K**
  • Mesajlar 122
  • Beğeniler 19 / 24
  • Ticaret 0, (%0)
Merhaba,
Sorunsuz çalışan resim upload sistemim var.
Kullanıcının resim yüklerken en fazla 5 tane seçip yüklemesi gerekiyor.
inputa müdahale edilerek yapılabilir mi? yoksa kodlara mı müdahale etmek gerekir?

inputum bu şekildedir;

 

 

www.mekatronik.org/forum
elektronikssl
webimgo

ERENKYI ERENKYI WM Aracı Kullanıcı
  • Üyelik 11.07.2017
  • Yaş/Cinsiyet 26 / E
  • Meslek Öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad E** K**
  • Mesajlar 169
  • Beğeniler 8 / 45
  • Ticaret 1, (%100)
PHP ile server-side kontrol yapmayı unutmayın.

https://jsfiddle.net/ERENKYI/kr4bmqy9/1/
 

 

gokrtl gokrtl mekatronik.org Kullanıcı
  • Üyelik 11.11.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek Özel Güvenlik Görevlisi
  • Konum Antalya
  • Ad Soyad G** K**
  • Mesajlar 122
  • Beğeniler 19 / 24
  • Ticaret 0, (%0)
ERENKYI ilginize teşekkürler. Mümkünse js bulaşmadan(Çünkü js iyi bilmediğimden aradan zaman geçince kodun ne işe yaradığını unutuyorum) daha resimleri seçerken 5 tıktan sonra 6.ya izin vermesin istiyorum.
Resim upload kodlarım ise aşağıdaki gibidir;

class ResimIslem{

public function watermark($filigran, $source_file_path, $output_file_path )
{
list( $source_width, $source_height, $source_type ) = getimagesize( $source_file_path );

if ( $source_type === NULL )
{
return false;
}

switch ( $source_type )
{
case IMAGETYPE_GIF:
$source_gd_image = imagecreatefromgif( $source_file_path );
break;
case IMAGETYPE_JPEG:
$source_gd_image = imagecreatefromjpeg( $source_file_path );
break;
case IMAGETYPE_PNG:
$source_gd_image = imagecreatefrompng( $source_file_path );
break;
default:
return false;
}

$overlay_gd_image = imagecreatefrompng($filigran);
$overlay_width = imagesx( $overlay_gd_image );
$overlay_height = imagesy( $overlay_gd_image );

imagecopymerge(
$source_gd_image,
$overlay_gd_image,
$source_width - $overlay_width,
$source_height - $overlay_height,
0,
0,
$overlay_width,
$overlay_height,
60
);

imagejpeg( $source_gd_image, $output_file_path, 100 );

imagedestroy( $source_gd_image );
imagedestroy( $overlay_gd_image );
}


public function resim_boyutlandir($resim,$k_resim,$max_en=1920,$max_boy=1200){
// içeriği başlat..
$resimdosyasi= pathinfo($resim);
$uzanti=$resimdosyasi["extension"];
ob_start();
// ilk boyutlar..
$boyut = getimagesize($resim);
$en = $boyut[0];
$boy = $boyut[1];
// yeni boyutlar..
$x_oran = $max_en / $en;
$y_oran = $max_boy / $boy;

// boyutları orantıla..
if (($en <= $max_en) and ($boy <= $max_boy)){
$son_en = $en;
$son_boy = $boy;
}
elseif (($x_oran * $boy) < $max_boy){
$son_en = $max_en;
$son_boy = ceil($x_oran * $boy);
}
else{
$son_en = ceil($y_oran * $en);
$son_boy = $max_boy;
}

// uzantıya göre yeni resmi yarat..
switch($uzanti){
// jpg ve jpeg uzantılar için..
case 'jpg':
case 'jpeg':
// eski ve yeni resimler..
$eski = imagecreatefromjpeg($resim);
$yeni = imagecreatetruecolor($son_en,$son_boy);
// eski resmi yeniden oluştur..
imagecopyresampled($yeni,$eski,0,0,0,0,$son_en,$son_boy,$en,$boy);
// yeni resmi bas ve içeriği çek..
imagejpeg($yeni,null,85);
break;
// png uzantılar için..
case 'png':
$eski = imagecreatefrompng($resim);
$yeni = imagecreatetruecolor($son_en,$son_boy);
imagealphablending($yeni, false);
imagesavealpha($yeni, true);
$transparent = imagecolorallocatealpha($yeni, $son_en, $son_boy, $en, $boy);
imagefilledrectangle($yeni, 0, 0, $son_en, $son_boy, $transparent);
imagecopyresampled($yeni,$eski,0,0,0,0,$son_en,$son_boy,$en,$boy);
imagepng($yeni,null,-1);
break;
// gif uzantılar için..
case 'gif':
$eski = imagecreatefromgif($resim);
$yeni = imagecreatetruecolor($son_en,$son_boy);
imagealphablending($yeni, false);
imagesavealpha($yeni, true);
$transparent = imagecolorallocatealpha($yeni, $son_en, $son_boy, $en, $boy);
imagefilledrectangle($yeni, 0, 0, $son_en, $son_boy, $transparent);
imagecopyresampled($yeni,$eski,0,0,0,0,$son_en,$son_boy,$en,$boy);
imagegif($yeni,null);
break;
default:
$eski=null;
$yeni=null;
break;
}

$icerik = ob_get_contents();
// resimleri yoket ve içeriği çıkart..
ob_end_clean();
imagedestroy($eski);
imagedestroy($yeni);

$dosya = fopen($k_resim,"w+");

fwrite($dosya,$icerik);

fclose($dosya);

return $icerik;
}


private function adlandir($baslik){
$bul = array('Ç', 'Ş', 'Ğ', 'Ü', 'İ', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', '-');
$yap = array('c', 's', 'g', 'u', 'i', 'o', 'c', 's', 'g', 'u', 'o', 'i', ' ');
$perma = strtolower(str_replace($bul, $yap, $baslik));
$perma = preg_replace("@[^A-Za-z0-9\-_]@i", ' ', $perma);
$perma = trim(preg_replace('/s+/',' ', $perma));
$perma = str_replace(' ', '-', $perma);
return $perma;
}

public function resim_upload($file_name,$file_tmp,$file_error,$file_path,$name,$en=1920,$boy=1200,$filigran=null){

$resimdosyasi= pathinfo($file_name);
$uzanti=$resimdosyasi["extension"];

$yeni_ad = $this->adlandir($name);

$yeni = $yeni_ad.'.'.$uzanti;

$max_en = $en;
$max_boy = $boy;

$b_resim = $file_path.'/orijinal-'.$yeni;
$k_resim = $file_path.'/'.$yeni;

if($uzanti=='jpg' or $uzanti=='jpeg' or $uzanti=='png' or $uzanti=='gif'){

if($file_error==0){
move_uploaded_file($file_tmp,$b_resim);

$this->resim_boyutlandir($b_resim,$k_resim,$max_en,$max_boy);

@unlink($b_resim);
///chmod($file_path, 755);

if($filigran!=null){
$this->watermark($filigran,$k_resim,$k_resim);
}

return $yeni;
}
else return $file_error;
}

else{
@unlink($k_resim);
return false;
}
}
}


?>
 

 

www.mekatronik.org/forum

ERENKYI ERENKYI WM Aracı Kullanıcı
  • Üyelik 11.07.2017
  • Yaş/Cinsiyet 26 / E
  • Meslek Öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad E** K**
  • Mesajlar 169
  • Beğeniler 8 / 45
  • Ticaret 1, (%100)
HTML5'da file upload için maxfile gibi bir property yoktu yanlış hatırlamıyorsam. Yani javascript olmadan client-side kontrol imkansız. PHP kodunuz derken form kodundan bahsediyordum. Orada dosya sayısının <= 5 olma durumunu kontrol edin çünkü javascript tarayıcdan düzenlenebilir.
 

 

wmaraci
wmaraci

HapyMan HapyMan Full Stack Developer Kullanıcı
  • Üyelik 14.05.2016
  • Yaş/Cinsiyet 32 / E
  • Meslek What do you do exactly ?
  • Konum İstanbul Avrupa
  • Ad Soyad T** T**
  • Mesajlar 561
  • Beğeniler 171 / 208
  • Ticaret 0, (%0)
javascript kullanmadan yapmanız pek mümkün değil malesef
 

 

seap seap emredeger.com Kullanıcı
  • Üyelik 30.04.2016
  • Yaş/Cinsiyet 26 / E
  • Meslek Backend Developer
  • Konum Ankara
  • Ad Soyad E** D**
  • Mesajlar 18
  • Beğeniler 10 / 13
  • Ticaret 11, (%100)
Javascript kullanmadan client-side tarafinda uyari veremezsiniz. Ha post edildikten sonra bir if kullanarak verirsiniz orasi ayri ama dinamikligi tartisilir. Javascript bilmesenizde bir yerden baslamaniz gerekiyor. Arkadas gayet basit bir javascript kodu paylasmis kullanabilirsiniz. PHP tarafindada kontrol ettiginizde problem olmayacaktir.

Basit Olarak PHP Tarafinda Kontrol Etmek Icin;
$images = $_POST['resim'];
//Diziler 0'dan basladigi icin 4 dedim
if(count($images) > 4){
$err = "En fazla 5 resim yukleyebilirsiniz";
}

Sayfada bir yerde gostermek icinde asagidaki gibi basit bir syntax kullanabilirsiniz.

if(isset($err)){
echo $err;
}
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al