2022 Php Destek Nedir ? Ne İçin Var ?

Hepinize merhabalar. Bu biraz tanışma makalesi olacak. Öncelikle bu site ne için var. Ne zamana kadar ayakta duracak. Hedeflerimiz neler onlardan başlayalım.

Biz Kimiz ?

Biz kendini php’ye adamış ve geliştirmiş bir genç php’ci topluluğuyuz. Yaşlarımız 15 ile 47 Arasında olan ekibimiz ile birlikte sizlere php hakkında her şeyi anlatmak ve sorularınıza cevap vermek için buradayız. Php destek her şeyden önce sizin için burada !

Niçin Buradayız ?

Basit bir cümle olucak ama =) Sizin İçin Buradayız =)

Hedeflerimiz Neler ?

Hedeflerimiz belirli bir makale sayısına ulaştıktan ve günlük trafik 500’e çıktıktan sonra ilk aşamada kendi yazmış olduğumuz question & anwer scriptimizi sub domain olarak kurarak stackowerflow benzeri bir ortam yakalamak. Amacımız bu işi yaparken büyümek değil kaynak toplamak. Yani günlük 15 kişi soru sorsa ayda 450 soru ve yılda yaklaşık 5400 soru yapar. Bunun bize avantajı çözümlenmiş 5000 küsür sorunun cevabının sitemizde cevaplanmış ve sizlere sunulmuş olması olacaktır. Bunun en büyük avantajı ise sisteme giriş yaptığınızda bir sorunununuz varsa bunu soru sormadan aratarak bunu bulabilmenizdir.

Hedeflerimiz sırası ile şöyle

  1. 6. Ayımızda 200 makale ve günlük 500 trafik
  2. 6. Ayımızdan sonra içerik üreticisi alarak 1. yılımıza kadar 500 makale ve 1k tekil kullanıcı
  3. 1 yılın ardından Q&A Scriptimizi siteye entegre ederek ilk 3 ayda 250 ve takiben her 3 ayda 250 kullanıcıya ulaşmak. Hedef kullanıcı 5k 2 yıl içerisindeki planımız bu

Sistemimizden ufak bir kesit 🙂

Sizin İçin Önerimiz !

Html Kaynak Sıkıştırma Nasıl Yapılır ?

Bize Katılmak İster Misiniz ?

php destek ailesine katılmak için yapmanız gereken tek şey info@phpdestek.com mail adresine kendinizi tanıtan bir yazı göndermeniz

PHP Html Gzip sıkıştırma html minify

Hepinize merhabalar bugün sizlerle nasıl php html gzip yani html sıkıştırma işlemi php ile yapılır onu göstereceğim

Neden HTML GZIP yapmalıyız ?

Sistemlerimiz büyükçe dosya boyutları o denli büyüyor. Dosya boyutu her bir kullanıcı siteye girdiğinde dosya boyutunu trafiginizden yer bu yüzden ne kadar küçük boyutlu dosyalarınız olursa hem yüklenme süresi hem de trafik kullanımı epey düşecektir. Örneğin ana sayfamız da 20 adet blog içeriğini veri tabanımızdan çekelim ve gzip yapmadan önce sayfamızı tarayıcı üzerinden farklı kaydet diyerek dosya boyutumuza bakalım. Biz sizin yerinize yaptık =). Sıkıştırma olmadan önceki hali 24 kb. Ve Php kodlarımızı dahil edip dosya boyuna tekrar bakalım.

Sizin İçin Önerimiz

PHP AJAX Çoklu dosya Yükleme

PHP ile HTML GZİP Nasıl Yapılır ?

Öncelikle size tavsiyem bu kodu her sayfaya ayrı ayrı yazmak yerine function.php dosyası oluşturup bunu sisteme include ile dahil etmek

function.php

<?php
$gzip_pres = true;

    function gzipKontrol(){
        $kontrol = str_replace(" ","",
            strtolower($_SERVER['HTTP_ACCEPT_ENCODING'])
        );
        $kontrol = explode(",", $kontrol);
        return in_array("gzip", $kontrol);
    }

    function bosluksil($kaynak){
        return preg_replace("/\s+/", " ", $kaynak);
    }

    function kaynak_presle($kaynak){
        global $gzip_pres;
        $sayfa_cikti = bosluksil($kaynak);
        if (!gzipKontrol() || headers_sent() || !$gzip_pres) 
            return $sayfa_cikti;
        header("Content-Encoding: gzip");
        return gzencode($sayfa_cikti);
    } 
