Php İle Zaman Dilimini Ayarlamak

Geçenlerde localhost’umda PHP ile tarih / saat fonksiyonu ile ilgili birşeylerle uğraşırken farkettimki bilgisayarımdaki saat doğru fakat php’deki saat farklı bu zaman dilimleri ile ilgili olarak sıkıntı çıkartmıştı, normalde php.ini dosyasını düzenleyerek bu sorunu kolayca çözebilicekken php ile bunu ayarlamanın mümkün olduğunu hatırladım ve blogumda paylaşmaya karar verdim.

date_default_timezone_set() Fonksiyonunun kullanımı

Php scriptinizin her sayfasına dahil olan bir init.php, config.php, ayar.php gibi bir dosyanız varsa bu dosyanın uygun bir yerine aşşağıdaki kodu ekleyerek tarih / saat farklılığını düzeltebilirsiniz.

  <?php date_default_timezone_set('Europe/Istanbul');

Kaynak

date_default_timezone_set() fonksiyonunu php manuelden inceliyebilirsiniz.

Diğer zaman dilimlerini incelemek için yine php manuel Zaman dilimleri sayfasından inceliyebilirsiniz.

Dizi Elemanlarını Nesneye Çevirin

Bildiğimiz gibi oluşturdumuz dizileri birer nesneye/objeye çevirebilirsiniz. Sizin için ne yarar sağlar emin değilim. Açıkcası kullanım kolaylığı ve parantez hataları vs gibi basit ve can sıkıcı durumlardan kurtarıcağına inanıyorum. Birkaç örnekle başlayalım.

Uygulama 1- (object) Kullanımı

Bir dizi tanımladıktan sonra bir değişken oluşturup (object) $dizi şeklinde tanımlama yaptığınızda dizi elemanlarını nesnel olarak kullanabilirsiniz. Örneğin,

	// Bir dizi tanımlayalım
	$dizi = array(
	  'eleman1' => 'Dizi Elemanı Bir Olan İçerik',
	  'eleman2' => 'Dizi Elemanlarını Listelerken İkinci Elemanı Ayarlayalım',
	  'eleman3' => 'Buda üçüncü eleman saçma sapan cümlelerden birtanesi'
	);

	// nesneye çevirelim / Obje
	$obje = (object) $dizi;

	//Kullanımı
	echo $obje->eleman1;
	echo $obje->eleman2;
	echo $obje->eleman3;

Uygulama 2 – settype()

Tüm dizi tanımlama işlemlerini hallettikten sonra sayfanızdaki uygun bir alana bir üstteki örnekte yer alan $obje yerine settype(); Fonksiyonunu kullanıyoruz.

settype($dizi,'object');

Forumdaki Konuda Tartisin

Şartlı İfadelerin Kısaltılarak Kullanılması [if else]

Kod yazarken bir çok sorgulama yaparız eğer gelen değer şuna eşitse şunu yap değilse bunu yap şeklinde yaptırımlar hazırlamak için if else ifadelerini kullanırız. Ama bir sayfada durduk yere boş bir değişken tanımlayıp sonra if else sorgulamasını yapıp bu değişkeni tekrar döndürmekle uğraşmak gereksiz kod yığını olabilir. Hatta Olur.

Devamını Oku »

[Video] PHP İle Versiyon Kontrol Sistemi Hazırlamak

Hazırladığınız Scriptlerin Yeni Versiyonlarının Çıktığını Duyurmak İçin WordPressten Esinlenerek Hazıladığım Bu Videoda Basit Ve Kullanışlı Bir Sistem Hazırlamaya Çalıştım.

Videolar

Videolar 2 Parçadan Oluşmaktadır.

Örnek Dosyalar

Twitter, Facebook Tarzı Zaman Ayarı (x Önce)

Başlık İstediğim Gibi Olmadı Ama Neyse Resimlerden Ne Olduğunu Zaten Çok Net Anlayacaksınız.
Facebookta, Twitterda Bir İleti Vs Paylaştığınızda 5 Saniye Önce, 10 Dakika Önce, 20 Ay Önce Gibi Yazılar Görüyorsunuz. Paylaşıcağım Fonksiyon Sayesinde Bu işi Halledebilirsiniz.

