KodFeed Tam senlik :)

29Ağu/100

Codeigniter ile Form Kontrolü

Burada anlatıldığı üzere form kontrolleri codeigniter'da oldukça basit. Yapmanız gereken aslında 2 önemli unsur var. Bunlardan birincisi

$this->load->library("validation");
$this->load->library('form_validation');

kodu ile form_validation kütüphanesini çağırmak, ikincisi ise application/config/ dizininde form_validation.php adında bir dosya oluşturmak. Peki form_validation.php dosyası bizim ne işimize yarayacak. form_validation.php dosyası bizim formlarımız için oluşturacağımız kuralları arrayler içinde tanımlama yapacağımız yer aslında. Örnek form_validation.php dosyası aşağıdaki gibi olmalıdır.

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config = array(
	'newuser'=>array(
				array(
					'field' => 'namesurname',
 					'label' => 'Ad Soyad',
					'rules' => 'required'
					),
				array(
					'field' => 'username',
					'label' => 'Kullanıcı adı',
					'rules' => 'required'
					),
				array(
					'field' => 'password',
					'label' => 'Şifre',
					'rules' => 'required|matches[passwordconfirm]|min_lenght[4]|max_length[12]'
					),
				array(
					'field' => 'passwordconfirm',
					'label' => 'Şifre doğrulama',
					'rules' => 'required'
					),
				array(
					'field' => 'email',
					'label' => 'Email',
					'rules' => 'required|valid_email'
					)
				),
	"forgetpassword"=>array(
					array(
						'field' => 'email',
						'label' => 'Email',
						'rules' => 'required|valid_email'
						)
					)
		);
/* End of file form_validation.php */
/* Location: ./system/application/config/form_validation.php */

Yukarda verilmiş olan örnek form_validation.php dosyasında iki form kontrolü yapılmıştır. Bu formlardan biri yeni kayıt, diğeri ise şifremi unuttum formlarıdır. Yeni kayıtta namesurname, username, password,passwordconfirm ve email adlarında inputlar, şifremi unuttum formunda ise email alanı bulunmaktadır. En iç array'de bulunan field, input tağının adını, label input tağının etiketini, rules ise kuralları tanımlayacağınız değişkendir. Kurallar arasına | işareti konularak birden fazla kural tanımlayabilirsiniz.

Örnek kontroller dosyamız aşağıdaki gibi olursa;

class Yeniuye extends Controller {
	function index()
	{
			$data['title'] = 'Yeni Üye';
			$this->load->view('newuser',$data);
	}
	function kaydet()
	{
		if($this->form_validation->run('newuser') == FALSE)
		{
			$data['title'] = 'Yeni Üye';
			$this->load->view('newuser',$data);
		}
		else
		{
			$data['title'] = 'Tebrikler';
			$this->load->view('formsuccess',$data);
		}
	}
}

Ve formların bulunduğu view(örnekte newuser) dosyası aşağıdaki gibi olacaktır.

<?php
	echo form_open('/yeniuye/kaydet');
	echo validation_errors('<div>', '</div>');
?>
<p><label>Ad Soyad:</label><br />
<input type="text" name="namesurname" value="<?php echo set_value('namesurname'); ?>"/><br /> <br />
<label>Kullanıcı Adı:</label><br />
<input type="text" name="username" value="<?php echo set_value('username'); ?>"/> <br /> <br />
<label>Şifre:</label><br />
<input type="password" name="password"  value="<?php echo set_value('password'); ?>"/> <br /> <br />
<label>Şifre Tekrarı:</label><br />
<input type="password" name="passwordconfirm"  value="<?php echo set_value('passwordconfirm'); ?>"/> <br /> <br />
<label>Email: </label><br />
<input type="text" name="email" value="<?php echo set_value('email'); ?>"/> <br /> <br />
<div><input type="submit" value="Ekle" /></div>
</p>

Özetle anlatacak olursak, form_validation dosyasına formda kullanılan alanların adları ile arraylist oluşturulmakta ve bu arraylist içinde bulunan kurallar kontrol edilmekte. Formu post edince $this->form_validation->run('newuser') ile form kurallarına uyup uymadığı kontrol ediliyor. Eğer kurallara uymuyorsa false değer dönmektedir. False değer döner ise yapılması gereken sadece form sayfasını tekrar çağırmaktır. Tabi form sayfasında

echo validation_errors('<div>', '</div>');

yazmanız nerede hata verdiğini gösterecektir. Örneğin geçersiz e-mail adresi gibi. Tabi bu hatalar ingilizce görünecektir. Türkçe görünmesi için buradan türkçe dil dosyasını indirmeniz ve system/language dizinine taşımanız gerekmektedir. config.php içinde de $config['language'] = "english"; yerine $config['language'] = "turkish"; yazmanız yetecektir. Ben ilk aşamada türkçe karakter sorunu ile karşılaştım. Çözüm olarak dil dosyalarının başına

