vehbiakdogan

Senior Sofware Developer

PHP

PHP ile ip adresinden konum bulmak

Merhaba arakdaşlar php ile ip adresinden konum bulmak nasıl olur bakacağız. Öncelikle adres bulmak için ip-api.com apisini kullanağım.

<?php
function yerBul($ip) {
return json_decode(file_get_contents("http://ip-api.com/json/$ip"));
}

?>

Yukarıdaki fonksiyonumuz bize parametre olarak gönderdiğimiz ip adresinin konum bilgisini veriyor. Hangi bilgilieri verdiğini aşağıdaki şekilde kendi ip adresimizi parametre vererek bakalım.


$veriler  = yerBul($_SERVER["REMOTE_ADDR"]);

foreach ( $veriler as $sutun => $deger)
echo " $sutun => $deger <br/>";

bu kodu çalıştırdığımızda bize aşağıdaki şekilde bir çıktı verecektir.

as => AS9121 TTNET
city => Erzurum
country => Turkey
countryCode => TR
isp => Turk Telekom
lat => 39.9086
lon => 41.2769
org => Turk Telekom
query =>***.***.***.***
region => 25
regionName => Erzurum
status => success
timezone => Europe/Istanbul
zip =>

gelen veride ip adreside görünür ama ben güvenlik amaçlı kendi ip adresimi gizledim arkadaşlar.

Evet ip adresi ile konum bulmak bu kadar kolay detaylı adreste isterseniz lat,lon değeri ile google maps api kulanarak detaylı adreste alabilirsiniz.

PHP

SQL Foreign Key Kullanımı

Sql foreign key ilişkisel veri tabanında bir tabloda belirlediğimiz bir event olması durumunda diğer tabloda işlem yapılmasını sağlayan bir yapıdır. bir nevi triggere benziyor.

Örneğin bizim urunler ve urun_resim diye iki adet tablomuz olsun birinci tabloda ürünlerimizi ikinci tabloda ürüne ait görselleri tutalım.

Biz eğer foreign key kullanmazsak üründe silme işlemi yapıldığı zaman ürün resimleri ya veri tabanında çöp olarak kalacak ki bu saçma olur yada ek kod yazıp urun_resim tablosundan da bu görselleri silmemiz gerekecek işte foreign key tam bu noktada devreye giriyor.

Eğer biz foreign key kullanırsak diyoruzki urunler tablomdan bir ürün silindiğinde sende o ürünün id sine ait ürün resimlerini otomatik sil diyoruz.

örneğin:

ALTER TABLE `urun_resim`
ADD CONSTRAINT `foreign_key_adi` FOREIGN KEY (`urun_id`) REFERENCES `urunler` (`urun_id`) ON DELETE CASCADE;

Yukarıdaki kodda urun_resim tablosuna foreign_key_adi adında bir trigger oluştruduk ve dedikki urunler tablosunda bir (DELETE) silme işlemi gerçekleştiğinde urun_id sini al ve urun_resim tablosundaki urun_resim.urun_id sütununda urunler.urun_id eşleşenleri sil dedik.

 

Yani biz urun_resim tablosuna bir foreign key oluşturduysak bir ürünü resimleriyle beraber silmek için aşağıdaki sql kodunu çalıştırmamız yeterli olacaktır.

DELETE FROM urunler WHERE urun_id='1'
-- urun_id si 1 olan ürünleri sil, urun_resim tablosunda urun_id si 1 olan resimleri sil

PDOPHPSQL - MySQL

Php Nöbetçi Eczaneler Sınıfı

Merhaba arkadaşlar bir projemde Erzurum’a ait nöbetçi eczaneler lazım olduğu için bende genel olarak bir nöbetçi eczaneler sınıfı yazdım. Şuan için ihtiyacımı görecek vaziyette olduğu için classı böylece bıraktım.
Classta istediğiniz eklemeler veya şunlarda olsaydı iyi olurdu dediğiniz yada sizin ilave ettiğiniz kodlar olursa benimle iletişime geçerseniz sevinirim.

Php Nöbetçi Eczaneler Sınıfı Kullanımı

Öncelikle Php Sınıfımızı  Github üzerinden indirip  sayfaya dahil edelim.

require_once("NobetciEczane.class.php");

Daha Sonra Sınıfımızı Başlatalım.


