Singleton Tek Nesne Genişleme Sınıfı

Bu sınıf, sınıfın sadece bir nesnesinin aynı anda var olmasını sağlar. Bir tekil sınıfının bir nesnesini oluşturmaya yönelik birden fazla girişim, her zaman aynı sınıf örneğini döndürür.

class tekNesne{
	public static function OrnekAl(){
		return new static;
	}
}
class os extends tekNesne{}
class man extends tekNesne{}
echo get_class(os::OrnekAl());
echo "<br>";
echo get_class(man::OrnekAl());

Çıktısı

os
man

 

Düzenli İfadeler – Regular Expression Sınıfı

Düzenli ifade fonksiyonlarını pratik olarak bu sınıfla kullanmanız işlerini kolaylaştıracaktır.

<?php
class DuzenliIfade{
  public $duzenli;
  public $mod;
  public $sonuc;
  private $eslesenler;
  private $altmaskeler;
  public function __construct($duzenli=null, $mod=null){
		$this->duzenli = $duzenli;	 
		$this->mod = $mod;	 
	}
  public function match($metin, $duzenli=null, $mod=null){
    $this->kural($duzenli, $mod);	
		$res = preg_match($this->duzenliYap(), $metin, $this->sonuc, PREG_OFFSET_CAPTURE);
		$this->clear_all(); 
		if ($res){
			$this->eslesenler = new stdClass();	
			$this->eslesenler->text = $this->sonuc[0][0];
			$this->eslesenler->pos = $this->sonuc[0][1];
			$this->altmaskeler = array();
			foreach ($this->sonuc as $key=>$value){
				if($key){	
		      $submask = new stdClass();
		      $submask->text = $value[0];
		      $submask->pos = $value[1];
		      $this->altmaskeler[] = $submask;
			  } 	
		  }
		}
		return $res; 	
	}
  public function match_all($metin, $duzenli=null, $mod=null){
    $this->kural($duzenli, $mod); 
		$res = preg_match_all($this->duzenliYap(), $metin, $this->sonuc, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
		$this->clear_all(); 
		if($res){
			$this->eslesenler = array();
			$this->altmaskeler = array();	
			foreach ($this->sonuc as $key=>$value){
  	    $submask = array();	
				foreach ($value as $key1=>$value1){
					if ($key1 == 0){
						$mat = new stdClass();
						$mat->text = $value1[0];	
						$mat->pos = $value1[1];
						$this->eslesenler [] = $mat;
					}else{
						$smat = new stdClass();
						$smat->text = $value1[0];	
						$smat->pos = $value1[1];
						$submask[] = $smat;	
					}	  	
			  }
				$this->altmaskeler[] = $submask;	    	
		  }	
		}
		return $res; 	
	}
  public function replace($metin, $repl, $duzenli=null, $mod=null){
		$this->kural($duzenli, $mod);	
		return preg_replace($this->duzenliYap(), $repl, $metin);	
	}	 
  private function kural($duzenli=null, $mod=null){
		if ($duzenli) $this->duzenli = $duzenli; 	
		if ($mod) $this->mod = $mod;
	}	  	 
	private function duzenliYap(){
		return "/".str_replace("/", "\/", $this->duzenli)."/".$this->mod;	
	}
	private function clear_all(){
		if(is_array($this->eslesenler)) $this->eslesenler = null;
		if(is_object($this->eslesenler)) $this->eslesenler = null;	
		if(is_array($this->altmaskeler)) $this->altmaskeler = null;	
	}	 	 	 
}
?>

Kullanımı

<?php
$a=new DuzenliIfade;
$a->duzenli = "<a(.*?)>(.*?)</a>";	 
$metin='<a href="test.php">merhaba</a>';
if($a->match($metin)){
	 print_r($a->sonuc);
}
$a->sonuc=null;
$metin='<a href="test1.php">merhaba1</a><a href="test2.php">merhaba2</a>';
if($a->match_all($metin)){
	print_r($a->sonuc);
}
$a->sonuc=null;
$repl="$1 => $2 yazısına ait.";
$metin='<a href="test1.php">merhaba1</a><a href="test2.php">merhaba2</a>';
print_r($a->replace($metin, $repl));
?>

Çıktısı

Array
(
    [0] => Array
        (
            [0] => merhaba
            [1] => 0
        )

    [1] => Array
        (
            [0] =>  href="test.php"
            [1] => 2
        )

    [2] => Array
        (
            [0] => merhaba
            [1] => 19
        )

)
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => merhaba1
                    [1] => 0
                )

            [1] => Array
                (
                    [0] =>  href="test1.php"
                    [1] => 2
                )

            [2] => Array
                (
                    [0] => merhaba1
                    [1] => 20
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => merhaba2
                    [1] => 32
                )

            [1] => Array
                (
                    [0] =>  href="test2.php"
                    [1] => 34
                )

            [2] => Array
                (
                    [0] => merhaba2
                    [1] => 52
                )

        )

)
 href="test1.php" => merhaba1 yazısına ait. href="test2.php" => merhaba2 yazısına ait.

 