header('Content-Type: text/html; charset=utf-8');

yazdım. Sizde karşılaşırsanız bu şekilde çözüme gidebilirsiniz.

Olayı özetledikten sonra tek anlatılması gereken konu kuralların ne olduğudur. En çok kullanacağınız kurallar kısaca şunlardır;
required: Doldurulması zorunlu alanlar,
matches: Eşleşmesi gereken alanı gösterir. Örneğin şifre doğrulama ile şifre alanının bir biri ile aynı olması gibi. Kullanımı matches[passwordconfirm], şeklindedir.
min_length: Girilen parametrenin minimum uzunluk kontrolü yapılır,
numeric: Girilen değer nümerik olmak zorundadır.
integer: Girilen değer tam sayı olmak zorundadır.
valid_email: Girilen email adresinin geçerli olup olmadığını kontrol eder.
valid_emails: Girilen email adreslerinin geçerli olup olmadığını kontrol eder.

Ayrıca;
md5: Girilen değerin md5 karşılığını üretir.
xss_clean : Girilen değer kötü amaçlı veri bulunduruyorsa temizler.

Diğer kurallara ve özel kuralların nasıl oluşturulduğuna burada bakabilirsiniz.

Not: xss_clean default olarak true yaptığımdan buradaki örneklerde bahsedilmedi. Güvenlik için xss_clean'i defaultta true yapmıyacaksanız kurallara xss_clean eklemeniz gerekecektir.

Etiketler: , Yorum yok
29Ağu/100

/home dizinini partiona taşıma

Home dizinimi başka partiona taşımamdaki öncelikli amacım, herhangi bir problem ile karşılaştığımda verilerimin kaybolmasını önlemektir. Süprizlere hazırlıklı olmak gerekiyor ne de olsa.

Yeni bir Ubuntu kurulumu yaptınız fakat home dizinini başka bir partionda kurmadınız ve home dizinini partiona taşımak istiyorsunuz. Yapmanız gerekenler sırasıyla şunlar  :


$mkdir /mnt/newhome
$sudo mount -t ext3 /dev/sda5 /mnt/newhome

Yukarıda da görüldüğü gibi benim home partionım /dev/sda5 ve ext3 formatında. Siz burayı kendinize göre değiştirmelisiniz.

$cd /home/
$find . -depth -print0 | cpio --null --sparse -pvd /mnt/newhome/
$sudo umount /mnt/newhome
$sudo mv /home /old_home
$sudo mkdir /home
$sudo mount /dev/sda5 /home

Buraya kadar dosyalarımızı partiona kopyaladık. Eski home dizinin ismini değiştirip yeni bir home dizini oluşturduk ve home dizinine /dev/sda5'i mount ettik. bundan sonra yapılması gereken ise "/etc/fstab" dosyasına aşağıdaki satırın eklenmesi.

/dev/sda5 /home ext3 nodev,nosuid 0 2

Artık home dizinimiz yeni partionda çalışacaktır. Artık eski home dizinimizi silebiliriz:

sudo rm -r /old_home

Kaynak:
http://embraceubuntu.com/2006/01/29/move-home-to-its-own-partition/

Etiketler: , Yorum yok
16Ağu/100

Clock skew hatası

Yazmış olduğunuz bir uygulamayı derlediniz ve derleme sonucunda "Clock skew detected. Your build may be incomplete" hatası, tarih saat tutarsızlığından kaynaklanmaktadır. Makefile derleyeceği dosyaların tarihini kontrol ederek o dosyanın ne zaman derlendiği bilgisini kontrol eder. Ancak sistem saati ile tutarsızlık var ise bu hatayı alırsınız. Bu sorunu gidermek için;


sudo apt-get install rdate

sudo rdate time.nrc.ca

komut satırlarını çalıştırmanız yeterlidir.

Etiketler: , Yorum yok
27May/100

404 Hatası

Birçok kişi aradığını bulamadığından dolayı yakınır ve 404 hatası görünce hayal kırıklığına uğrardı. Fakat olay sadece bir dosyanın olmaması değil. 404 hatasının kendi içinde birkaç çeşittir. Herkesin bildiği gibi 404 hatası sadece dosyanın olmamasından dolayı alınan bir hata değil aksine dosya yerinde olsa da alınabilinecek bir hata. Burada da görüldüğü gibi 404 hatası 3 problemden dolayı oluşmaktadır. Bunlar microsoftun deyimi ile:

404,1-Web sitesi, istenen bağlantı noktası üzerinde erişilemiyorBu hata, erişmeye çalıştığınız Web sitesinin, bu isteğin geldiği bağlantı noktasına ilişkin istekleri kabul etmeyen bir IP adresi olduğunu gösterir.
404.2 – Kilidi ilkesi bu isteğin. engellerIIS 6. 0'da, bu istek Web hizmeti uzantıları listesinde yasaklanmış olduğunu gösterir.
404.3 - MIME eşleme ilkesi bu isteğin. engellerBu sorun, aşağıdaki koşullar geçerli olursa oluşur:Istenen dosya adı uzantısı için işleyici eşlemesi yapılandırılmadı. Web sitesi veya uygulama için uygun bir MIME türü yapılandırılmadı.

Bir sorun ile karşılaştığınızda hangi hatayı aldığınızı öğrenmek için loglardan bakabilirsiniz. Logları açmak için IIS'ten siteyi sağ tıklayıp özelliklerine girip Loglamayı etkinleştir seçeneğini tıklamanız gerekmekte. Bu aşamadan sonra "C:\WINDOWS\system32\LogFiles" dizininden hata raporlarını inceleyebilirsiniz. Logu incelemeye başladığınızda aşağıdaki gibi bir loglama göreceksiniz;

#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status

2010-05-27 06:12:35 W3SVC998577302 127.0.0.1 GET /WSTest.asmx - 80 - 127.0.0.1 Mozilla/4.0+(..) 404 2

Ayrıca 4o4,2 hatası alanlar için önerim şu IIS'te Web Service Extensions altında ASP.net'in durumunu kontrol ediniz. Durumu engelli olabilir, engelli ise izin veriniz.

Etiketler: Yorum yok
12Nis/103

MSSQL Random Veri Seçme

Öncelikle bir veritabanında yapmış olunan count sorgulama işlemi tabloda veriler fazla ise bir hayli yavaştır.

13Oca/101

Linux’de youtube’a giriş

Windows'ta youtuba girişin hosts dosyası ile nasıl yapıldığı şurada anlatılmıştı. Linux işletim sisteminde de aynı yol ile youtuba giriş yapabilirsiniz. Bunun için tek yapmanız gereken /etc/hosts dosyasını düzenlemek olacaktır.

9Oca/100

Windows’ta youtuba giriş

Mahkeme kararıyla kapatılan youtube sitesine giriş için bir çok yöntem bulunuyor. Bunlardan en güvenlisi hosts dosyasını değiştirmek olacaktır. Fakat uzun bir aradan sonra youtube'a giriş yapabilmesine rağmen videoları izlemek istenildiğinde An error occurred, please try again later hatası çıkmaktadır. Yine hosts dosyasını değiştirerek bu hatayı düzeltilebilirsiniz.

17Ara/091

PHP’de Wordpress ping olayı

Selam arkadaşlar,

Vakit bulunca wordpress'teki ping olayını yazacaktım fakat r10.net'ten Lacremel arkadaşımız bu kodlamayı yapmış ve paylaşmış. Kendisine paylaşımından dolayı teşekkür ederim.

Öncelikle pingleme ne işe yarar ondan bahsedelim. Birçok webmaster'ın sorunudur aslında arama motorlarının indexlemesi. Bu pingleme sayesinde yeni bir konu açtığınızda ping atarak arama motorlarının sitenize gelip indexleme yapmasını hızlandırırsınız. Öyleki wordpress'te bir yazı yazdığınızda yaklaşık 15 dakika içinde sayfanız indexlemiş olmaktadır.

Etiketler: Okumaya devam et
11Ara/093

PHP’de Cannot modify header information hatası

Selam arkadaşlar,

Warning: Cannot modify header information - headers already sent by (output started at ....) in ... on line xx
hatası tek hatadan dolayı çıkıyor oda headers fonksiyonunu kullanmadan önce bir çıktı almanızdan kaynaklanır. Bu çıktı sizin isteyerek almış olduğunuz veyahut istemeden almış olduğunuz bir çıktı olabilir.

Etiketler: , Okumaya devam et
16Kas/092

PHP ile FTP dizinini görüntüleme

Son günlerde uğraşmış olduğum PHP ile FTP işlemleri belki birilerinin işine yarar ümidiyle paylaşmak istedim.

FTP'ye PHP ile bağlanmak için PHP'nin mevcut fonksiyonlarından ftp_connect kullanılmaktadır. ftp_connect fonksiyonunu bir çok yerde kullanılması nedeniyle global bir değişkene atamak daha mantıklıdır.

global $ftpcon;
$host = "localhost";
$ftpcon = ftp_connect($host) or die("Sunucuya bağlanılamadı.(".$host.")");

Bağlantı sağlandıktan sonra yapılması gereken iş şüphesiz login olmaktır. Yine PHP'de mevcut fonksiyon ftp_login imdadımıza yetişmektedir. ftp_login fonksiyonu true veya false bir bool değer döndermektedir.

Etiketler: , Okumaya devam et