$eczane = new NobetciEczane("erzurum"); // Hangi İli İstiyorsak Parametre Olarak O ili Verelim

Daha Sonra Nöbetçi Eczanelerimizi Çekelim.

echo $eczane->Getir("json"); // json,array,text Veri Türünde Verilerimizi Çekebiliriz.

Genel Olarak Tam Kodumuz Şöyle.


header("Content-type:application/jSon");

require_once("NobetciEczane.class.php"); // Sınıfımızı Sayfamıza Dahil Ettik 

$eczane = new NobetciEczane("erzurum"); // Sınıfı Başlattık 

echo $eczane->Getir("json"); // Nöbetçi Eczanelerimizi jSon Olarak Çektik 




Not: Eczanelere Ait Veriler hastanebul.com.tr Sitesinden Alınmıştır.

PHP

Php Metin Arasına Reklam Sıkıştırma Fonksiyonu

Javascriptle falan örnekleri çok ama birde php ile metin arasına reklam sıkıştırma fonksiyonu yazayım dedim.
İyi kullanımlar.

function kelimeReklam($metin,$reklam,$kactaBir=30) {
	$yeniMetin = "";
	$kelimeDizi = explode(' ',trim($metin));
	for($i=0;$i<count($kelimeDizi);$i++){
		if($i % $kactaBir == 0 && $i!=0) $yeniMetin.= $reklam;
		$yeniMetin.=$kelimeDizi[$i];
	}
	return $yeniMetin;
}


echo kelimeReklam($metin,'<strong>VEHBİ</strong>'); // kullanım Şekli 1
echo kelimeReklam($metin,'<strong>VEHBİ</strong>',10); // kullanım Şekli 2


PHP

Php Extract Fonksiyonu Kullanımı

Php extract fonksiyonu bir dizinin name değerlerini değişken olarak çıktı verip değerlerini de o name ait value ye eşitliyor. birazdaha açıklayacak olursak;
Bir üye giriş formumuz olsun burda biz name i kullanici_adi ve sifre olan iki adet input oluşturduk daha sonra post ettiğimizde kullanıcı adı ve şifreye $_POST[‘kullanici_adi’] ve $_POST[‘sifre’] şeklinde erişebiliyoruz.
extract() fonksiyonu kullandığımızda ise;
Örn:

extract($_POST);

echo $kullanici_adi;
echo $sifre; 




şeklinde birdaha dizi ile uğraşmadan kullanıyoruz.

Daha anlaşılır olması açısından şu örneğimizi verelim.

$arr = array(
	'ad' => 'Vehbi',
	'soyad' => 'AKDOĞAN',
	'dogum_tarihi' => '01.01.1995',
	'dogum_yeri' => 'Erzurum'
);
extract($arr);

echo $ad; // şeklinde dizinin 1. indisindeki name ad olan değeri değişken olarak aldık 

Biz böyle iyi hoş çeviriyoruzda peki o değişken daha önce kullanılmışsa ?
Bunun içinde fonksiyonumuza extra parametreler ekliyoruz.

EXTR_OVERWRITE


Bir çakışma varsa mevcut değişkenin üzerine yazılır.

EXTR_SKIP


Bir çakışma varsa mevcut değişkenin üzerine yazılmaz.

EXTR_PREFIX_SAME

Bir çakışma varsa değişken isminin başına
önek konur.

EXTR_PREFIX_ALL


Tüm değişken isimlerinin başına önek konur.

EXTR_PREFIX_INVALID


Sadece geçersiz veya sayısal indisli değişkerlerin başına
önek konur.

EXTR_IF_EXISTS


Sadece simge tablosunda mevcut değişkenlerin üzerine yazılır, bunun
dışında bir şey yapılmaz. Geçerli değişkenleri bir liste halinde
tanımladıktan sonra bunlardan sadece örneğin
$_REQUEST dışında tanımlanmış olanlarını
çıkarmak için yararlıdır.

EXTR_PREFIX_IF_EXISTS


Sadece simge tablosunda öneksiz sürümü bulunan değişkenlerin önekli
sürümleri oluşturulur.

EXTR_REFS


Değişkenler gönderimli olarak çıkarılır. Dahil edilen değişkenler
dizi değerlerine gönderimli iseler bu
anlamlıdır. Bu seçeneği tek başına ya da VEYAlamak suretiyle başka
bir seçenekle birlikte kullanabilirsiniz.

