Bugün: 08/10/2008. Hoşgeldiniz!

Nisan, 2008

// This script will generate 14 Character long very secure password
function secure_pass()
{
// The total length of the password is PASS_LEN + LEVEL1_LEN + LEVEL2_LEN
$PASS_LEN = 10; // Length of basic password (a-z)
$LEVEL1_LEN = 2; // Number of level 1 characters (1-9)
$LEVEL2_LEN = 2; // Number of level 2 characters (any other)

$LEVEL0 = 'abcdefghijklmnpqrstuvwxyz'; // no security
$LEVEL1 = '123456789'; // better security
$LEVEL2 = '_-!?*:.'; // best security

srand((double)microtime()*1000200);
$password = NULL;

// Level 0 password generation
for ($i=0;$i<$PASS_LEN;$i++)
$password = $password.$LEVEL0{rand(0,strlen($LEVEL0))};

$pos = rand(0,strlen($password)-1);
$password{$pos} = strtoupper($password{$pos});

// Level 1 mix up
for ($i=0;$i<$LEVEL1_LEN;$i++)
{
$pos = rand(0,strlen($password)-1);
$password = substr($password,0,$pos).$LEVEL1{rand(0,strlen($LEVEL1)-1)}.substr($password,$pos);
}

// Level 2 mix up
for ($i=0;$i<$LEVEL2_LEN;$i++)
{
$pos = rand(0,strlen($password)-1);
$password = substr($password,0,$pos).$LEVEL2{rand(0,strlen($LEVEL2)-1)}.substr($password,$pos);
}

return $password;
}

kaynak: ordan burdan

<?php
function delete_dir($dir){
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if(is_dir($dir."/".$file)){
delete_dir($dir."/".$file);
}else{
chmod($dir."/".$file,0777);
unlink($dir."/".$file);
}
}
}
closedir($handle);
}
rmdir($dir);
}
?>

kaynak: ordan burdan

<?
function calendar($time=NULL){

// $time must be a valid unix timestamp to be used.
if (!preg_match('#[0-9]{1,10}#i',$time))
$time = time();

// Make some useful vars.
$zt = ' '; $zn = "
"; $out = ''; $day = 0;
$wd = array('Su','Mo','Tu','We','Th','Fr','Sa');
$utd = 86400; // Seconds in a day.

// Get the year and month based on $time.
$info = explode(' ',date('Y m',$time));

// Unix timestamp of the first and last day of the month.
$ut1 = mktime(0,0,0,$info[1],1,$info[0]);
$ut2 = mktime(0,0,0,$info[1],date('t',$ut),$info[0]);

// Output line 1: Full month and year.
$out .= rtrim(str_pad(date('F Y',$ut1),20,' ',STR_PAD_BOTH)).$zn;

// Output line 2: Days of the week.
for ($i=0;$i<count($wd);$i++){
$out .= $wd[$i];
if ($i < count($wd)-1) $out .= $zt;
}
$out .= $zn;

// Output lines 3 and up.
for ($ut=$ut1;$ut<=$ut2;$ut+=$utd){
$day++;

// Output line 3: Empty days.
if ($day == 1){
for ($i=0;$i<date('w',$ut);$i++){
$out .= ' '.$zt;
}
}

// Output: The day.
$out .= str_pad($day,2,' ',STR_PAD_LEFT);

// Output: Newline or tab.
if (date('w',$ut) == 6 || $day == date('t',$ut))
$out .= $zn; else $out .= $zt;

// If last day, stop.
if ($day == date('t',$ut))
break;
}

// Return the calendar!
return $out;
}
?>

kaynak: ordan burdan

<?
header("Content-Type: application/vnd.ms-excel");

echo "<table border=1>
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
</tr>
</table>";
?>

kaynak: ordan burdan

<?php
$filename = "hits.txt" ;

if(!file_exists($filename)){
$fd = fopen ($filename , "w+");
fclose($fd);
}

$file = file($filename);
$file = array_unique($file);
$hits = count($file);
echo $hits;

$fd = fopen ($filename , "r");
$fstring = fread ($fd , filesize ($filename)) ;
fclose($fd) ;
$fd = fopen ($filename , "w");
$fcounted = $fstring."n".getenv("REMOTE_ADDR");
$fout= fwrite ($fd , $fcounted );
fclose($fd);
?>

kaynak: ordan burdan

<?
$array = array(1, "hello", 1, "world", "hello");

print_r(array_count_values($array));

?>

kaynak: ordan burdan

Açılan listeler
İlk olarak ele almak istediğim konu açılan (dropdown) listeler ile ilgili. Biliyorsunuz ki açılan listeler yapmak üzere select ve option etiketleri birlikte kullanılır. Örnek olarak Türkiye'nin illerinden oluşan kısa bir liste hazırlayalım. Bu liste Marmara, Ege ve Akdeniz bölgelerinden 3 adet şehir içersin.

Böyle bir liste hazırlamak için genellikle alttaki gibi bir kodlama yapılıyor:

<select>
<option> Marmara -> İstanbul </option>
<option> Marmara -> Bursa </option>
<option> Marmara -> Kocaeli </option>
<option> Ege -> İzmir </option>
<option> Ege -> Aydın </option>
<option> Ege -> Denizli </option>
<option> Akdeniz -> Antalya </option>
<option> Akdeniz -> İçel </option>
<option> Akdeniz -> Adana </option>
</select>

<?

$yazi='bu yazı http://www.codecodu.com';
$yazi = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<a href="\0">\0</a>", $yazi);
echo $yazi;
?>