Twitter Resimlerinde +18 Kelime Olduğunu Farkettim Ama Tekrar Sansürlemekle Uğraşmaya Üşendim Resimi Kusura Bakmayın :)

Önemli Not

Database’e Tarihi Kaydederken PHP’nin date() Fonksiyonunu Kullanamazsınız, Onun Yerine time() Fonksiyonunu Yada Query içerisinde SQL Fonksiyonu Olan UNIX_TIMESTAMP() Fonksiyonunu Kullanmalısınız.
İki Fonksiyon Arasında Fark Yok, Biri PHP Fonksitonu Biri SQL.

Kodlar

<?php
function time_stamp($session_time){
	$time_difference = time() - $session_time;
	$seconds = $time_difference;
	$minutes = round($time_difference / 60 );
	$hours = round($time_difference / 3600 );
	$days = round($time_difference / 86400 );
	$weeks = round($time_difference / 604800 );
	$months = round($time_difference / 2419200 );
	$years = round($time_difference / 29030400 );

	if($seconds <= 60){
		return $seconds .' Saniye Önce.';
	}else if($minutes <=60){
		if($minutes==1){
			return '1 Dakika Önce.';
		}else{
			return $minutes .' Dakika Önce.';
		}
	}else if($hours <=24){
		if($hours==1){
			return '1 Saat Önce.';
		}else{
			return $hours.' Saat Önce.';
		}
	}else if($days <=7){
		if($days==1){
			return '1 Gün Önce.';
		}else{
			return $days .' Gün Önce.';
		}
	}else if($weeks <=4){
		if($weeks==1){
			return '1 Hafta Önce';
		}else{
			return $weeks.' Hafta Önce.';
		}
	}else if($months <=12){
		if($months==1){
			return '1 Ay Önce';
		}else{
			return $months .' Ay Önce.';
		}
	}else{
		if($years==1){
			return '1 Yıl Önce.';
		}else{
			return $years.' Yıl Önce.';
		}
	}
}

Dosya Olarak İndirip Direk İnclude Edebilirsiniz.

Facebook Ve Twitter İle Giriş Sistemi Hazırlamak

Günümüzde Kimse Kayıt Sistemlerindeki Tonlarca Soruya Cevap Vermek İstemiyor. Kolayca Kayıt İmkanı Sağlamak Daha Cazip Durumda. Birçok Yerdede Gördüğünüz Facebook İle Giriş Yap, Twitter İle Giriş Yap Şeklinde Giriş / Kayıt Sistemleri’nin Aynısının Nasıl Yapıldığını Anlamaya Çalışıcam. Aynı Zamanda Bu Uygulamayı Kendi Sisteminizede Entegre Etmek Çok Kolay.


Database

Örnek Olarak Kullanıcı Tablosu Olarak users Adında Bir Tablo Oluşturucam Ve 5 Tane Alan Oluşturucam Bunlar Sırası İle id, email, oauth_uid, oauth_provider, username Olucak.

CREATE TABLE users
(
id INT PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(70),
oauth_uid int(11),
oauth_provider VARCHAR(100),
username VARCHAR(100)
);

Klasör Yapısı Ve Dosyalar

Bu Uygulama 3 Klasör (facebook,twitter ve config) Ve PHP Dosyaları İçermektedir. (Ekten İndirebilirsiniz.)

facebook //Facebook OAUTH Kütüphanesi
twitter //Twitter OAUTH Kütüphanesi
config
– functions.php
– dbconfig.php //Database Bağlantısı
– fbconfig.php //Facebook API Bağantı Dosyası
– twconfig.php //Twitter API Bağantı Dosyası
index.php
home.php
login-twitter.php
login-facebook.php
getTwitterData.php

Facebook Uygulaması

Facebook’a Giriş Yapıp APP Oluştur Sayfasından Bir APP Oluşturun Ve Ardından Facebook’un Size Verdiği app_id ve app_secret_id yi
fcconfig.php Dosyası İçindeki Gerekli Yerlere Ekleyin.

<?php
define('APP_ID', 'Facebook APP ID');
define('APP_SECRET', 'Facebook Secret ID');
?>

Twitter Uygulaması

