nedir

Bir diziye yeni değişkenler eklemek için, array_push() fonksiyonuna mevcut dizinin adını yeni değerleri yazarız. Örnek:

:

$birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika" );

$yeni = array_push ($birinci_dizi, "Altun" , "Taç" , "Civelek" , "Tabak" );

Burada $yeni adlı değişken sadece $birinci_dizi adlı dizinin yeni eleman sayısını tutar. array_push(), kendisine adını verdiğimiz dizinin içeriğini değiştirir. Yukarıdaki örnekte içine yeni değerler yazılan dizinin elemanlarını görüntülemek için şöyle bir kod yazabiliriz:

:

print ("$birinci_dizi adlı dizide $yeni_dizi değişken var<br>");

foreach ( $birinci_dizi as $ogrenci ) {

print ("$ogrenci <br> ");

}

kaynak: ordan burdan

Bir dizi-değişkenin ilk elemanını tümüyle silmek için array_shift() fonksiyonunu kullanırız. Bu fonksiyona sadece birinci elemanı silinecek dizinin adını vermek yeter. Örnek:

:
$birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika" );

$silinen = array_shift ($birinci_dizi);

array_shift(), adını verdiğiniz dizinin içeriğini değiştirir; buradaki örnekte, $silinen adlı değişken dizinin silinen birinci elemanın değerini tutar.

kaynak: ordan burdan

Bir dizi-değişkenin bütün elemanları yerine bir kesitini kullanmak istiyorsak, bunu array_slice() fonksiyonu ile yapabiliriz. Bu fonksiyona kesit alınacak dizinin adı, kesitin başladığı yer kaç değişken alınacağı argüman olarak verilir. Örnek

:

$birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika", "Altun" , "Taç" , "Civelek" , "Tabak");

$kesit = array_slice ($birinci_dizi , 3, 4);

Burada, `ye $kesit adlı yeni dizi değişkene, $birinci_dizi adlı dizinin 3`ncü değerinden itibaren (3 dahil) dört değeri yerleştirmesini bildiriyoruz. array_slice(), adını verdiğimiz değişkenin içeriğine dokunmaz; yeni dizi değişken oluşturulur.

kaynak: ordan burdan

Bir dizinin içindeki değerleri alfabetik veya küçükten büyüğe doğru sıralamak için sort() fonksiyonunu kullanırız. Örnek:

:

$birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika", "Altun" , "Taç" , "Civelek" , "Tabak");

sort ($birinci_dizi);

, dizideki bütün değerleri A`dan Z`ye sıraya sokacaktır. sort() fonksiyonu dizinin içeğini değiştirir. Bir diziyi Z`den A`ya veya büyükten küçüğe doğru sıralamak için de rsort() fonksiyonunu kullanabilirsiniz. (PHP4.0 çe karakterleri mıyor.) Bir noktada dikkatli olmak gerekir: bu fonksiyonu ilişkili (değerlerin anahtarı olarak endeks adı bulunan) dizide kullanırsanız, , anahtar değerlerini (endeks adlarını) atar, yerine 0`dan itibaren rakam koyar. Bunu önlemek için, ilişkili dizileri asort() veya ksort() fonksiyonu ile sıralamak gerekir.

kaynak: ordan burdan

ü = %FC

Ü = %DC

ö = %F6

Ö = %D6

ı = %FD

İ = %DD

ğ = %F0

Ð = %D0

ş = %FE

Ş = %DE

ç = %E7

Ç = %C7

% = %25

& = %26

[ = +%5B

] = %5D

{ = %7B

} = %7D

? = %3F

= = %3D

Şimdi biraz dizi-değişken içine dizi-değişken koyalım! Yani ziyaretçinin göndereceği bilgiler, buradaki gibi SELECT..OPTION etiketinde yapacağı sadece bir unsur seçimi olmasın da çoklu-seçim olsun. bilgilerinizi yoklarsanız, bunu SELECT etiketini MULTIPLE parametresi ile yapabildiğimizi hatırlayacaksınız. Biraz önceki kaydettiğimiz dosyanın sadece ünü aşağıdaki gibi geliştirerek, formlar03a.htm adıyla kaydedelim:

:

< ACTION="formlar03a_isle." METHOD="GET">

Adınız, Soyadınız: <INPUT TYPE="TEXT" NAME="adi">

<BR>

Elektronik Adresiniz: <INPUT TYPE=TEXT" NAME="adres">

<BR>

Hangi notunuzu öğrenmek istiyorsunuz?

<BR>

<SELECT NAME="hangi_not[]" MULTIPLE>

<OPTION>Sınav 1

<OPTION>Sınav 2

<OPTION>Ortalama

</SELECT>

<BR>

<INPUT TYPE="SUBMIT" VALUE="Gönder Gitsin!"> <INPUT TYPE="RESET" VALUE="Vazgeç, Gönderme!">

</>

Burada, `in SELECT.. OPTION etiketlerini kullanarak, ziyaretçimizden hangi sınav notunu öğrenmek istediğini bize bildirmesini istiyoruz. Dikkat ettiğiniz gibi, bu kez , elde edeceği verileri formlar03a_isle. ına yollamak istiyor. `daki <SELECT NAME="hangi_not[]" MULTIPLE> satırına da dikkat ettiniz mi? Bu satırın özelliği, daha önceki SELECT..OPTION etiketinden farklı olarak ziyaretçinin çoklu seçme yapmasına imkan veriyor; elde edilecek değeri "hangi_not[]" alanının değeri olarak bildiriyor. HTTP iletişim ilkelerine göre çoklu-seçim halinde seçilen OPTION değerleri Sunucu`ya aynı alan adının şısına yazılarak gönderilir. Formumuzun göndereceği bilgi yumağını satırlar haline getirirsek (HTTP ünü atar URL kodlarını çözersek) bunu görebiliriz:

Alıntı:
adi=Şahika Tabak

adres=stabak@somenet.com

hangi_not[]=Sınav 1

hangi_not[]=Sınav 2

hangi_not[]=Ortalama

Kendisine böyle bir bilgi yumağı gelen Server, bunun tümünü $HTTP_GET_VARS dizi değişkeninin içine yazacaktır. Başka bir deyişle, bu dizi değişken çıok-boyutlu çok-elemanlı ilişkili-dizi olduğu için, içinde rahatça aynı isimde değişkenlere farklı endeks sayısı verecektir. Fakat sorun `nin, bu dizinin içinden değişkenleri almasında ortaya çıkacak endeks ismi aynı olan değişkenler sorun olacaktır. Bunu değişkenin endeks adı olarak kullanılacak kelimenin yanına köşeli parantez koyarak çözüyoruz. bu adı görünce, bunun çok-elemanlı bir dizi değişken olacağını anlayacaktır.

Eğer bu formu, formlar03_isle. ına gönderseniz (bunu yapabilirsiniz?), "hangi_not" değişkeninin değeri olarak Browser penceresinde "array" kelimesinin belirdiğini görebilirsiniz. Çünkü açısından bu değişken bir dizidir içinde anahtar=değer çiftleri vardır. Daha önce anahtar=değer çiftlerini geçici değişkenlere atayıp bir döngü ile yazdırmıştık. Şimdi, kodumuzu bu duruma uygun hale getirelim. Biraz önce yazdığımız işleme ının sadece ünü şöyle değiştirerek, formlar03a_isle. adıyla kaydedelim:

:

<?

foreach ($HTTP_GET_VARS as $anahtar=>$deger ) {

if ( gettype ($deger ) == "array" ) {

print ("$anahtar == <br>n");

foreach ( $deger as $yeni_degerler )

print (".. $yeni_degerler<br>");

}

else {

print ("<b>$anahtar = $deger <br>n");

}

}

?>

`nin gettype() fonksiyonunu daha önce görmüş bir değişkenin türünü anlamaya yaradığını öğrenmiştik. Burada $HTTP_GET_VARS değişkeninden aldığımız değerlerden herhangi birinin gerçekten bir değişken değeri mi, yoksa bir dizi (array) mi olduğunu gettype() ile anlayabiliriz. Eğer değer olarak şımıza "array" kelimesi çıkarsa, bunu kendi içinde anahtar değer olarak bölebilir herbirini ayrı ayrı görüntüleyebiliriz. Eğer $HTTP_GET_VARS değişkeninden aldığımız değer, dizi değil de gerçekten bir değişken ise (else) doğruca bu değeri anahtarını yazdıracaktır. Sonuç ise dizi-değişken içindeki dizi-değişkenin değerlerinin tek tek görüntülenmesi olacaktır.

kaynak: ordan burdan