Açıklamasını verdiğim parametrelerden bize uygun olanı ekliyoruz.
örneğin biz değişkenler çakışmasın istiyorsak şöyle bir kullanım yapıyoruz.


$dogum_yeri = 'Merkez';
$arr = array(
	'ad' => 'Vehbi',
	'soyad' => 'AKDOĞAN',
	'dogum_tarihi' => '01.01.1995',
	'dogum_yeri' => 'Erzurum'
);
extract($arr,EXTR_PREFIX_SAME,"vehbi");

echo "Eski Değişkenin Değeri: {$dogum_yeri} <br/> Yeni Değişkenin Değeri : {$vehbi_dogum_yeri}"; 

// $dogum_yeri değişkeni olduğu için yeni değişkeni $vehbi_dogum_yeri şeklinde önekli yaptık. 



daha detaylı bilgi için Php.net | extract() tıklayın.

PHP

Php DataTime Sınıfı Kullanımı

Merhaba arkadaşlar Php nin DataTime sınıfı Php ile tarih işlemlerini daha kolay yapabilmemiz için hazırlanmış bir sınıftır.

  • $tarih = new DateTime(‘yil-ay-gun’) : DateTime Sınıfını başlatır.
  • format() : İstediğimiz formatta tarih çıktısı verir.
  • modify() : Tarihi modifiye etmemizi Gün-ay-yıl eklememizi sağlar.
  • SetDate(yıl,gün,ay) : Tarihi değiştirmemizi sağlar.
  • diff(Tarih) : İki tarih arasındaki zaman farkını detaylı olarak verir.
  • getTimestamp(9) : Tarihimizin unix değerini bize verir.

DataTime sınıfı ile Bir Tarih Oluşturma

DataTime sınıfı normal bir tarih oluşturmaya izin verdiği gibi bugünün yarının tarihini oluşturmamızada yardımcı oluyor.
Örneğin:


$datetime1 = new DateTime('2015-07-01'); // 2015-07-01

$datetime2 = new DateTime('now'); // şuanki Tarih

$datetime3 = new DateTime('tomorrow');// yarının tarihi

Oluşturduğumuz Tarihi İstediğimiz Formatta Almak İçin DateTime Sınıfının format methodunu kullanıyoruz.

Örn:

$datetime2 = new DateTime('now'); 
echo $datetime2->format('Y-m-d');
// Çıktısı : 31/07/2015

Oluşturduğumuz tarihe gün-ay-yıl eklemek için modify methodunu kullanıyoruz.

$datetime2 = new DateTime('now'); // şuanki Tarih
echo  $datetime2->format('d/m/Y').'<br>'; 
// Çıktısı : 31/07/2015
$datetime2->modify("+1 day"); // 1 Gün Ekledik
echo  $datetime2->format('d/m/Y');  
// Çıktısı 01/08/2015 Yarının Tarihi 

Oluşturduğumuz tarihi tekrar düzenlemek için SetDate(yıl,gün,ay) methodunu kullanıyoruz.
Örn:


$datetime2 = new DateTime('now'); // şuanki Tarih
echo  $datetime2->format('d/m/Y').'<br>'; 
// Çıktısı : 31/07/2015
$datetime2->SetDate(1995,01,01);
echo  $datetime2->format('d/m/Y');  
// Çıktısı 01/01/1995  

Oluşturduğumuz İki Tarih Arasındaki Gün Ay Yıl Farkını diff() methoduyla buluyoruz.

Örn:

$datetime1 = new DateTime('2015-07-01'); // 2015-07-01
$datetime2 = new DateTime('now'); // şuanki Tarih

$fark = $datetime1->diff($datetime2);
print_r($fark); // gün ay yıl saat dakika saniye cinsinden değerler veiryor bize 
/*
Çıktısı 
DateInterval Object
(
    [y] => 0
    [m] => 1
    [d] => 0
    [h] => 9
    [i] => 53
    [s] => 16
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 0
    [days] => 30
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)
*/


Farklı Bir Örnek Olarak Şöyle Bir İşlemde Yapabiliriz.