?>

Ve şimdi sıkıştırmak istediğimiz sayfalarda bu kodu çağırıp ob_start ile başlatıyoruz.

<?php 
     include "function.php";
     ob_start("kaynak_presle");
?>

Kod bloğumuz bu kadar. Arasındaki farkı Sayfa Kaynağı Görüntüle İle Rahatlıkla görebilirsiniz.

# Sonuç #

Sonuç olarak daha hızlı web sitesi, mutlu kullanıcı ve mutlu sunucu =)

2022 PHP AJAX Çoklu Dosya Yükleme (Progressbar % )

Hepinize merhabalar PHPDESTEK.COM ‘un sizin için hazırlamış olduğu PHP ve AJAX kullanarak çoklu dosya yükleme dersine hoş geldiniz. Bunu yaparken de Progress Bar kullanarak yüzdesini kullanıcılara sunacağız.

Sizin için Önerimiz

PHP AJAX İLE ETİKET SİSTEMİ

Hadi Başlayalım php ajax bootstrap

Öncelikle Bootstrap 5 sınıfını sistemimize ekliyoruz. ardından da form ile input=file oluşturup script sınıfımızı yazmaya başlıyoruz.

İndex.php

<!doctype html>
<html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <!-- Bootstrap CSS -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

        <title>Multiple File Upload with Progress Bar using JavaScript & PHP</title>
    </head>
    <body>

        <div class="container">
            <h1 class="mt-3 mb-3 text-center">Multiple File Upload with Progress Bar using JavaScript & PHP</h1>

            <div class="card">
                <div class="card-header">Select File</div>
                <div class="card-body">
                    <table class="table">
                        <tr>
                            <td width="50%" align="right"><b>Select File</b></td>
                            <td width="50%">
                                <input type="file" id="select_file" multiple />
                            </td>
                        </tr>
                    </table>
                </div>
            </div>
            <br />
            <div class="progress" id="progress_bar" style="display:none; ">

                <div class="progress-bar" id="progress_bar_process" role="progressbar" style="width:0%">0%</div>

            </div>

            <div id="uploaded_image" class="row mt-5"></div>
        </div>
    </body>
</html>

<script>

function _(element)
{
    return document.getElementById(element);
}

_('select_file').onchange = function(event){

    var form_data = new FormData();

    var image_number = 1;

    var error = '';

    for(var count = 0; count < _('select_file').files.length; count++)  
    {
        if(!['image/jpeg', 'image/png', 'video/mp4'].includes(_('select_file').files[count].type))
        {
            error += '<div class="alert alert-danger"><b>'+image_number+'</b> Selected File must be .jpg or .png Only.</div>';
        }
        else
        {
            form_data.append("images[]", _('select_file').files[count]);
        }

        image_number++;
    }

    if(error != '')
    {
        _('uploaded_image').innerHTML = error;

        _('select_file').value = '';
    }
    else
    {
        _('progress_bar').style.display = 'block';

        var ajax_request = new XMLHttpRequest();

        ajax_request.open("POST", "upload.php");

        ajax_request.upload.addEventListener('progress', function(event){

            var percent_completed = Math.round((event.loaded / event.total) * 100);

            _('progress_bar_process').style.width = percent_completed + '%';

            _('progress_bar_process').innerHTML = percent_completed + '% completed';

        });

        ajax_request.addEventListener('load', function(event){

            _('uploaded_image').innerHTML = '<div class="alert alert-success">Files Uploaded Successfully</div>';

            _('select_file').value = '';

        });

        ajax_request.send(form_data);
    }

};

</script>

Sıra geldik upload.php yani işin kalbine

<?php

//upload.php

if(isset($_FILES['images']))
{
	for($count = 0; $count < count($_FILES['images']['name']); $count++)
	{
		$extension = pathinfo($_FILES['images']['name'][$count], PATHINFO_EXTENSION);

		$new_name = uniqid() . '.' . $extension;

		move_uploaded_file($_FILES['images']['tmp_name'][$count], 'images/' . $new_name);

	}

	echo 'success';
}


?>

PHP Ajax Etiket Sistemi (TEK TEK EKLEME)