Internet`ten hep dosya "indiririz!" Bir sunucuya, Web ziyaretçisi olarak gönderebildiğimiz tek şey ise, Formlara yazdığımız yazılardır! Oysa `in INPUT INPUT etiketinin çok az kullanılan TYPE="file" parametresi ziyaretçiye Web sunucusuna dosya gönderme (upload) imkanı sağlar. HTTP protokolü buna imkan vermekle birlikte Browser`lar bu imkanı kullanmaya ileri sürümlerinde kavuştular. PHP4, ziyaretçilerimizin sitemize dosya göndermeleri halinde, bu dosyaların yönetimine ayrıca kolaylık sağlayan değişkenlere sahiptir. Önce şu dosyayı, dosya_gonder. adıyla kaydedin:

:

<>

<HEAD>

<TITLE> de Dosya Gönderme</TITLE>

<meta http-equiv="content-type" content="text/; charset=ISO-8859-9">

<meta http-equiv="Content-Type" content="text/; charset=-1254">

</HEAD>

<?

$dosya_dizin = "/inetpub/wwwroot/";

$dosya_url = "http://server/";

if ( isset ( $dosya_gonder )) {

print ("<b>Yol:</b> $dosya_gonder<br>n");

print ("<b>Adı:</b> $dosya_gonder_name<br>n");

print ("<b>Boyut:</b> $dosya_gonder_size<br>n");

print ("<b>Tür:</b> $dosya_gonder_type<br>n");

copy ( $dosya_gonder, "$dosya_dizin/$dosya_gonder_name" )or die ("Dosya kopyalanamıyor!");

if ( $dosya_gonder_type == "image/gif" ||$dosya_gonder_type == "image/pjpeg" ) {

print ("<img src="$dosya_url/$dosya_gonder_name"><p>nn");

}

}

?>

</BODY>

< ENCTYPE="multipart/-data" ACTION="<? print $PHP_SELF?>" METHOD="POST">

<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="951200">

<INPUT TYPE="file" NAME="dosya_gonder"><BR>

<INPUT TYPE="SUBMIT" VALUE="Dosya Yolla!">

</>

</BODY>

</>

Bu programda <INPUT TYPE="file" NAME="dosya_gonder"> etiketinde kullandığımız NAME parametresine verdiğimiz değer, ziyaretçimizin göndereceği dosyanın sunucu tarafından kaydedileceği geçici dizinin tam yolunun yazılacağı değişkenin adı olacakdır. , bu dosya ile ilgili her türlü bilgiyi bu adla kaydedektir. , ziyaretçiden bir dosya yla aktarıldığı anda olarak bu isimden yararlanarak şu değişkenleri oluşturur:

$dosya_gonder Geçici dizini yolu (UNIX`te /tmp/phpXXX, `da /TEMP0phpXXX. Burada XXX yerine ziyaretçilerin gönderdiği dosyaların sıra numarasını göreceksiniz.)

$dosya_gonder_name Ziyaretçinin gönderdiği dosyanın adı.

$dosya_gonder_size Ziyaretçinin gönderdiği dosyanın boyutu.

$dosya_gonder_type Ziyaretçinin gönderdiği dosyanın türü

ayrıca bu bilgileri $HTTP_POST_FILES dizi-değişkeninde de tutar.

Yukardaki programda şu iki değişken çok önemlidir:

$dosya_dizin = "/inetpub/wwwroot/";

$dosya_url = "http://server/";

$dosya_dizin adıyla oluşturduğumuz değişkene vereceğimiz değer, ziyaretçinin göndereceği dosyanın kopyalanacağı klasörün adı olarak kullanlacaktır. Sözgelimi ortamında buraya kişisel Web sunucunun varsayılan klasörünün adını yazabilirsiniz. Ziyaretçinin göndereceği dosya bir GIF biçiminde grafik dosyası ise bunu Browser`da görünteleyeceğimiz için, bu dizinin Web`e açık olması, başka bir deyişle bizim Web sunucumuzun erişebileceği bir dizin olması gerekir. Nitekim, $dosya_url değişkenine değer olarak bu klasörün URL adresini veriyoruz. Bu iki değişkeni gerçek Web sunucu için yazacağımız zaman, bizim sunucumuzun varnaydığı fiziksel klasör adını yolunu bulmamız gerekir. Bunu daha önce yazdığımız . veya formlar01. programlarını sitemizde çalıştırarak bulabiliriz. (?) Sözgelimi, http://www.mycgiserver.com/~ocal/ adresindeki sitenin fiziksel ile bu adresin URL`ini dikkate alarak bu iki değişkeni yazmış olsaydık, şunu yazacaktık:

$dosya_dizin = "/wwwroot/mycgiserver.com/members/uNhM13/";

$dosya_url = "http://www.mycgiserver.com/~ocal/";

kaynak: ordan burdan

include komutu gibi işleyen ancak ondan farklı olarak kendisini çağıran programa değer veremeyen require komutu da kullanılabilir hale geldi. İçinde bir hesaplama bulunmayan veya kendisini çağıran dosyaya bir return komutu ile bir değer dönmesini sağlaması beklenmeyen dosyaları require komutu ile de ana ımıza dahil edebiliriz.
include ile alacağımız dosyaların adını ının oluşturmasını sağlayarak kimi zaman pogramlarımıza dinamizm sağlamamız mümkündür. Sözgelimi bir menü maddesinin tıklanmasıyla harekete geçen bir fonksiyonunun, ziyaretçinin gideceği sayfaya göndereceği değeri include komutuna dosya adı oluşturmakta kullanabiliriz. Bazen include komutuna dosya adı oluşturmakta içindeki döngülerden yararlanınız. Örnek:

:

for ( $i = 1 ; $i <= 3 ; ++$i) {

include ("dosya0" . $i . ".x");

}

kaynak: ordan burdan

Dosya var mı? file_exits()

Bir dosyanın var olup olmadığını denetleyen bu fonksiyon, dosya varsa true/doğru, yoksa false/yanlış sonucunu verir. Örnek:

:
if ( file_exits ( "bir_dosya.txt" ) )

print ("Dosya var!");

Dosya yoksa, "Dosya var!" yazmadan yoluna devam edecektir.

kaynak: ordan burdan

Kimi zaman klasörler de tıpkı dosyalar gibi adlandırılabilir. Bir dizinde gördüğümüz ismin gerçekten bir dosyaya ait olup olmadığını bu fonksiyonla sınarız. Sınama doğru, yani isim bir dosyaya ait ise fonksiyon true/doğru, değilse false/yanlış sonuç verir. Örnek:

:

if ( is_file ( "bir_dosya.txt" ) )

print ("Bu bir dosyadır!");

İsim bir dosyaya ait değilse "Bu bir dosyadır!" yazmadan yoluna devam edecektir. Sınamayı ismin bir klasöre ait ait olup olmadığına bakrarak da yaparız. Bu durumda is_dir() fonksiyonunu kullanırız. isim bir dizine aitse fonksiyon true/doğru, değilse false/yanlış sonuç verir. Örnek:

:

if ( is_dir ( "/bir_isim" ) )

print ("Bu bir dizindir!");

İsim bir dizine ait değilse "Bu bir dizindir!" yazmadan yoluna devam edecektir.

kaynak: ordan burdan

Adını verdiğimiz dosyanın boyutunu byte olarak bildirir: Örnek:

:

print ("Dosyanın boyutu:");

print filesize( "bir_dosya.txt" );

kaynak: ordan burdan

Adını verdiğimiz dosyaya son erişim tarihini bildirir. ne var ki bu bilgi Unix`in "epoch" biçimindedir: Örnek:

:

print ("Dosyanın son erişim tarihi:");

$dosya_tarihi = fileadate( "bir_dosya.txt" );

print ( " $dosya_tarihi " );

Eğer bu dosyanın son erişim tarihi 28 Temmuz 2000, Cuma 24:00:00 ise, , Browser penceresine 964731600 yazacaktır. Bu komutun ürettiği bilgiyi, date() fonksiyonu ile anlaşılabilir hale getirebiliriz:

:

print ("Dosyanın son erişim tarihi:");

$dosya_tarihi = fileadate( "bir_dosya.txt" );

print date("D d M Y G:i:s H", $dosya_tarihi );

Bu kez Browser penceresine 28 Jul 2000 242:00:00 00 yazdıracaktır. verilerinin date() fonksiyonu ile biçimlendirilmesini daha sonra ayrıntılı ele alacağız.

filemtime(), bir dosyanın son değiştirildiği tarihi; filectime(), ise oluşturulduğu tarihi, yine Unix Epoch biçiminde bildirir; bu verinin anlaşılır biçimde görüntülenmesi için `nin date() fonksiyonu kullanılır.

kaynak: ordan burdan

Bir fonksiyonunun kendisinden beklenen işi yapamaması halinde oracıkta durdurulmasını die() komutu sağlar. "Öl!" anlamına gelen bu fonksiyona ekranda görüntülenmesini istediğimiz bir metni parametre olarak verebiliriz. Bu bölümdeki örnekler bu komutla birlikte şöyle yazılabilir:

$dosya = fopen( "bir_dosya.txt" , `a` ) or die ("Dosya açılamıyor!") ;

Bu komutu kişisel Web sunucusunda denerken, dosyanın açılacağı dizinin yolunu belirtmemiz gerekir. Örneğin:

:

<?

$dosya_dizin = "/inetpub/wwwroot/";

if ($dosya = (fopen ("$dosya_dizin/bir_dosya.txt" , `r`) ) ) {

print ("Dosya açıldı!");

}

else {

print ("Dosya açılamadı!");

}

?>

kaynak: ordan burdan

Açtığımız bir dosyanın içindeki yazıları çoğu zaman ımıza satır satır okuturuz. `de bir dosyanın içeriğini satır satır okutmamızı fgets() fonksiyonu sağlar. Bu fonksiyona daha önce açılmış olan dosyanın işaret değişkenin adını okunmasını istediğimiz asgari byte ölçüsünü parametre olarak veririz. fgets() fonksiyonu verdiğimiz uzunluk ölçüsüne ulaşmadan önce dosyada bir yeni satır işareti görürse, veya dosyanın sonuna ulaşırsa, okumaya son verir. Bu fonksiyonu çoğu zaman bir döngünün içinde kullanırız. Ancak döngünün vermemesi için, `nin dosyanın sonuna ulaştığında döngüyü durdurmamız gerekir. fgets() fonksiyonunun okuyacağı satırı bir fonksiyona değer olarak verebilir daha sonra bu değeri programlarımızda kullanabiliriz. Örnek:

:

<?

$dosya_dizin = "/inetpub/wwwroot/";

if ($dosya = (fopen ("$dosya_dizin/bir_dosya.txt" , `r`) ) ) {

print ("Dosya açıldı!<br>");

}

else {

print ("Dosya açılamadı!");

}

while ( ! feof ($dosya ) ) {

$satir = fgets ( $dosya, 1024 ) ;

print ("$satir<br>");

}

fclose ($dosya);

?>

Bu kişisel Web sunucuda önce varolan bir dosyayı açıyor; bu dosyanın işaretçisi olarak $dosya değişkenini kullanıyor. Daha sonra bir while() döngüsü içinde bu değişkeni 1 KB (1024 byte) ölçüsünü parametre olarak vererek fgets() fonksiyonu ile dosyadan bir satır okutuyoruz. fgets() fonksiyonundan dönen bir satırlık metni, burada $satir değişkenine atıyoruz; daha sonra print() fonksiyonu ile bu satırı Browser penceresine gönderiyoruz. Bu işlemi Internet`teki bir Web sunucuda uygulayabilmek için yazma/okuma izni bulunan Web sunucunun erişebileceği bir dizinin adını vermeniz gerekir. Bu işlemin içinde yapıldığı while() döngüsünün devam şartı olarak kullandığımız ifadede yer alan feof() fonksiyonu bir dosyanın dosya-sonu (end-of-file) durumuna ulaşıp ulaşmadığını sınar. , her dosyanın sonunda yer alan eof (Ctrl-z, ^z) işaretine eriştiği anda feof() fonksiyonu doğru/true değerini verir. while() döngüsü, feof() doğru değilken devam etmek üzere kurulmuş olduğu için, dosya sonuna ulaştığımızda döngü duracaktır. Okuma işlemini durabilen bir döngüye bağlamazsak, fgets() `nin bir ın sona ermesi için verilmiş varsayılan süresi doluncaya kadar dosyayı okumak isteyecektir.

