• 18-10-2020, 10:57:54
    #1
    Arkadaşlar internette paylaşılan w_resim_ekle fonksiyonu ile karşı siteden resim çekmeye calısıyorum.
    Sağolsun forumdan bir arkadaş yarım yamalak bot yapınca iş başa düştü.
    db ye kaydediyor. ismi alıyor vs herşey güzel fakat upload klasörüne baktıgımda 0 byte olarak boş bir resim çekiyor.
    Karşı sitedençekeceğim resim .jpg değil uzantısı .jpeg acaba ondan mı çakıyoruz anlamadım. fonksiyonda da .jpeg olarak belirlemiştim ama bir türlü aşamadım burayı.
    Yardımcı olur musunuz?

    function wp_resim_ekle( $url, $pid, $bas = null, $ozelalan = null )
    {
    $Rname = "oyun-oyna-".rand(10,1000000);
    $filename = $Rname.$bas.".jpeg"; // $filename değişkenine .jpg değeri atar.
    $filename = remove_accents( $filename ); // remove_accents ne işe yarıyor?
    if ( function_exists( "mb_strtolower" ) )// function_exists, mb_strtolower komutunun çalışıp çalışmadığını denetliyor.
    {
    $filename = mb_strtolower( $filename, "UTF-8" ); //mb_strtolower değişken içindeki harfleri utf-8 formatında küçük harfe çeviriyor.
    }
    $filename = utf8_uri_encode( $filename ); // buda yine karakterler ile ilgili birşey.
    $filetype = wp_check_filetype( $url ); //Dosya adı, Dosya türü almak. (bu satırda $url de boş, $filetype ta boş.)
    extract( $filetype ); //Her anahtarın geçerli bir değişken adı olup olmadığına bakmaktan başka bu değişkenlerin simge tablosundakilerle çakışıp çakışmadığına da bakar.
    if ( !$type )
    {
    $type = "";
    }
    $upload = wp_upload_bits( $filename, $filetype, @dosya_indir( $url ) ); // gelen veriler ile upload klasöründe dosya oluştur
    
    // file_get_contents() fonksiyonuna sahibiz. İçerisine yazazacağımız ilk parametredeki adrese girip kaynağı bir değişkene yüklememizi ya da ekrana yazdırmamızı sağlar.
    if ( !empty( $upload['error'] ) )// upload dizisi boş ise
    {
    return "Resim eklenemedi!<br />Hata: ".$upload['error']."<br />"; // ekrana bu hatayı döndür.
    }
    $neyim = $upload['file']; // $neyim değişkeni içinde "/home/flyklmva/public_html/wp-content/uploads/2016/11/teknoday-random-rakam.jpg" var.
    $attachment = array(
    "guid" => $upload['url'], //http://www.teknoday.com/wp-content/uploads/2016/11/teknoday-562726.jpg
    "post_mime_type" => $type, // boş
    "post_title" => $bas, // boş
    "post_content" => "", // boş
    "post_type" => "attachment", // attachment
    "post_parent" => $pid // boş
    );
    require( ABSPATH."wp-admin/includes/image.php" ); // image.php deki kodlarımızı burada require fonksiyonuyla çalıştırıyoruz. ABSPATH sabiti wp’nin kurulum dizinini tanımlıyor.
    $attach_id = wp_insert_attachment( $attachment, $neyim, $pid ); //Bu fonksiyon medya kütüphanesi içine bir ek ekler.
    $attach_data = wp_generate_attachment_metadata( $attach_id, $neyim ); //Bu fonksiyon, bir görüntü eki için meta üretir. Aynı zamanda küçük bir resim ve tanımlanan boyutlarına göre görüntü eki ve diğer ara boyutlarını oluşturur
    wp_update_attachment_metadata( $attach_id, $attach_data ); // Bir ekin için meta güncellemesi yapar .
    add_post_meta( $pid, "_thumbnail_id", $attach_id, true ); // Özel alan ekler.
    $nane = $neyim;
    return $nane;
    }
    function dosya_indir($adres,$ad)
    {
    if (@!extension_loaded(curl)) {
    die("Extension yuklu degil socket deneyebilirsin");
    }
    
    $ch = curl_init("$adres");
    if (!$ch) {
    die("Curl oturumu baslatamadim..");
    }
    curl_setopt ($ch, CURLOPT_TIMEOUT, "50");
    curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30");
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $data = curl_exec($ch);
    curl_close($ch);
    // baglantiyi kapa
    return $data;
    }
  • 18-10-2020, 11:02:02
    #2
    Çekmeye çalıştığınız resim linkinde bir koruma VS var mı engel?
  • 18-10-2020, 11:25:21
    #3
    SABYA adlı üyeden alıntı: mesajı görüntüle
    Çekmeye çalıştığınız resim linkinde bir koruma VS var mı engel?
    yok hocam direk url yi calıstırabiliyorum.
  • 18-10-2020, 11:31:04
    #4
    Çekeceğiniz resimde hotlink koruma olabilir , jpeg yada jpg uzantı olması farketmez uzantı farketmeden çalışması lazım.
  • 18-10-2020, 11:41:55
    #5
    dnaz adlı üyeden alıntı: mesajı görüntüle
    Çekeceğiniz resimde hotlink koruma olabilir , jpeg yada jpg uzantı olması farketmez uzantı farketmeden çalışması lazım.
    yanlış bir işlem yapmısım hocam file_get_contents yerine dosya_indir fonkisyonuna bagladım. suan tek sıkıntım.

    dosya_indir fonkisyonuna girdiğinde http 500 veriyor. tek sorunum suan bu fonkisyonun calısmaması. konuya ekledim.
  • 18-10-2020, 11:57:54
    #6
    İlgili sayfanın en üstüne hata gösterme kodlarını ekleyin sonra çalıştırın hatanın nerede olduğunu görürsünüz , bu şekilde hata bulamayız , gerçi kodlara bakamıyorum telefondan yazıyorum.
  • 18-10-2020, 12:13:10
    #7
    dnaz adlı üyeden alıntı: mesajı görüntüle
    İlgili sayfanın en üstüne hata gösterme kodlarını ekleyin sonra çalıştırın hatanın nerede olduğunu görürsünüz , bu şekilde hata bulamayız , gerçi kodlara bakamıyorum telefondan yazıyorum.
    Tamamdır hocam sorunu çözdüm, dosya_indir fonkisyonunda $ad değişkene değer gönderilmediği için false'a cekerek sorunu çözdüm. teşekkür ederim ilginiz için.