Kullanıcı Tanımlı MD5 Şifreleme

<?php
define("ktMD5_CODE","GuvenliKodBuraya"); //Your eMD5 server-side code
function ktMD5($metin){
	return ktMD5::hash($metin);
}
class ktMD5 {
	static function ikili($metin){
		$cikti=null;
		$i=0;while($i < strlen($metin)){
			$cikti .= "+". str_pad(decbin(ord(substr($metin,$i++,1))), 8, "0", STR_PAD_LEFT);
		}
		return $cikti;
	}
	static function dogrula($metin1,$metin2){ 
		if($metin1 != "+" && $metin2 != "+"){ 
			if($metin1 xor $metin2){
				return "1"; 
			}else{
				return "0"; 
			} 
		}else{
			return "+"; 
		} 
	}
	static function hash($metin){
		if(!defined("ktMD5_CODE")){exit("<b>hata: </b> ktMD5_code tanımlanmadı");}
		$metin = trim($metin);$s = md5(ktMD5_CODE);$metin = md5($metin);
		$i=0;while($i != 32){$dizi_metin[] = substr($metin,$i,8);$i=$i+8;}
		$i=0;while($i != 32){$dizi_s[] = substr($s,$i,8);$i=$i+8;}
		$metin1 = ktMD5::ikili($dizi_s[0].$dizi_metin[1].$dizi_s[2].$dizi_metin[3]);
		$metin2 = ktMD5::ikili($dizi_metin[0].$dizi_s[1].$dizi_metin[2].$dizi_s[3]);
		$kombin=null;
		$e=0;
		while($e < strlen($metin1)){ 
			$kombin .= ktMD5::dogrula(substr($metin1,$e,1),substr($metin2,$e,1)); 
			$e++; 
		}
		$cikti = md5($kombin);
		return $cikti;
	}
}
echo MD5("1234568");
echo "<br>";
echo ktMD5("1234568");
?>

Çıktısı

fe743d8d97aa7dfc6c93ccdc2e749513
e32f8d4f9b769346a74fe8d1a82c5e56

 

Sayfa Yüklenme Zamanını Göstermek ve Gizlemek

<?php
define("SAYFA_YUKLENME_ZAMANINI_GOSTER",true);
class ZamanSayaci{
	private $baslangic;
	public function __construct(){
		if(SAYFA_YUKLENME_ZAMANINI_GOSTER){
			$sure = microtime();
			$sure = explode(" ", $sure);
			$sure = $sure[1] + $sure[0];
			$this->baslangic = $sure;
		}
	}
	public function al(){
		if(SAYFA_YUKLENME_ZAMANINI_GOSTER == true){
			$sure = microtime();
			$sure = explode(" ", $sure);
			$sure = $sure[1] + $sure[0];
			$bitis = $sure;
			$toplamsure = ($bitis - $this->baslangic);
			return sprintf("Bu sayfa %f saniyede yüklendi.", $toplamsure);
		}
	}
}
$t = new ZamanSayaci();
$a = array();
for($i=0;$i<1000;$i++){
	$a[$i] = $i;
}
echo $t->al();
?>

Çıktısı

Bu sayfa 0.000530 saniyede yüklendi.

 

Belirlenen Yıl ve Haftanın Hangi Günlere Arasında Olduğunu Bulma