kaynak: ordan burdan

PHP ile çalışırken genellikle verilerimizi MySQL yada MSSQL gibi veritabanı sistemlerinde depolarız ancak bazı durumlarda veritabanı kullanmak gereksiz olabilir yani küçük bir txt dosyası ile işinizi halledebilecekken niye koskaca veritabanını kullanasanız ki? Bu Yazımda PHP ile TXT Dosyalarını kullanırken yapabileceğiniz işlemleri anlatacağım. Dosya Açma,Kapama,İçine Veri Yazma, Okuma gibi..

TXT Dosyasını Açmak
Bir TXT Dosyasını açmak için aşağıdaki fonksiyonu kullanabilirsiniz.

<?php

$fp = fopen( "notes/data/dosyaadi.txt" , "w" );

?>

Bu Fonksiyonun aldığı 1. parametre açılacak dosyanın yolunu belirtir. 2. Parametremiz ise dosyanın hangi kipte açılacağı olarak belirtebiliriz. Buraya hangi harflerin yazılabileceğine buradan bakabilirsiniz.
Bazı Durumlarda Dosyayı açarken sorunlar oluşabilir sorun oluşup oluşmadığını anlamak ve eğer var ise bir hata mesajı göstermek için şu kodu kullanabilirsiniz.

<?php

if(!$fp)

{

echo "Dosya Açılamadı, Lütfen Sonra Tekrar Deneyin.";

exit;

}

?>

bu kodu koyduğunuz takdirde PHP yorumlayıcısı eğer Dosyayı herhangi bir nedenden dolayı açamaz ise hata mesajı veriyor ve sayfanın yorumlanmasını durduruyor.

TXT Dosyasına Veri Yazmak
Bu işlem için fwrite() fonksiyonunu kullanacağız. kodlar aşağıda, açıklamaları ise onunda altında yazıyor

<?php

$metin = "Bu birinci satır.
Bu 2. satır.
Aha buda 3. satır.";

fwrite( $fp, $metin );

?>

Fonksiyonun aldığı parametreleri ve yaptığımız işi kısaca anlatmak gerekirse. öncekikle $metin adlı bir değişken oluşturduk ve bu değişkene bir değer verdik. ' . ' işaretlerinden sonra kullandığım
işareti ise bir alt satıra geçmeeyi ifade ediyor yani
koyarak yazdığınız zaman Veriler yazılırken
işaretinden sonra bir alt satıra yazıyor, eğer yazmaz iseniz siz istediğiniz kadar değişken değeri verirken enter ile bir alt satıra inin metin tek satır olarak kaydedilecektir.
Gelelim fwrite() fonksiyonuna bu fonksiyonda 2 tane parametre alıyor bunlardan birinci olan TXT dosyasına bağlanırken yaratmış olduğumuz değişkenin adı (bunu çoğu işlemde kullanıcaz, kısa bir isim vermeniz sizin açınızdan daha yararlı olabilir) 2. parametre ise TXT dosyası içine ne yazılacağı. biz burda direk değişken adı verdik siz " " işaretleri arasına istediğiniz metni yazabilirsiniz ama değişkene atamanız tavsiye olunur. Bu fonksiyon ile ilgili daha detaylı bilgi için tıklayınız.
TXT Dosyasına Açılan Bağlantıyı Kapatma
Bu işlem ise belkide yapacağımız en basit işlemlerden biri. bazı arkadaşlar "açılan dosyayı neden kapatmalıyız?" diye sorabilirler, çünkü eğer kapatmaz iseniz aynı anda bir başka şahıs site üzerinden dosyaya erişmeye çalıştığında sorunlar oluşabilir bu sebeple kapatmak en sağlıklısı kapatma işlemi için kodlar ise aşağıda.

<?php

fclose( $fp );

?>

fclose() fonksiyonu yalnızca 1 tane parametre alıyor oda bağlanırken kullandığımız değişkenin adı..
daha detaylı bilgi istiyorsanız sizi buraya alalım..
TXT Dosyasından Okumak
Bu işlemide yine PHP'nin bize sunduğu fonksiyonlarla yapacağız. buyrun kodlar.

<?php

$dosya = fread( $fp, filesize( $dosyaadi ) );

?>

bu fonksiyonu ve aldığı parametreleri açıklamak gerekirse. fread() fonksiyonu, 2 tane parametre alıyor 1. parametre göreceğiniz ve tahmin edebileceğiniz gibi TXT dosyasına bağlanırken kullandığımız değişken, 2. parametremiz ise dosyanın ne kadarlık boyutunu okuyacağımız. örneğin bir satır okumak istiyorsanız buraya 1024 girebilirsiniz biz tamamını okumak istediğimiz için PHP'nin Dosya boyunu kb cinsinden bulmaya yarayan filesize() fonksiyonu ile tüm dosyanın boyutunu verdik. burda $dosyaadi adlı değişken fopen() fonksiyonunda 1. parametreye verdiğimiz değer olabilir. bu fonksiyon ile ilgili detaylı bilgiyede bu adresten ulaşabilirsiniz.
TXT Dosyasını Silmek
Başlığa dikkatinizi çekerim, TXT dosyasından birşey silmeyi değil komple dosyayı sunucudan silmeyi kastediyorum bununla bu işlemide yine basit bir fonksiyon ile yapacağız. ahanda kodlar

<?php

unlink( "notes/data/names.txt" );

?>

kaynak: ordan burdan