Hepinize merhabalar phpdestek.com sitemizin sizinle paylaşmış olduğu ilk makalemize hepiniz hoş geldiniz =)

Bugün sizlerle Veri tabanı Bağlantısı ile Etiket sistemi yapımı nasıl olur ondan bahsedeceğim. Bizim Etiketlerimiz Tek Tek Parçalanıp veri tabanına ekleyeceğiz. Ekstra olarak kaç etiket girilmiş, etiketler kaç karakterden oluşmalı hepsinin kontrolünü yapacağız. Hadi başlayalım

Hadi Başlayalım

Öncelikle PHPMYADMİN’i açıp tags tablosunu oluşturalım. Sonra da tag_id (int 11 – AI) ve tag(text) stunlarını oluşturalım. Yapamayan Arkadaşlar için aşağıya ornek kodu bırakıyorum.

CREATE TABLE `tag_system`.`tags` (`tag_id` INT(11) NOT NULL AUTO_INCREMENT , `tag` TEXT NOT NULL , PRIMARY KEY (`tag_id`)) ENGINE = InnoDB;

Veri tabanı bağlantısını oluşturalım. Ardından İndex.php Dosyamızı oluşturup form ile input’tan gelen veriyi ajax.php dosyamıza gönderelim.

Config.php

<?php
	$vt_host = "localhost";
	$vt_user = "root";
	$vt_password = "";
	$vt_name = "tags";
?>

Ardından db.php dosyamızı oluşturuyoruz

<?php
	try {
		$db = new PDO("mysql:host=$vt_host;dbname=$vt_name;charset=utf8", $vt_user, $vt_password);
		$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		}
	catch(PDOException $e)
		{
		echo "Bağlantı hatası: " . $e->getMessage();
		}
?>

Şimdi ise index.php dosyamızı oluşturup kullanıcı ara yüzünü ekliyoruz.

<?php 
    include "config.php";
    include "db.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="" method="post" id="tagsform" onsubmit="return false;">              
        <input type="text" name="tags">
        <button  type="submit" onclick="tagsadd();">ETİKETLERİ GÖNDER</button>
    </form>
    <script>
        function tagsadd(){
        var deger = $("#tagsform").serialize();
        $.ajax({
            type : "POST",
            data : deger,
            url : "ajax_tags.php",
            success : function(sonuc){
                    if($.trim(sonuc) == "system_error"){
                        alert("Sistemsel Hata Oluştu.");			
                    }else if($.trim(sonuc) == "error"){
                        alert("Etiketler en az 3 karakter en fazla 24 karakterden oluşmalı ve en az 3 en fazla 5 etiket girmelisiniz.");			
                    }else if($.trim(sonuc) == "go"){
                        alert("Başarılı Bir ŞEKİLDE EKLENDİ.");			
                    }
                }
            });
        }
    </script>
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
</body>
</html>

Sıra geldi ajax dosyamızı yani işin kalbini oluşturmaya : ajax_tags.php

<?php 
    include "config.php";
    include "db.php";

    if($_POST){
        $tags = trim($_POST["question_tags"]); //xss_clean fonksiyonu ile taramayı unutmayın
        $etiketler = explode(',', $tags); 
        $count_tags = 0; 
        foreach( $etiketler as $anahtar => $deger ){
            if(strlen($deger) >= 3  && strlen($deger) <= 24 ){
                $count_tags++;
            }                             
        }
        if($count_tags >= 3 && $count_tags <=5){
            foreach( $etiketler as $anahtar => $deger ){          
                $ekle = $db->prepare("INSERT INTO tags SET tag=?");
                $ekle->execute(array($deger));    
            }

             echo 'go';
        }else{
            echo 'error';
        }
    }else{
        echo 'system-error';
    }
?>

Neler yaptık şimdi ona göz atalım. İndex.php’den aldığımız verileri ajax_tags.php ye gönderiyoruz ardından etiketler 3 ve 24 karakter arasında ise sayaca sokup $count_tags++ ile arttırıyoruz. ardından if ile count_tags 3 ile 5 arasında mı diye kontrol ettiriyoruz amacımız en az 3 en fazla 5 karakterden oluşmalı. Ardından gerekli koşulları sağladıktan sonra. For döngüsüne sokup veritabanına ekliyoruz.