Php

Windows Server 2008 IIS7 Uzerinde Guvenli PHP Kullanma

25. December 2009

Windows Server 2008 uzerine IIS7 ile PHP yi GUVENLİ Kullanma

Merhabalar,

Kullandiginiz serverde Plesk gibi bir araci program kullanmiyorsaniz guvenlik ayarlariniza cok dikkat etmelisiniz. Normalde bunu sizin yerinize Plesk gibi programlar yapar ama o yoksa isinizi şansa kalmasın.

Server 2008 Uzerine PHP + MySQL Kurup IIS7 ile calistirinca gayet guzel calisiyor. Ama sitelerin birinden include metoduyla herhangi bir yere girip dosya cekmeniz mumkun. Burdan dogacak kıyameti siz düşünün…

Normalde Apache + PHP kullandiginizda eğer PHP FastCGI olarak çalışmıyorsa

php_admin_value open_basedir “d:\webspace\volkanaltan.com”
Yazarsaniz kullanici bu dizinden yukari cikamaz. Ama maalesef IIS7 de veya Apache uzerinde php yi fastcgi olarak calistirirsaniz bu komutlar calismaz http://www.zend.com/en/support/knowledgebase.php?kbid=252&view_only=1

Peki bunun önüne geçmek için ne yapmak gerekiyor ?

Benim anlatacagim Server Web 2008 IIS + PHP

Bilgisayar üzerine sağ tıkla -> Manage ->Configuration -> Local Users And Group
Groups üzerine sağ tıkla -> Yeni grup ekle
Adına : IIS_WPG
İçine -> LOCAL SERVICE , NETWORK SERVICE ekliyoruz

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-49-23-559.png

Users Tabına Sağ tıkla -> New User
Burda her site için bir user oluşturuyoruz. Ama bu userlar IIS kullanıcısı olacagi için isimlendirmeyi şöyle yapiyorum. IUSR_volkanaltancom
C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-52-00-025.png


Şimdi bu usere sağ tıklayıp Properties den “Member Of” tabına geçiyorum

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-54-05-481.png

Profile Tabına geçip ordada sitenin yolunu veriyorum.
C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-55-36-668.png

Şimdi IIS üzerinde işlem yapacağız.

Bilgisayar üzerine sağ tıkla -> Manage -> Roles -> Web Server -> IIS -> Server Name
Sites sağ tıkla -> Add Web Site
Physical path e d:\volkanaltan.com\www yazıp Test Settings’e tıklıyoruz.

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-58-44-258.png
The server is configured to use pass-through authentication with a built-in account to access the specified physical path. However, IIS Manager cannot verify whether the built-in account has access. Make sure that the application pool identity has Read access to the physical path. If this server is joined to a domain, and the application pool identity is NetworkService or LocalSystem, verify that <domain>\<computer_name>$ has Read access to the physical path. Then test these settings again.

rdüğünüz gibi yetkisizlik durumu söz konusu.

Bu kez “Connect as” a tıklıyoruz. Ve daha once oluşturduğumuz useri seçiyoruz.

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_12-01-02-058.png

Eğer site kırmızı olursa

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_12-01-48-768.png

Sağdaki “Basic Settings”e tıklayıp Ok’a basın.

Şimdi klasör ayarlarına bakıyoruz;

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_12-03-15-159.png

Site -> Sağ tıkla Edit Permissions
Security tabına geçtiğinizde sizing users a tam yetki verildiğini göreceksiniz. Ama bu işin başında sizin web sitelerini tuttuğunuz klasöre yetki olarak “Network Service”, “Users” Okuma yetkisini vermeniz gerekmektedir.

Olayımız bitmiştir. Sorularınız olursa sorabilirsiniz.
Daha iyi görmek için : http://docs.google.com/View?id=dgndh2qr_99f7vrr47x

Kaynak :  http://volkanaltan.blogspot.com/2009/12/windows-server-2008-iis-uzerine-guvenli.html

FacebookDigg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Php, Server 2008, IIS 7

IIS ve PHP kullanılarak Sql Server 2008 e bağlanmak

25. April 2009

Bu işlemleri tamamlamadan önce sisteminizde PHP kurulu olmaıdır.

Ayrıca  sql 2008 native client da kurulu olmalıdır. Bu client SQL Server 2000, 2005 ve 2008 sürümlerine bağlantı kurmak için kullanılabilir.

Aşağıdaki adresten sql driver for php yi indirin:

http://download.microsoft.com/download/e/e/1/ee11dd54-c5a1-4bbc-99cd-a5c297115192/SQLServerDriverForPHP.EXE