<?php
class gunlerarasiHafta{
	function hesapla($yil, $hafta){  
		$yil = date('Y',mktime(0, 0, 0, 1, 1, $yil));
		$ilkgunun = date('w',mktime(0, 0, 0, 1, 1, $yil));
		$haftasonu = 7-$ilkgunun;
		$song = date('Y/m/d',mktime(0, 0, 0, 1, $haftasonu, $yil));
		if($hafta<54){
			for($hft=2;$hft<=$hafta;$hft++){
				$ilkgun = $haftasonu + 1;
				$song = $ilkgun + 6;
				$haftasonu = $song;
				$ilkgun = date('Y/m/d',mktime(0, 0, 0, 1, $ilkgun, $yil));
				$song = date('Y/m/d',mktime(0, 0, 0, 1, $song, $yil));
			}
		}
		$tarih = array($yil, $ilkgun, $song);
		return $tarih;
	} 
}
$yil = 2018;
$hafta = 20;
$a=new gunlerarasiHafta;
$tarih = $a->hesapla($yil, $hafta);
echo $yil." yılı ".$hafta.". hafta başlangıç günü ".$tarih[1]." ve bitiş günü ".$tarih[2];
?>

Çıktısı

2018 yılı 20. hafta başlangıç günü 2018/05/13 ve bitiş günü 2018/05/19

 

İstatistik Sınıfı ile Medyan ve Yüzdelik Almak

<?php 
class istatistik{
	function ortanca($veri){
		$ortanca = $this->yuzdebirlik($veri,50);
		return $ortanca;
	}
	function yuzdebirlik($veri,$yuzdebirlik){
		if( 0 < $yuzdebirlik && $yuzdebirlik < 1 ) {
			$p = $yuzdebirlik;
		}else if( 1 < $yuzdebirlik && $yuzdebirlik <= 100 ) {
			$p = $yuzdebirlik * .01;
		}else {
			return "";
		}
		$say = count($veri);
		$tumindeks = ($say-1)*$p;
		$sayiindex = intval($tumindeks);
		$deger = $tumindeks - $sayiindex;
		sort($veri);
		if(!is_float($deger)){
			$sonuc = $veri[$sayiindex];
		}else {
			if($say > $sayiindex+1)
				$sonuc = $deger*($veri[$sayiindex+1] - $veri[$sayiindex]) + $veri[$sayiindex];
			else
				$sonuc = $veri[$sayiindex];
		}
		return $sonuc;
	}
	function ceyrekler($veri) {
		$q1 = $this->yuzdebirlik($veri,25);
		$q2 = $this->yuzdebirlik($veri, 50);
		$q3 = $this->yuzdebirlik($veri, 75);
		$ceyrek = array ( '25' => $q1, '50' => $q2, '75' => $q3);
		return $ceyrek;
	}
	
}
	$s = new istatistik();
	$veri = array(12,34,56);
	echo "25. Yüzdebirlik = ".$s->yuzdebirlik($veri,25)."<br />";
	echo "Ortanca (50. yuzdebirlik) = ".$s->ortanca($veri)."<br />";
	echo "95. Yüzdebirlik = ".$s->yuzdebirlik($veri,95)."<br />";
	echo "Çeyrek(25., 50., 75. yuzdebirlik) = ".implode(",	", $s->ceyrekler($veri));
?>

Çıktısı

25. Yüzdebirlik = 23
Ortanca (50. yuzdebirlik) = 34
95. Yüzdebirlik = 53.8
Çeyrek(25., 50., 75. yuzdebirlik) = 23,	34,	45

 

Dizin İçerisindeki Dosyaların İçeriğinde Kelime Arama