Kimi zaman dosyalarımızın içeriğini satır-satır okutmak yerine, kendi tayin edeceğimiz uzunlakta parçalar halinde okutmak isteriz. Bunu, fread() fonksiyonu ile sağlarız. Örnek:

:

<?

$dosya_dizin = "/inetpub/wwwroot/";

if ($dosya = (fopen ("$dosya_dizin/bir_dosya.txt" , `r`) ) ) {

print ("Dosya açıldı!<br>");

}

else {

print ("Dosya açılamadı!");

}

while ( ! feof ($dosya) ) {

$paragraf = fread ( $dosya, 1024 ) ;

print ("$paragraf<br>");

}

fclose ($dosya);

?>

fread() fonksiyonu da daha önce açılmış olan dosyanın işaret değişkenin adını okunmasını istediğimiz asgari byte ölçüsünü parametre olarak alır. fread() fonksiyonu verdiğimiz uzunluk ölçüsüne ulaşmadan önce dosyada bir yeni satır işareti görürse, veya dosyanın sonuna ulaşırsa, okumaya son verir. Bu fonksiyondan yararlanırken, verdiğiniz uzunluk ölçüsünün, almak istediğiniz metin parçasına uygun olduğunu sınamalısınız. fread(), bu ölçüye ulaştığında okumayı keser. Buradaki örneği 1024 byte ölçüsünü değiştirerek mesela 1, 2, 3 yaparak deneyebilir böylece vereceğiniz ölçünün okunan metnin uzunluğunu tayin ettiğini görebilirsiniz.

kaynak: ordan burdan

`nin dosya işleminde kullabileceğiniz bir diğer fonksiyonu fseek() adını taşır. Daha önce açılmış olan dosyanın işaret değişkenin adını ın bu metin içinde zıplamasını istediğiniz noktanın dosyanın başından itibaren byte değerini parametre olarak alan bu fonksiyon ile, bir dosyanın içinnde istediğimiz yere gitme imkanı vardır. Örnek:

:

<?

$dosya_adi = "/inetpub/wwwroot/bir_dosya.txt";

if ($dosya = (fopen ($dosya_adi , `r`) ) ) {

print ("Dosya açıldı!<br>");

}

else {

print ("Dosya açılamadı!");

}

$dosya_boyut = filesize($dosya_adi);

$olcu = (int) ($dosya_boyut / 2 );

while ( ! feof ($dosya) ) {

$paragraf = fread ( $dosya, $olcu) ;

print ("$paragraf<br>");

}

fclose ($dosya);

?>

Burada, okutulacak dosyanın boyutunun yarısını atadığımız $olcu değişkenini, okutulacak metnin ölçüsü olarak kullanıyoruz. Bu durumda , dosyayı iki paragraf halinde görüntüleyecektir.

Dosyalarımızın içeriğini satırlar veya belirli ölçüde parçalar halinde değil de, tek-tek karakter olarak okutmak için fgetc() fonksiyonundan yararlanırız. Bu fonksiyon, daima 1 byte ölçüsünde (bir karakter) metin okuyabileceği için, parametre olarak sadece daha önce açılmış olan dosyanın işaret değişkenin adını alır. Örnek:

:

<?

$dosya_adi = "/inetpub/wwwroot/bir_dosya.txt";

if ($dosya = (fopen ($dosya_adi , `r`) ) ) {

print ("Dosya açıldı!<br>");

}

else {

print ("Dosya açılamadı!");

}

while ( ! feof ($dosya) ) {

$karakter = fgetc ( $dosya ) ;

print ("$karakter<br>");

}

fclose ($dosya);

?>

Burada fgetc() fonksiyonundan dönen değeri (yani dosyadan okunan bir karakteri), $karakter değişkenine atıyoruz daha sonra print() fonksiyonu ba karakteri `in satır bölme kodu olan <br> işaretini Browser penceresine gönderiyor. ı bu şekliyle sınarsanız, dosyadaki metnin tek karakter olarak Browser penceresinin soluna dizildiğini göreceksiniz. ı <br> kodunu silerek çalıştırırsanız, bu kez dosyadaki metinde var olan satır sonu işaretlerinin de kaldırıldığını metnin bir paragraf oülarak görüntülendiğıini görebilirsiniz.

kaynak: ordan burdan

açısından aynı işlemdir; sadece dosyaların açılışında fark vardır. Hatırlayacaksınız, bir dosyayı yazmak amacıyla açmak için:

$dosya = fopen( "bir_dosya.txt" , `w` ) or die ("Dosya açılamıyor!") ;

ek amacıyla açmak için ise

$dosya = fopen( "bir_dosya.txt" , `a` ) or die ("Dosya açılamıyor!") ;

