• 24-04-2019, 20:21:33
    #1
    Merhaba,
    Sitedeki bir formdan veriyi ajax ile yolluyorum orda da aldığım veriden txt dosyası oluşturup ekrana yazdır penceresi açmak istiyorum. Dosya yazdırmaya kadar başardım, bulduğum bütün örneklerde yazıcıya göndermek yerine ekrana basıyor txt içeriğini. Nasıl çözerim bir türlü bulamadım. Yardımcı olacak varsa sevinirim.
    Teşekkürler
    <?php require('config.php');
    
        if(isset($_POST['rap']) and $_POST['rap']=='RaporMusteri'){
    
    $musteri_adi = str_replace("'","",DB::control($_POST['musteri_adi'], 'text'));
    $dosya ="../raporlar/".$musteri_adi."_rapor_".date('d-m-Y_hi').".txt";
    
    $fp = fopen($dosya, 'w');
    fwrite($fp, " ".$musteri_adi);
    fwrite($fp,"rn");
    fwrite($fp,"rn");
    fwrite($fp, 'Hizmet Verilen Tarihler : ');
    fwrite($fp,"rn");
    fwrite($fp, '--------------------------');
    fwrite($fp,"rn");
    fwrite($fp,"rn");
    $i = 0;
        foreach($_POST['personel'] as $item){
        $personel = DB::control($item,'text');
    $tarihi = DB::control($_POST['tarih'][$i],'text');
    $tarih = date("d/m/Y", strtotime($tarihi));
    
    fwrite($fp, " ".$tarih);
    fwrite($fp,"rn");
    $i++;
        }
    
    fclose($fp);
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($dosya));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($dosya));
    readfile($dosya);
    
    echo '<div class="alert alert-success text-center">İşlem başarıyla gerçekleştirildi!</div>';
    
    } ?>
  • 24-04-2019, 21:29:45
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım php ile kullanıcının yazıcısına gönderemezsin.
    çıktıyı sayfaya verirsin, javascript ile yazıcıya gönderirsin
    window.print();
    ile
  • 24-04-2019, 21:33:28
    #3
    acayip adlı üyeden alıntı: mesajı görüntüle
    Arkadaşım php ile kullanıcının yazıcısına gönderemezsin.
    çıktıyı sayfaya verirsin, javascript ile yazıcıya gönderirsin
    window.print();
    ile
    Teşekkürler,
    Dosyayı indirtebilsem masaüstünden kullanıcı da yazdırabilir ona da razıyım. Fakat türlü "force download" methodları denedim.
    Txt dosyası oluşturabiliyorum fakat dosyayı farklı kaydet penceresi açtırıp bilgisayara kayıt ettirmek istiyorum, direk ekrana döküyor.
    Bunu da mı yapamam php ile ?
  • 24-04-2019, 22:05:56
    #4
    nickelaj adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler,
    Dosyayı indirtebilsem masaüstünden kullanıcı da yazdırabilir ona da razıyım. Fakat türlü "force download" methodları denedim.
    Txt dosyası oluşturabiliyorum fakat dosyayı farklı kaydet penceresi açtırıp bilgisayara kayıt ettirmek istiyorum, direk ekrana döküyor.
    Bunu da mı yapamam php ile ?
    Yapabilirsin tabii, o zaman direk dosyayı okuyp basacaksın ekrana, başka bir çıktı vermeden. yani kodunun en alt kısmı şunun gibi olacak:

    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($dosya));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($dosya));
    readfile($dosya);
    exit;
  • 24-04-2019, 22:13:18
    #5
    acayip adlı üyeden alıntı: mesajı görüntüle
    Yapabilirsin tabii, o zaman direk dosyayı okuyp basacaksın ekrana, başka bir çıktı vermeden. yani kodunun en alt kısmı şunun gibi olacak:

    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($dosya));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($dosya));
    readfile($dosya);
    exit;
    Örnek kodda da bu şekilde yazmıştım zaten yukarıda. Bu şekilde dosyayı kaydediyor ve tekrar okuduklarını ekrana yazdırıyor. Dosya kaydetme penceresi gelmiyor. Bir yeri atlıyor olabilir miyim ?
  • 24-04-2019, 22:17:06
    #6
    nickelaj adlı üyeden alıntı: mesajı görüntüle
    Örnek kodda da bu şekilde yazmıştım zaten yukarıda. Bu şekilde dosyayı kaydediyor ve tekrar okuduklarını ekrana yazdırıyor. Dosya kaydetme penceresi gelmiyor. Bir yeri atlıyor olabilir miyim ?
    Arkadaşım mesajımı dikkatli oku, sayfaya başka çıktı vemeden readfile yapıp exit yapacaksın dedim.

    echo '<div class="alert alert-success text-center">İşlem başarıyla gerçekleştirildi!</div>';
    böyle bir şey olmayacak yani. ne öncesinde, ne sonrasında.
  • 24-04-2019, 22:31:01
    #7
    acayip adlı üyeden alıntı: mesajı görüntüle
    Arkadaşım mesajımı dikkatli oku, sayfaya başka çıktı vemeden readfile yapıp exit yapacaksın dedim.

    echo '<div class="alert alert-success text-center">İşlem başarıyla gerçekleştirildi!</div>';
    böyle bir şey olmayacak yani. ne öncesinde, ne sonrasında.
    Her ne kadar yardım ederken fırça atar üslup ta kullansanız emek ve zaman ayırdığınız için yine de teşekkür ederim.Bu şekilde de direk ekrana döktü içeriği, gerisini ben bulmaya çalışırım.
    İyi akşamlar
  • 24-04-2019, 22:35:09
    #8
    nickelaj adlı üyeden alıntı: mesajı görüntüle
    Her ne kadar yardım ederken fırça atar üslup ta kullansanız emek ve zaman ayırdığınız için yine de teşekkür ederim.Bu şekilde de direk ekrana döktü içeriği, gerisini ben bulmaya çalışırım.
    İyi akşamlar
    Devamını Göster
    estağfurullah arkadaşım, öyle bir niyetim yok

    eğer ekrana döktü ise, öncesinde ekrana çıktı vermişsindir. Tekrar ediyorum, öncesinde hiç bir çıktı olmaması lazım.
    Misal sayfanda veya include etttiğin sayfada da en başta header falan kullandıysan da olmaz charset vs. gibi.