<?php
class dosyaIcerigindeAra{
	var $dizinAdi = '';
	var $arananKelime = '';
	var $kabulEdilenTurler = array('txt','php');
	var $bulunanDosyalar;
	var $dosyalarim;
	function ara($dizin, $arananKelime){
		$this->dizinAdi = $dizin;
		$this->arananKelime = $arananKelime;
		$this->dosyalarim = $this->dizinIcerigiAl($this->dizinAdi);
		$this->bulunanDosyalar = array();
		if ( empty($this->arananKelime) ) die('Aranan Kelime Boş');
		if ( empty($this->dizinAdi) ) die('Bir Dizin Seçmediniz');
		foreach ( $this->dosyalarim as $f ){
			$ff=explode ( '.', $f );
			if ( in_array(array_pop($ff),  $this->kabulEdilenTurler) ){
				$icerikler = file_get_contents($f);
				if ( strpos($icerikler, $this->arananKelime) !== false )
					$this->bulunanDosyalar [] = $f;
			}
		}
		return $this->bulunanDosyalar;
	}
	function dizinIcerigiAl($dizin){
		if (!is_dir($dizin)){die ("$dizin Dizini Okunamıyor!");}
		if ($ana=@opendir($dizin)){
			while ($dosya=readdir($ana)){
				if($dosya=="." || $dosya==".."){continue;}
				if(is_dir($dizin."/".$dosya)){
					$dosyalar=array_merge($dosyalar,$this->dizinIcerigiAl($dizin."/".$dosya));
				}else{
					$dosyalar[]=$dizin."/".$dosya;
				}
			}
		}
		return $dosyalar;
	}
}
$ara = new dosyaIcerigindeAra;
$aranacakdizin='C:/Program Files/EasyPHP/data/localweb';
$aranacakkelime='dal';
$ara->ara($aranacakdizin, $aranacakkelime);
echo "<pre>";
print_r($ara->bulunanDosyalar);
?>

Çıktısı

Array
(
    [0] => C:/Program Files/EasyPHP/data/localweb/index.php
    [1] => C:/Program Files/EasyPHP/data/localweb/metin.txt
)

 

SQL Enjeksiyon Kaldırma

<?php
class sql{
	public function enjeksiyonKaldir($string){
		$injections = array(">", "<", "=", "'", "?", "\\", "/", 
						"&", "|","-", "+", "%", "$", "#", "*",
						"or", "and", "drop", "insert", "rename", "select");
		$string = str_replace($injections, "", htmlentities(strtolower($string),ENT_QUOTES,"UTF-8"));
		return $string;
	}
}
$s=new sql;
echo $s->enjeksiyonKaldir("''Or'='Or''");
echo "<br>";
echo $s->enjeksiyonKaldir("anything' OR 'x'='x");
echo "<br>";
echo $s->enjeksiyonKaldir("1'or'1'='1");
echo "<br>";
echo $s->enjeksiyonKaldir("' or 1=1 or ''='");
echo "<br>";
echo $s->enjeksiyonKaldir("\" or 1=1 or \"\"=\"");
echo "<br>";
echo $s->enjeksiyonKaldir("' OR ''='");
echo "<br>";
echo $s->enjeksiyonKaldir("'' OR ''=''");
echo "<br>";
echo $s->enjeksiyonKaldir("'OR''='");
echo "<br>";
echo $s->enjeksiyonKaldir("hey' or 1=1–");
echo "<br>";
echo $s->enjeksiyonKaldir("''Or 1 = 1'");
echo "<br>";
echo $s->enjeksiyonKaldir("' or 1=1-- ");
echo "<br>";
echo $s->enjeksiyonKaldir("or 1=1--");
echo "<br>";
echo $s->enjeksiyonKaldir("\" or 1=1--");
echo "<br>";
echo $s->enjeksiyonKaldir("or 1=1--");
echo "<br>";
echo $s->enjeksiyonKaldir("' or 'a'='a");
echo "<br>";
echo $s->enjeksiyonKaldir("\" or \"a\"=\"a");
echo "<br>";
echo $s->enjeksiyonKaldir("') or ('a'='a");
echo "<br>";
echo $s->enjeksiyonKaldir("hi\") or (\"a\"=\"a");
echo "<br>";
echo $s->enjeksiyonKaldir("'hi' or 'x'='x';");
echo "<br>";
echo $s->enjeksiyonKaldir("x' or 1=1 or 'x'='y");
echo "<br>";
echo $s->enjeksiyonKaldir("\x27\x4F\x52 SELECT *");
echo "<br>";
echo $s->enjeksiyonKaldir("\x27\x6F\x72 SELECT *");
echo "<br>";
echo $s->enjeksiyonKaldir("'or select *");
echo "<br>";
echo $s->enjeksiyonKaldir("admin'--");
echo "<br>";
echo $s->enjeksiyonKaldir("\")) or ((\"x\"))=((\"x");
echo "<br>";
echo $s->enjeksiyonKaldir("\" or \"\"+\"");
echo "<br>";
echo $s->enjeksiyonKaldir("admin\"or 1=1 or \"\"=\"");
echo "<br>";
echo $s->enjeksiyonKaldir("admin\") or (\"1\"=\"1\"--");
?>