$datetime1 = new DateTime('2015-07-01');
$datetime2 = new DateTime('2016-08-25');
$interval = $datetime1->diff($datetime2);
echo $interval->format('İki Tarih Arasında %d Gün %m Ay %y Yıl Fark Var ');
// Çıktısı İki Tarih Arasında 25 Gün 1 Ay 1 Yıl Fark Var

Şeklinde düzenli bir çıktı da alabiliriz.
Oluşturduğumuz Saatin Unix değerini almak için getTimestamp() methodunu kullanıyoruz.

Örn:

$datetime2 = new DateTime('now');
echo $datetime2->getTimestamp()."<br/>";
echo $datetime2->format("U"); // Format İle De Unix Değerini Alabiliriz

//Çıktı: 
//1438329652
//1438329652


Temel Hatlarıyla DateTime Sınıfı bu kadar daha fazlası için Php.Net | Datetime

PHP

Php İle Büyük Boyutlu Dosya Yükleme Sorunu

Php ile 3mb den büyük dosya yüklemeye çalıştığımızda eğer sunucu ayarlarımız default olarak duruyorsa dosya upload edilemez.
Bu bizim işimize gelmediği için dosya upload limitimizi yükseltmemiz gerekiyor.
Bu yükseltmeyi 2 şekilde yapabilmemiz mümkün.

1- Php.ini dosyamızı editleme

Öncelikle phpini dosyamızı açıyoruz ve php.ini dosyası içerisinde upload_max_filesize aratıyoruz.
Karşısında çıkan değeri örn:100 mb ççıkarmak istiyorsak oraya 100M yazıyoruz.

2- .htaccess ile upload limitini artırmak

.htaccess ile de upload limitimizi değiştirmemiz mümkün bunun içinde eğer .htacess dosyamız yoksa oluşturuyoruz varsa da mevcut .htaccess dosyamızı açıyoruz.
Daha sonra açtığımız dosyamız içine aşağıdaki kodları yazıyoruz.

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine on
  php_value max_execution_time 98888600
  php_value upload_max_filesize 100M
  php_value post_max_size 100M
</ifModule> 

Evet Arkadaşlar artık php ile 100Mb ye kadar dosya yükleyebilirsiniz.

PHP

Php $_REQUEST Kullanımı

Öncelikle REQUEST nedir ondan bahsedelim. Request istek anlamına geliyor arkadaşlar. ve biz php de bunu http isteği olarak tanımlıyoruz.

kısacası $_REQUEST bizim sayfamızdaki http isteklerini gösterir.

en çok kullanılan http istekleri $_POST, $_GET, $_COOKIE, $_SESSION dur.

Not: $_REQUEST ön tanımlı olarak $_POST , $_GET ve $_COOKIE değerlerini görüntüler bunu değiştirmek için php.net ten faydalanabilirsiniz.

 

Kullanımı

Basitçe bir kulanım gösterecek olursak arkadaşlar bir adet formumuz olsun ve get ve post değerlerini aynı anda nasıl alırız onu görelim.


<?php
header("content-type:text/html; charset=utf8");


if($_POST) {
	var_dump($_REQUEST);
}
?>

<form action="?act=ok" method="post">
	<input type="text" name="postDegeri" />
	<button type="submit">GÖNDER</button>
</form>


çıktı olarak bize get ile gönderdiğimiz act=ok değerini ve inputa girilen post değerini verecektir.
yani kısacası $_REQUEST methodumuz $_GET ve $_POST ile gelen verileri tek değişken ile alıp işlememize yarar.

dizi olarak yazdırabildiğimiz gibi tek bir değeride alabiliriz.

örneğin:

<?php
header("content-type:text/html; charset=utf8");


if($_POST) {
	echo "Tüm post ve get istekleri <br/>";
	foreach($_REQUEST as $name => $value)
		echo "name:{$name} -- value:{$value} <br/>";
	
	echo 'Post değerimiz:'.$_REQUEST["postDegeri"];
	echo '<br/> get değerimiz:'.$_REQUEST["act"];
}
?>

<form action="?act=ok" method="post">
	<input type="text" name="postDegeri" />
	<button type="submit">GÖNDER</button>
</form>

Şeklinde Kullanabiliriz.

PHP

CKE Editör Sunucuya Dosya Yükleme