Twitter APP Sayfasından Bir APP Oluşturup Twitterın Size Vericeği
Consumer key Ve Consumer secret Keylerini twconfig.php Dosyasına Ekleyin.

<?php
define('YOUR_CONSUMER_KEY', 'Twitter Key');
define('YOUR_CONSUMER_SECRET', 'Twitter Secret Key');
?>

dbconfig.php

Database Bağlantısını Ayarlayın Eğer Kendi Scriptinizi Kullanıyorsanız Zaten Yapmışsınızdır Bu Uygulamayı Yapmanıza Gerek Yok.

<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'User Name');
define('DB_PASSWORD', 'Password');
define('DB_DATABASE', 'DATABASE');
$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
$database = mysql_select_db(DB_DATABASE) or die(mysql_error());
?>

login-twitter.php

İndireceğiniz Dosyalar İçerisinde Anadizinde Bulunan login-twitter.php

$request_token = $twitteroauth->getRequestToken('http://siteniz.net/getTwitterData.php');

Alanındaki http://siteniz.net Adresini Kendi Site Adresiniz İle Değiştirin.

index.php

Kendi Scriptinize Veya Bu Scripti Kullanıcaksanız İzlemeniz Gereken Yol.

<?php
session_start();
if (isset($_SESSION['id'])) {
// Giriş Yapılmışsa Yönlendirilicek Sayfa
header("location: home.php");
}
if (array_key_exists("login", $_GET)) {
$oauth_provider = $_GET['oauth_provider'];
if ($oauth_provider == 'twitter'){
header("Location: login-twitter.php");
}else if ($oauth_provider == 'facebook'){
header("Location: login-facebook.php");
}
}
?>
//HTML Code
<a href="?login&oauth_provider=twitter">Twitterla Giriş Yap</a>
<a href="?login&oauth_provider=facebook">Facebookla Giriş Yap</a>


Herhangi Bir Sorun Yaşarsanız Veya Bir Sorunuz Olursa Yorumlardan Bana İletebilirsiniz.

PHP İle XML(RSS) Dosyası Oluşturalım.

RSS İtemleri Hakkında Ufak Bilgiler

Nitelik Aciklama
title Rss Başlığını Gösterir
description Site Hakkında Bilgi Gösterir
language RSS Dilini Gösterir tr, eng
copyright Site Copyright’ını Gösterir
managingEditor İçerik İle İlgili İletişim Adresi
webMaster Teknik Konulara Cevap Vericek Mail Adresi
pubDate Rss’in Oluşturulma Tarihi
lastBuildDate Rss’in Son Değiştirilme Tarihi
category Rss Kategorisini Belirler

Tüm Opsiyonel Rss Nitelikleri: language, copyright, managingEditor, webMaster, pubDate, lastBuildDate, category, generator, docs, cloud, ttl, image, rating, textInput, skipHours, skipDays
Gerekli RSS Nitelikleri: title, link, description

Örnek Bir XML Dosyası Oluşturalım El İle