Sql driver for PHP yi kurun. Kurulum esnasında dosyaların nereye çıkarılacağını soracaktır. c:\php\ext yada c:\program files\php\ext sizin php extensionsa klasörünüz neresiyse o klasörü seçin.

Ardından php.ini dosyasının en sonuna

[PHP_SQLSRV]
php_sqlsrv.dll

satırlarını ekleyin.

IIS iyeniden başlattığınızda sql driver kullanmaya hazır oalcaktır.

FacebookDigg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Php

PHP 3. String ve Matematiksel işlemler

25. April 2009

3. dersimizde PHP ile string işlemleri ve matematiksel işlemler yapmayı öğreneceğiz.

 

İlk olarak matematiksel işleme bir örnek verelim.

round (yuvarla) komutu :

round komutu ile virgülden sonraki rakkamları yuvarlıyoruz yada en yakın tamsayıya tamamlıyoruz.

Örnekler:

<?php
echo round(45.4);         // 45
echo round(45.5);         // 46
echo round(45.6);         // 46
echo round(45.60);      // 46
echo round(32.2687592);  // 32.27
echo round(1425879, -3); // 1425000
echo round(32.0268, 3);    // 32.027

echo round(32.0552);    // 32.06
?>

 Diğer matematiksel işlem fonksyonları için http://www.php.net/manual/en/ref.math.php adresine bakabilirsiniz.

PHP içerisinde toplama,çıkarma,bölme ve çarpma operatörleri aşağıdaki gibidir:
Toplama:
<?php

$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi+$ikincisayi; 
//67

?>

Çıkarma:
<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi-$ikincisayi; 
//23

?>

Bölme:
<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi/$ikincisayi; 
//2.0454545454545

?>

Çarpma:
<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi*$ikincisayi; 
//
990
?>

 

String işlemleri:

http://www.php.net/manual/en/ref.strings.php linkine tıklayarak tüm string işleme fonksiyonlarına ulaşabilirsiniz.

Biz çok kullanılan birkaç fonksiyondan örnek verelim.

md5() komutu verdiğimiz bir string'i md5 şifrelenmiş hale dönüştürür.
Örnek:

<?php
$metin="Merhaba Dunya";

echo md5($metin);
?>

str_replace() komutu bir string içerisinde aradığınız değeri bulur ve vereceğiniz değer ile değiştirir.

str_replace ($bunu_ara,$bununla_degistir,$bunun_icinde)
Örnek:

<?php
$bunun_icinde="Merhaba Dunya";
$bunu_ara="er";
$bununla_degistir="$";
echo str_replace($bunu_ara,$bununla_degistir,$bunun_icinde);

?>

strlen() komutu verilen string'in kaç karakter içerdiğini sayar.
Örnek:

<?php
$metin="Merhaba Dunya";
echo strlen($metin);
  //13
?>

strpos() komutu verilen string'in içerisinde verilen karakter'in ilk oalrak kaçıncı sırada olduğunu verir.
Örnek:

<?php
$metin="Merhaba Dunya";
$bul="a";
echo strpos($metin,$bul);
  //4
?>

substr() komutu verilen string'in içerisinden belli bir bölümü alır.
Örnek:

<?php
$metin="Merhaba Dunya";
echo substr($metin,2,6);
  //rhaba
echo substr($metin,2);  //rhaba Dunya
?>

Yukarıda birkaç string işleme fonksiyonu örneği verdik. Bir sonraki dersimiz veritabanı bağlantıları ile ilgili oldukça uzun bir ders olacak.

 

FacebookDigg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Php

PHP 2. İlk komutumuzu yazalım

25. April 2009

 

Bir önceki makalede php çalıştırmak için gerekli olan araçları kurduk. Şimdi ilk php sayfamızı çalıştıralım ve sonucu görelim.

Öncelikle şunları hatırlatalım:

PHP sayflaraının uzantısı .php olmalıdır. (Tabi ki bu uzantıyı değiştirmek mümkün. Fakat biz genel geçer kurallar üzerinde konuşalım.)

.php uzantılı olmayan dosyalardaki php kodları aynen olduğu gibi web tarayıcısına gönderilecektir. Haliyle bunlar işlem görmeyecek hatta son kullanıcı tarafından görülebilecektir.

.php uzantılı dosyalar aslında HTML formatında dosyalardır. Yani <html> tag'ı ile başlar </html> tagı ile biterler. Bunların farkı araya php kodları yazıyor olmamızdır.

PHP kodları HTML kodu içerisinde <?php blablakod ?> şeklinde yazılırlar. <?php ?> tagları arasında yazılmayan kodlar yine işlem görmeyecektir.