kodunu yazmamız gerekir. Dana sonra yapılacak yazma işlemlerinin farkı, `w` parametresi ile açılan dosyaya yazma işlemi en başından başlar devam eder; `a` parametresi ile açaılan dosyaya yazma işlemi ise en sondan başlar devam eder.

`nin bir dosyaya metin yazdırma fonksiyonları olan fwrite() fputs() aynı biçimde yazılır aynı işlevi yerine getirirler; aralarında kesinlikle fark yoktur. Örnek:

:
<?

$dosya_adi = "/inetpub/wwwroot/bir_dosya.txt";

$dosya = fopen ($dosya_adi , `w`) or die ("Dosya açılamadı!");

$metin = "Bu satır dosyaya yazılacak: Merhaba Dünya!n";

fwrite ( $dosya , $metin ) ;

fputs ( $dosya , "Bu satır ise sonradan eklenecekn" ) ;

fclose ($dosya);

?>

Bu ı çalıştırdığınızda, bir_dosya.txt adlı dosyada mevcut bütün içerik silenecek yerini $metin değişkeninin içerdiği "Bu satır dosyaya yazılacak: Merhaba Dünya!" yazısı ile "Bu satır ise sonradan eklenecek" cümlesi alacaktır. Her iki metnin sonunda da yeni satır işareti bulunduğuna dikkat edin. Bu programda dosya kıomutundaki `w` parametresini siler, yerine `a` yazarsanız, bu metinlerin dosyanın içeriğine eklendiğini görebilirsiniz.

kaynak: ordan burdan

Web sunucusundaki dosyalarımızla sadece bir kişi işlem yapıyor olsa idi, bir sorun olmazdı; ne var ki, bir Web sitesine aynı anda birden fazla kişi eriyebilir dosyalarla işlem yapan programları çalıştırıyor olabilir. Bu, `nin dosya işlemlerine engel olabilir. Bu sebeple, işlem için açacağımız bir dosyayı, önce kilitlemek yerinde bir önlem sayılır. Bunu, flock() fonsiyonu ile yaparız; bu fonksiyona kilitlemek istediğimiz dosyanın işaret değişkeninin adını kilit türünü belirten endeks sayısını parametre olarak yazarız. Örnek:

:
<?

$dosya_adi = "/inetpub/wwwroot/bir_dosya.txt";

$dosya = fopen ($dosya_adi , `w`) or die ("Dosya açılamadı!");

flock ( $dosya , 2); // dosyayı kilitle

$metin = "Bu satır dosyaya yazılacak: Merhaba Dünya!n";

fwrite ( $dosya , $metin ) ;

fputs ( $dosya , "Bu satır ise sonradan eklenecekn" ) ;

flock ( $dosya , 3); //dosyayı kilidini aç

fclose ($dosya);

?>

Bu fonksiyon ile kullanabileceğimiz endeks parametreleri şunlardır:

1 Paylaşım Diğer proseslerin dosyayı paylaşmalarına imkan verir

2 Tam Diğer proseslerin dosyaile işlem yapmasına engel olur

3 Serbest Dosyanın 1 veya 2 olan kilidini kaldırır

Bir dosya, herhangi bir ı tarafından kilitlendiği anda, aynı dsyayı daha sonra kilitlemeye kalkan diğer programlar kendilerinden önce konulmuş kilide saygı gösterirler.

kaynak: ordan burdan

programlarımız gerektiğinde sunucunun yazma yetkisi verdiği Web`e açık kök alt-dizinlerde yeni dizinler oluşturabilir. Bunu, mkdir() fonksiyonu ile yaparız. Bu fonksiyona oluşturulacak dizinin adı 8 tabanlı (octal) sayı cinsinden önüne bir sıfır konarak dizinin okuma/yazma/çalıştırma izinlerini belirten parametre verilir. Örnek:

mkdir ("deneme", 0777);

Burada yer alan 0777, bu dizinin herkes için okuma yazma izni olduğunu gösterir. Bu parametre sadece Unix işletim sisteminde çalışan sunucular için geçerlidir.

kaynak: ordan burdan

Dizin silme: rmdir()

programlarımızda gerektiğinde sunucunun yazma yetkisi verdiği Web`e açık kök alt-dizinlerde mevcut dizinleri silebiliriz. Bunu, rmdir() fonksiyonu ile yaparız. Bu fonksiyona oluşturulacak dizinin adı parametre verilir

kaynak: ordan burdan

Programda kullanmaya vermeden önce bir dosyanın yazılabilir olup olmadığını sınayan bu fonksiyon, dosya yazılabilir ise true/doğru, değilse false/yanlış sonuç verir. Örnek:

:

if ( is_writable ( "bir_dosya.txt" ) )

print ("Bu dosyaya yazılabilir!");

Dosya yazılabilir değilse "Bu dosyaya yazılabilir!" yazmadan yoluna devam edecektir. (Unix ortamında varlığını görebildiğimiz hatta okuyabildiğimiz her dosyanın yazma izni bulunmayabilir.)

kaynak: ordan burdan