Çıktısı

039;039;039;039;039;039;
anything039; 039;x039;039;x
1039;039;1039;039;1
039; 11 039;039;039;
quot; 11 quot;quot;quot;
039; 039;039;039;
039;039; 039;039;039;039;
039;039;039;039;
hey039; 11ndash;
039;039; 1 1039;
039; 11 
11
quot; 11
11
039; 039;a039;039;a
quot; quot;aquot;quot;a
039;) (039;a039;039;a
hiquot;) (quot;aquot;quot;a
039;hi039; 039;x039;039;x039;;
x039; 11 039;x039;039;y
039; 
039; 
039; 
admin039;
quot;)) ((quot;xquot;))((quot;x
quot; quot;quot;quot;
adminquot; 11 quot;quot;quot;
adminquot;) (quot;1quot;quot;1quot;

 

Özelleştirilmiş Şifre Üretici

<?php
class SifreUretici{
	var $wc;
	var $w;
	var $l;
	var $minl;
	var $maxl;
	function SifreUretici($min, $max, $dizi=NULL){
		if($dizi == NULL){
			$this->wc = array('_','-'); // special chars
			for($i=48; $i<58; $i++){
				array_push($this->wc, chr($i)); // 0-9
			}
			for($i=65; $i<91; $i++){
				array_push($this->wc, chr($i)); // A-Z
      }    
			for($i=97; $i<122; $i++){
				array_push($this->wc, chr($i)); // a-z
      }    
			shuffle($this->wc);
		}
		else{ 
			$this->wc = $dizi; 
		}
		$this->minl = $min;
		$this->maxl = $max;
	}
	function olustur(){
		$this->w = NULL; 
		$this->l = rand($this->minl, $this->maxl); 
		for($i=0; $i<$this->l; $i++){
			$no = rand(0, count($this->wc)-1);
			$this->w .= $this->wc[$no];
		}
		return htmlentities($this->w);
	}
}
$s = new SifreUretici(10, 16); //10-16 karakter arası şifre üretir.
echo $s->olustur();
echo "<br>";
$dizi = array('a','b','1','!'); // Sadece bu karakterlerden 8 haneli şifre üretir
$s = new SifreUretici(8,8,$dizi);
echo $s->olustur();
echo "<br>";
?>

Çıktısı

f_aDfXWCmKK4t
!bb!1ab1

 

Tarihsel Aritmetik Matematik İşlemleri

<?php
class Tarih{
	function isle($tarih, $islemler, $ne = FALSE, $miktar, $sonuc = FALSE){
		$hata = "<br>Uyarı! Tarih İşlemleri Başarısız ... ";
		if(!$tarih || !$islemler) {
			return "$hata geçersiz veya mevcut olmayan argümanlar<br>";
		}else{
			if(!($islemler == "cikar" || $islemler == "-" || $islemler == "topla" || $islemler == "+")) return "<br>$hata Geçersiz İşlem...<br>";
			else {
				list($gun, $ay, $yil) = explode("/", $tarih);
				($islemler == "cikar" || $islemler == "-") ? $islem = "-" : $islem = '';
				if($ne == "gun")   $topla_gun	 = $islem."$miktar";
				if($ne == "ay") $topla_ay = $islem."$miktar";
				if($ne == "yil")  $topla_yil	 = $islem."$miktar";
				$tarih = mktime(0, 0, 0, $ay + @$topla_ay, $gun + @$topla_gun, $yil + @$topla_yil);
				($sonuc == "timestamp" || $sonuc == "ts") ? $tarih = $tarih : $tarih = date("d/m/Y", "$tarih");
				return $tarih;
			}
		}
	}
}
$t = new Tarih;
echo $tarih = $t->isle("26/05/2018", "topla", "gun", "4");
echo "<br>";
echo $tarih = $t->isle("26/05/2018", "cikar", "gun", "4");
echo "<br>";
echo $tarih = $t->isle("26/05/2018", "topla", "ay", "4");
?>

Çıktı

30/05/2018
22/05/2018
26/09/2018