merhaba arkadaşlar cke editör kullanalar için bu yazımda sunucuya nasıl dosya yüklenir onu göstereceğim.

Cke editör kullandığınızı varsayıyorum.

Öncelikle ckeditor\plugins\image\dialogs klasörü içindeki image.js dosyasını açıyoruz.

Daha sonra id:”Upload”,hidden:!0 kodunu aratıp buluyoruz ve id:”Upload”,hidden:0 olarak değiştiriyoruz.

Daha sonra cke editörümüze baktığımızda karşıya yükle sekmesinin aktif olduğunu görebilirsiniz. şimdi sıra geldi yüklenen dosyayı kaydettirmeye

Öncelikle CKEyukle.php adında bir php dosyası oluşturuyoruz ve kodlarımızı yazmaya başlıyoruz.

<?php
        require 'class.upload.php';
	$image = new Upload( $_FILES[ 'upload' ] );
	if ( $image->uploaded ) {
		 $image->file_new_name_body =uniqid();
		 $image->Process('../images/');
		 $resim_yolu=$image->file_dst_path . $image->file_dst_name;
		 
		 $resim_yolu = "http://".$_SERVER['SERVER_NAME']."/".str_replace("../","/",$resim_yolu);
		if ( $image->processed ) {
			$funcNum=$_GET['CKEditorFuncNum'] ; 
			$CKEditor=$_GET['CKEditor'] ; 
			$langCode=$_GET['langCode'] ;  
			echo "<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction($funcNum, '$resim_yolu', '$message');</script>"; 
		}
	}


?>

Dosya yükleme işlemini verotnet upload sınıfı ile yaptım dosyaları aşağıda sizlerle paylaşacağım.

Daha sonra CKE editörde sunucuya gönderilen dosyakalrın CKEyukle.php ye gitmesi için aşağıdaki CKE ediötrü çalıştıran kodumuza {filebrowserUploadUrl: ‘CKEyukle.php’} ekliyoruz.

<script src="ckeditor/ckeditor.js"></script>
<script>
	CKEDITOR.replace( '$name',{toolbar : 'Full', uiColor : '#d0d0d0' ,filebrowserUploadUrl: 'CKEyukle.php'});
</script>

Şeklinde olacak.

Evet arkadaşlar artık cke editör ile kolayca dosya yükleyebilirsiniz. CKEyukle.php dosyasını ve verotnet upload sınıfını aşağıdan indirebilirsiniz.

Buradan İndirin

PHP

Php Türkçe Tarih Fonksiyonu

Merhaba arkadaşlar İstediğim tarih fonksiyonunu bulamadığım için birtane de ben yazayım dedim.
Hazırlamış olduğum tükçe gün ve ay çevirme fonksiyonu isterseniz sadece ay veya hem gün hemde ay çevirmenize yardımcı olacaktır.

<?php

function turkceTarih($ay,$gun=NULL) {
	$tarih = array();
	if($gun) {
		$gunler = array(
		    'Pazartesi',
		    'Salı',
		    'Çarşamba',
		    'Perşembe',
		    'Cuma',
		    'Cumartesi',
		    'Pazar'
		);
		$gun = $gun > 7 ? ($gun % 7) : $gun;
		$tarih["gun"] = $gunler[$gun-1];
	}
	$aylar = array(
	    'Ocak',
	    'Şubat',
	    'Mart',
	    'Nisan',
	    'Mayıs',
	    'Haziran',
	    'Temmuz',
	    'Ağustos',
	    'Eylül',
	    'Ekim',
	    'Kasım',
	    'Aralık'
	);
	$ay = $ay > 12 ? ($ay % 12) : $ay;
	$tarih["ay"] = $aylar[$ay-1];
	return $tarih;
	
	
	
}
$gun = date("N"); // haftanın Günü
$ay = date("m"); // sayısal olarak ay değerimiz

/* kullanım Şekli 1 */

$tarih = turkceTarih($ay); // sadece ay çevirmek için kullanılır 
echo 'Şuan '.$tarih['ay'].' Ayındayız.<br/>';

/* ikinci kulanm şekli */

$tarih = turkceTarih($ay,$gun); // ay Ve Gün Çevirmek için kullanılır
echo 'Şuan '.$tarih['ay'].' Ayının '.$tarih['gun'].' Günündeyiz.<br/>';
?>





PHP