<!-- xml tanımlaması -->
<?xml version="1.0" encoding="utf-8"?>
<!-- rss versiyonunu tanımlayalım -->
<rss version="2.0">
<!-- channel etiketi ile içeriğin başladığını belirtelim -->
<channel>
	<title>Rss Sitesine Verilen İsim / Başlık</title>
	<link>http://www.alixcan.net/</link>
	<description>Bu Statik Bir Rss Notudur.</description>
	<lastBuildDate>Mon, 12 Jun 2011 16:55:00 GMT</lastBuildDate>
	<managingEditor>AlixcaN@AlixcaN.Net</managingEditor>
	<webMaster>admin@alixcan.net</webMaster>
	<copyright>Copyright 2011, alixcan.net</copyright>
	<language>tr</language>

	<!-- Bir Kaç RSS İtemi Oluşturalım -->
	<item>
		<title>Konu Başlığı 1</title>
		<link>http://www.alixcan.net/siteuzanti/konu1</link>
		<category>Yazılar</category>
		<pubDate>Mon, 12 Jun 2011 15:21:00 GMT</pubDate>
		<description>Başlık İçinde Bulunan İçerik Burda Gösterilicek.</description>
		<author>AlixcaN</author>
	</item>
	<!-- İtem Bitiş Alanı-->

	<!-- İtem Başlangıç Alanı -->
	<item>
		<title>Konu Başlığı 2</title>
		<link>http://www.alixcan.net/siteuzanti/konu2</link>
		<category>Yazılar2</category>
		<pubDate>Mon, 12 Jun 2011 15:21:00 GMT</pubDate>
		<description>Başlık İçinde Bulunan İçerik Burda Gösterilicek.</description>
		<author>AlixcaN</author>
	</item>
	<!-- İtem Bitiş Alanı-->

	<!-- İtem Başlangıç Alanı -->
	<item>
		<title>Konu Başlığı 3</title>
		<link>http://www.alixcan.net/siteuzanti/konu3</link>
		<category>Yazılar2</category>
		<pubDate>Mon, 12 Jun 2011 15:21:00 GMT</pubDate>
		<description>Başlık İçinde Bulunan İçerik Burda Gösterilicek.</description>
		<author>AlixcaN</author>
	</item>
	<!-- İtem Bitiş Alanı-->

	<!-- İtem Başlangıç Alanı -->
	<item>
		<title>Konu Başlığı 4</title>
		<link>http://www.alixcan.net/siteuzanti/konu4</link>
		<category>Yazılar4</category>
		<pubDate>Mon, 12 Jun 2011 15:21:00 GMT</pubDate>
		<description>Başlık İçinde Bulunan İçerik Burda Gösterilicek.</description>
		<author>AlixcaN</author>
	</item>
	<!-- İtem Bitiş Alanı-->

<!-- Etiketler Kapatılır. -->
</channel>
</rss>

PHP İle RSS Dosyası Oluşturmak

<?php
include ("mysql_baglanti_dosyasi.php"); //Mysql bağlantısını yapan dosyanızı çağıtmanız şart.
header("Content-type: text/xml\n\n");

echo '
<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
<channel>
<title>Rss Sitesine Verilen İsim / Başlık</title>
<description>Bu Statik Bir Rss Notudur.</description>
<link>http://www.alixcan.net/</link>
<language>tr</language>';

$kategori = $_GET['kategori'];

$sql = mysql_query("SELECT * FROM yazilariniz WHERE kategoriniz='$kategori'");

while($row = mysql_fetch_assoc($sql)){
	echo '
		<item>
			<title>'.$row['baslik'].'</title>
			<description>'.$row['icerik'].'</description>
			<link>http://www.alixcan.net/yazilariniz.php?id='.$row['id'].'</link>
		</item>';
}

echo '
</channel>
</rss>';
?>

Yukarıdaki Sql Bilgilerini Ve Sorgularını Kendinize Göre Düzenlersiniz.
Kategori Bazlı RSSleride Oluşturmak İçin Örneğin RSS.php Diye Kaydettiniz Dosyayı

RSS.php?kategori=1 ,3,4,kategori1

Şeklinde Kategori Bazlı Bir Şekildede RSS Sistemi Yapabilirsiniz. Yukarıdaki Kod Buna Bir Örnektir.

Wamp Server’da .htaccess Çalıştırmak

Kullanışlı .htaccess Teknikleri Adlı Yazıdan Sonra localhosttada .htaccess Kullanımından Bahsetmek Gerekir Diye Düşündüm.

Wamp Serverda Çalıştırmak

Başlat Çubuğundaki Wamp İkonuna Sol Tık Yaparak Açılan Menüden Apache Sekmesinden Apache modülleri Sekmesinden Rewrite Module(Biraz Aşşağıda) Sekmesini Seçiyorsunuz.

Bu İşlemi Yaptıktan Sonra Wamp Kendini Otomatik Olarak Yeniden Başlatacaktır Eğer Başlatmazsa Kendiniz Manuel Olarak Başlatın.

Üyelik Sistemi Scriptinin Linkleri Yenilendi

PHP Giriş, Çıkış, Kayıt Ve Aktivasyon Scripti Adlı Konuda Dağıttığım Ufak Sctiptin Linklerinin Çalışmadığını Farkettim Ve Düzelttim. Ek Olarak Birde SQL deki Karmaşıklığı Düzelttim.