Bu fonksiyonları bir değişkeni biçimlendirmekte kullanırız. Birincisinin elde ettiği sonuç ziyaretçinin Browser penceresine gönderilir; ikincisin elde ettiği sonuç ise değer olarak döner. Önce bu fonksiyonlarla kullanabileceğimiz biçim parametrelerini sıralayalım:

% Yüzde işareti. Yanında biçim parametresi gerekmez.

b Değişken tamsayı olarak işlem görür ikili sayı olarak döner.

c Değişken tamsayı olarak işlem görür ASCII değerinin şılığı olan karakter olarak döner.

d Değişken tamsayı olarak işlem görür ondalık sayı olarak döner.

f Değişken kesirli sayı olarak işlem görür kesirli sayı olarak döner.

o Değişken tamsayı olarak işlem görür sekiz-tabanlı (octal) sayı olarak döner.

s Değişken alfanümerik olarak işlem görür alfanümerik olarak döner.

x Değişken tamsayı olarak işlem görür 16 tabanlı (hexadecimal) sayı olarak döner. (Harfler, küçük harf olur).

X Değişken tamsayı olarak işlem görür 16 tabanlı (hexadecimal) sayı olarak döner. (Harfler, büyük harf olur).

Her iki fonksiyonun da kullanılış biçimi aynıdır:

printf( "biçim" , $degisken1, $degisken2, … "metin" );

Burada "biçim" yerine yukarıdaki biçim parametlerini yazarız. Biçim parametrelerinin önüne yüzde işareti konur; en fazla beş belirleyici özellik alabilir. Yukarıdaki tür belirten biçimlendirme parametlerine ek olarak diğer özellikler şöyle sıralanır:

Doldurma karakteri: tek onu izleyen bir karakterden oluşur.

Hizalama: Eksi işaretinin varalığı yazının sola, yokluğu ise sağa hizalanma anlamına gelir.

En az-en çok uzunluk: Sayı-nokta-sayı (örneğin 40.40 gibi) yazılır; birinci sayı azamî, ikinci sayı asgarî uzunluğu belirtir.

Bu üç özelliğe bir örnek verelim.Bir değişkenin değerinin sonuna yanyana yeteri kadar nokta konarak uzunluğunun 40 karaktere çıkartılmasını şu deyimle sağlarız:

:

$degisken = " İyilik üzerine " ;

printf( "%`.-40.40s" , $degisken);

Burada "%`.-40.40s" şeklindeki biçim komutu, Browser penceresinde şu görüntüyü oluşturur:

"İyilik üzerine…………………….."

Burada "İyilik üzerine" değeri 14 karakter olduğu için, sonuna 26 nokta eklenmiş bütün değer sola hizalanmış olacaktır. Şu komut ise iki değişkenin değerini vereceğimiz bir metni aynı satıra yazdıracaktır:

:

$degisken1 = " İyilik üzerine " ;

$degisken2 = " İyilik üzerine " ;

$metin = "<br>n" ;

printf( "%`.-40.40s%`.2d%s" , $degisken1, $degisken2, $metin);

Bu komut Browser penceresinde şu görüntüyü oluşturur:

"İyilik üzerine……………………..86"

Burada eklediğimiz ikinci "%`.2d" şeklineki biçim komutu ile, ikinci değişkenin değeri, en az sıfır en çok iki nokta ile doldurulmak sağa hizalanarak ondalık sayı olarak görüntülenmek üzere biçimlendiriliyor. Üçüncü biçim komutu olan "%s" ise üçüncü değişkenin sadece alfanümerik olarak muamele görmesini sağlıyor. Biçim komutlarının arasında boşluk bulunmaması, ait oldukları değişken değerlerinin de aralarına boşluk konmamasına sebep oluyor. Üçüncü değişkenin etkisini, kağıt üzerinde göremiyoruz; ancak bu Browser penceresinde bundan sonra gelecek unsurların bir satır aşağı kaymasını sağlayacaktır.

Dördüncü biçim özelliği, ondalık sayıların virgülden (veya nokdtadan) sonra ondalık ünün kaç hane olacağını belirler. Bunu da bir örnekle görelim:

:

$degisken = " 124 " ;

printf( "Değeri (ABD) $%.2f" , $degisken);

Bu biçimlendirme komutu da Browser penceresine şu yazıyı yazdırır:

Değeri (ABD) $124.00

kaynak: ordan burdan

Düzenli İfade ile çalışan bu fonksiyon, vereceğimiz eşleştirme sıralamasını sınırlayıcı olarak kullanarak, belirteceğimiz değerde bulduğu değer parçalarını ayırır bunları ayrı ayrı bir dizi değişkenin elemanları olarak kaydeder. Bu fonksiyonu şöyle yazarız:

:
$yeni_dizi_değişken = split("eşleştirilecek_sıra" , $kaynak, sınır_sayısı);

Fonksiyon, aradığı sıralamayı bulamazsa, false/yanlış sonucunu verir. Burada sınır sayısı olarak vereceğimiz rakam, oluşturulacak yeni dizi değişkene en fazla kaç eleman yazılmasını istediğimizi gösterir. Bu sayıyı vermezsek, yeni dizi değişkenin gerektiği kadar elemana sahip olmasını sağlar. Bir örnek vererek, bu fonksiyonu kullanibileceğimizi görelim:

:
<?

$metin = "İnsan sözüyle kendini gösterir, davranışlarıyla ruh halini aksettirir.";

$aranan = " ";

$yeni_dizi_değişken = split($aranan, $metin);

foreach ($yeni_dizi_değişken as $eleman) {

print "$eleman <br>";

}

?>

Bu programda , $metin değişkeninin içerdiği değerde $aranan değişkeninin içerdiği değeri, yani boşluğu, eşleştirilecek unsur olarak kullanacak $metin değişkeninin değerini boşluklarından parçalara ayıracaktır. Ayrılıcak her yeni parça, $yeni_dizi_değişken adlı değişkenin elemanları olarak atanacaktır. ın geri kalan kısmı ise, bu yeni dizinin elemanlarını görüntülemekterdir.

kaynak: ordan burdan

İçinde büyük harf-küçük harf ayrımı olan bir değeri büyük harf-küçük harf ayrımı olmayan Düzenli İfadeler haline çevirir. Bu fonksiyon bizden Düzenli İfade almaz, tersine Düzenli İfade oluşturur. Örnek:

:
<?

$metin = "";

echo(sql_regcase($metin);

?>

kaynak: ordan burdan

ında kimi zaman sunucunun kullanmamıza izin verdiği haricî programları çalıştırız; ımızın düzgün işlemesi bu harici programa bağlı olabilir. Böyle bir ı çalıştırmaya vermeden önce bir dosyanın çalıştırılabilir olup olmadığını sınayan bu fonksiyon, dosya çalıştırılabilir ise true/doğru, değilse false/yanlış sonuç verir. Örnek:

:

if ( is_executable ( "bir_dosya" ) )

print ("Bu dosya çalıştırılabilir!");

Dosya çalıştırılabilir bir değilse ı "Bu dosya çalıştırılabilir!" yazmadan yoluna devam edecektir. (Unix ortamında varlığını görebildiğimiz her pprogram dosyasının çalıştırma izni bulunmayabilir.)

kaynak: ordan burdan

tek veya çift içine de alsak, , bir değişken adını gördüğü zaman onun yerine o değişkenin tuttuğu değeri yazar. bunu, değişken adının başındaki $ görerek yaparak. $ işareti gibi için özel anlamı olan işaretlerin anlamlandırılmasını önlemek bu işaretleri düz metin saymasını sağlamak için bu işaretlerin önüne ters-bölü işareti koyarız. Buna o karakteri kurtarma veya ESCaping denir. `nin anlamlı işaretleri bunların ESCape-yazılışı şöyledir:

` Tek

" Çift

Ters-bölü

$ işareti

n Yeni Satır (New Line)

r Satır Başı (Return)

t Sekme (Tab) karakteri

Kimi zaman bir değişkene atadığımız değerin türünü değiştirmek gerekir. Bunu settype() fonksiyonu ile yaparız. Elimizde böyle bir imkan var diye, bir değişkenin alfanümerik (String) olan değerini sayıya çevirebileceğini sanmayın. buna çok kızar! Şu örneği de tur_degistir. adıyla kaydedelim:

:

<>

<HEAD>

<TITLE>`de Degisken Turleri</TITLE>

<meta http-equiv="content-type" content="text/; charset=ISO-8859-9">

<meta http-equiv="Content-Type" content="text/; charset=-1254">

</HEAD>

<BODY>

<B>

<H2>

<?

$degisken = 5.67890;

print("Değişkenin değeri : ");

print "$degisken<br>";

print("Türü : ");

print gettype( $degisken ) ; //çift,ondalık/double

print "<br>";

print "<br>";

print "İlk değiştirme işlemi: Alfanümerik/String:<br>";

settype( $degisken, string ); //alfanümerik/string

print "Değeri : ";

print "$degisken<br>";

print("Türü : ");

print gettype( $degisken ) ; //alfanümerik/string

print "<br>";

print "<br>";

print "İkinci değiştirme işlemi: Tamsayı/Integer:<br>";

settype( $degisken, integer ); //Tamsayı/Integer

print "Değeri : ";

kaynak: ordan burdan

cropImage(225, 165, '/path/to/source/image.jpg', 'jpg', '/path/to/dest/image.jpg');

function cropImage($nw, $nh, $source, $stype, $dest) {

$size = getimagesize($source);
$w = $size[0];
$h = $size[1];

switch($stype) {
case 'gif':
$simg = imagecreatefromgif($source);
break;
case 'jpg':
$simg = imagecreatefromjpeg($source);
break;
case 'png':
$simg = imagecreatefrompng($source);
break;
}

$dimg = imagecreatetruecolor($nw, $nh);

$wm = $w/$nw;
$hm = $h/$nh;

$h_height = $nh/2;
$w_height = $nw/2;

if($w> $h) {

$adjusted_width = $w / $hm;
$half_width = $adjusted_width / 2;
$int_width = $half_width - $w_height;

imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);

} elseif(($w <$h) || ($w == $h)) {

$adjusted_height = $h / $wm;
$half_height = $adjusted_height / 2;
$int_height = $half_height - $h_height;

imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);

} else {
imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
}

imagejpeg($dimg,$dest,100);
}

kaynak: ordan burdan