Biz kendi yerel sunucumuzda çalışıyoruz. İstersek php.ini dosyasından tüm hataları görünür yapabiliriz. Fakat yine de alışkanlık haline getirelim ve hata kontrolü (debug) yapmak sitediğimiz sayfaların başına error_reporting(E_ALL); kodunu yazalım ki oluşabilecek hataları ekranda görelim. Peki bu hataları her zaman neden görüntülemiyoruz diye sorabilirsiniz. Mesele şu ki eğer tüm hata mesajlarınızı görüntülerseniz kodlarınız ve sisteminiz hakkında birçok bilgiyi kötü niyetli kişilere kolayca verebilirsiniz.

PHP yapı oalrak C dili ile benzerlik göstermektedir. Bu benzerliklerden biri de tüm satırlar ; (noktalı virgül) ile bitmelidir.

Şimdilik aklıma gelen önemli noktalar bu kadar. Hadi ilk kodumuzu yazalım.

<?php echo 'merhaba dünya'; ?> Bu kodu index.php isimli bir dosyaya kaydedelim ve webroot dizinimize koyalım. Bir önceki makalede de anlattığımız gibi WampServer için bu root dizini "c:\wamp\www" dizinidir. Yani biz index.php dosyamızı buraya koyacağız. Sonra da tarayıcımızın adres satırına http://localhost yazacağız.

Eğer herşey yolunda gitmişse sayfanın sol üst köşesinde merhaba dünya yazısını görmemiz gerekiyor. Görmüyorsak bundan önce izlediğimiz adımları kontrol etmekte fayda var.

Eğer daha önce normal bir programlama dili kullandıysanız temel olarak giriş ve çıkış komutları olduğunu zaten biliyorsunuz. Yani writeln, readln, scanf, printf, readkey, print gibi komutlarla ekrana yazı yazdırdık ve klavyeden giriş aldık. (Tabi bu bahsettiklerim visual olmayan diller)

PHP'de echo yad aprint komutuyla ekrana bilgi yazdırıyoruz. Klavyeden birşeyler okumak için ise genellikle HTML FORM kullanıyoruz. Bir örnekle açıklayalım:

<?php
if(isset($_POST['adi']) && isset($_POST['soyadi']))
{
echo 'Sorgu çalıştı <br>';
echo $_POST['adi'].' '.$_POST['soyadi'];
}
?>
<html>
<head><title>PHP Öğreniyorum</title></head>
<body>
<form name="form1" action="_self" method="POST">
<input name="adi" type="text" size="25" maxlenght="25">
<input name="soyadi" type="text" size="25" maxlenght="25">
<input type="submit" name="button" value="Tamam">
</form>
</body>
</html>

Yukarıda kırmızı ile yazılan kısım sayfanın php derleyicisi tarafından işlenecek kısmı. Mavi ile yazılı olan kısım ise doğrudan tarayıcıya gönderilecek kısım.

İlk satırda bir sorgu çalıştırdık ve POST metodu ile sayfaya gönderilen "adi" ve "soyadi" değişkenlerinin bir değere set edilip edilmediklerini kontrol ettik. isset komutu herhangi bir değişkenin set edip edilmediğini yani bir değer içerip içermediğini kontrol eder. Fakat şunu hatırlatmakta yarar var. Eğer "adi" değişkeninin değeri "" (boş karakter), " " (boşluk), "0" (sıfır) gibi değerlere set edilmişse bile isset sorgusu 1 (True) olarak dönecektir. Burada kontrol edilen değişkenin içeriği değil kendisinin bellekte yer alıp almamış olmasıdır.

Biz IF sorgumuzda hem "adi" hem de "soyadi" değişkenlerinin set edilmiş olmasını istedik. Bu durumda sayfayı ilk açtığımızda karşımıza herhangi bir yazı çıkmayacak çünkü bu iki değişkeni set etmedik.

Sayfanın mavi ile yazılmış kısmıda ise basit bir HTML sayfası ve içinde de bir FORM yer almaktadır. Bu form'un adı "form1", içeriğini göndereceği yer "_self" (yani kendisi. Buraya islemler.php yazsaydım tamam butonuna bstığımda değerleri islemler.php sayfasına gönderecekti), gönderme metodu "POST" olarak belirlenmiştir. Formun içinde her ikisinin de görülebilir ve kullanılabilir karakter giriş sayısı 25 olmak üzere bir "adi" diğeri "soyadi" isminde iki adet TEXT FIELD'ımız var. Son olarak da formu ACTION'da tanımlanan hedefe göndermesi için SUBMIT butonumuz var.

Tamam (Submit) butonuna bastığımızda artık "$_POST['adi']" ve "$_POST['soyadi']" değişkenleri bir değere sahipler. Biz bunları boş bırakıp gönder butonuna bassak bile bu iki değişken artık boş da olsa bir değere sahipler. Bu nedenle sorgu çalışacak ve "adi" "soyadi" değişkenlerini ekrana yazacaktır (boş olsalar bile.)

Sonra tekrar forma birşey yazıp "Tamam" butonuna bastığımızda bu sefer de yeni yazdıklarımız üstte gözükecektir.

Böylece klavyeden birşeyler girdik ve bunları sayfada yazdırdık. Bundan sonraki konuda birkaç ; matematik işlem ile stringler üzerinde birkaç deneme yapacağız. Ondan sonra da veritabanına birşeyler yazıp okumayı deneyeceğiz.

Herkese iyi çalışmalar

FacebookDigg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Php ,

PHP 1. Başlamak için gerekenler

25. April 2009

Merhaba,

Elimden geldiğince PHP ile programlamaya yeni başlayanlar için bir kılavuz oluşturmaya çalışacağım.

PHP ile yaptığım yüzlerce uygulama var. Fakat yine de ben bu konuda çok iyiyim diyemem çünkü PHP dilini benden daha iyi kullanan birçok kişi var. Ortalama bir programcı sayılırım PHP konusunda.

Bunu özellikle belirtmemin sebebi şu:

Burada yazanları tek yol olarak kabul etmeyin. Herkesin kendine göre bir programcılık anlayışı vardır. Öğrendikçe yeni yöntemler kullanmanız kaçınılmaz. En iyi kod yazım şekli benim yazdığım şekilde olmayabilir. Farklı kod yazma mantıkları ile karşılaştığınızda şaşırmayın.

Şimdi gelelim konumuza:

Öncelikle bilgisayarımıza Php + Mysql + Apache + bunları yönetecek araçlar kurmalıyız. Bu işi en kolay şekilde yapmanın yollarından biri WampServer kullanmak. WampServer'ı bilgisayarınıza buradan indirip kurabilirsiniz.

Benim kurduğum WampServer şunları içeriyor: Apache 2.2.8, PHP 5.2.6 + PECL, SQLitemanager, MySQL 5.0.51b, Phpmyadmin.

Belki çoğunuz biliyorsunuz ama biz yine de bunların ne işe yaradığını açıklayalım.

Apache bir WEB sunucusudur. Sizin IP adresinize yapılan web isteklerine cevap verir. Sanal sunucular, cgi işlemleri, güvenli web gibi işlerden apache sorumludur. Basit olarak anlatmak gerekirse apache kendisine gelen istekleri tanımlı olan sanal sunucu dizininden okuyup kullanıcıya geri gönderir. Eğer kullanıcı farklı isimde bir dosya istememişse varsayılan olarak index.html dosyasını (kurulumda yapacağınız tanımlara göre bunlar değişir.Örn: PHP çalışması için index.php dosyalarını da varsayılan olarak açması gerekir.) gönderir.

Mysql bir veritabanı sunucusudur. Excel'de gördüğünüz sayfaları (Sheet) düşünün. Veritabanı her bir Sheet'i bir tablo olarak saklar. Sonra da bu tablolarda SQL diliyle işlem ve sorgulama yapmamızı sağlar.

PHP bir programlama dilidir. .PHP uzantılı web sayfaları apache tarafından ziayretçiye gönderilmeden önce PHP yorumlayıcısına (interpreter) gönderilir. PHP yorumlayıcısı bu kodları işler ve düz html çıktısı olarak sonucu apache'ye gönderir. Apache de bu süz html çıktısını ziyaretçinin web tarayıcısına gönderir. Böylece php sayfamız gereğini icra etmiş olur.

 

Dönelim WampServer'a.

WampServer varsayılan olarak "C:\wamp" dizinine kurulur.

Bu dizinin içindeki "www" dizini web sayfalarınızı tutacağınız dizindir.

"apps" dizininde sqlitemanager ve phpmyadmin bulunur.

"bin" dizini içerisinde de apache, php ve mysql programları bulunur. Oluşturacağınız veritabanları "C:\wamp\bin\mysql\mysql5.0.51b\data" dizini ieçrisinde saklanır. Yaptığınız projeleri yedeklemek isterseniz bu dizini yedeklemelisiniz.

Artık bilgisayarımızda kurulu bir Web Server + PHP + MySql Server'ımız var.

WampServer'ı çalıştırıp durdurmak için görev çubuğuna yerleşen WampServer simgesine çift tıklayarak gerekli işlemleri yapabilirsiniz.

Bundan sonraki derslerimizde PHP ile basit uygulamalar yapacağız.

Herkese İyi Çalışmalar.

FacebookDigg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Php

Sayfa 0.1875 saniyede yuklendi.