Etiket arşivi: mehmet mutlu

PHP HTTP Authentication

Occasionally you may wish to make certain pages of your site only viewable to a select few. you can do this by using PHPs built in HTTP Authentication. The code needs to go right at the top of your php page so don’t get ‘Headers Already Sent’ errors. You can see that we’ve specified the username and password in the variables at the top of the script you can change these to reflect your own username and password.

You could easily make this authentication more dynamic by checking a database for the username and password. We can get whatever the user typed into the dropdown box by specifying the following superglobals.

//Username:
<?php echo $_SERVER['PHP_AUTH_USER'];?>
//Password:
<?php echo $_SERVER['PHP_AUTH_PW'];?>

<?php 

$config['admin_username'] = "demo";
$config['admin_password'] = "demo";

if (!($_SERVER['PHP_AUTH_USER'] == $config['admin_username'] && $_SERVER['PHP_AUTH_PW'] == $config['admin_password'])) {
    header("WWW-Authenticate: Basic realm=\"Papermashup.com Demo Admin\"");
    header("HTTP/1.0 401 Unauthorized");
	echo 'This is what happens if you press cancel';
	?>
<?php
    exit;
}
// if the username and password match show the rest of the content

?>

Be careful when coding the HTTP header lines. In order to guarantee  maximum compatibility with all browsers, the keyword “Basic” should be  written with an uppercase “B”,
the realm string must be enclosed in  double (not single) quotes, and exactly one space should precede the 401  code in the HTTP/1.0 401 header line.

Mysql de row adını değiştirme

uyeler(id(int),adı(char50),meslegi(int))

Select * from uyeler > id – adı – meslegi

Select uyeler.id,uyeler.adı,uyeler.meslegi from uyeler > id – adı – meslegi

Select uyeler.id,uyeler.adı,uyeler.meslegi meslek from uyeler > id – adı – meslek

yani Select den veriyi seçtikden sonra bir boşluk bırakıp istediğimiz veriyi yazabiliriz. bize sql çıktı olarak veriyi dönecektir.

MySQL ile Trigger Oluşturma

Triggerlar ilişkili veri tabanlarında çok önemli özelliklerden bir tanesidir. Trigger’ın anlamı tetikleyici olarak bilinmektedir. Herhangi bir olay gerçekleştiğinde neleri tetikleyeceğinin belirlendiği ve tetiklenme ile nelerin yapılacağının belirtildiği bir SQL kodudur diyebiliriz.

2 çeşit trigger vardır diyebiliriz. Bunlar:

1- Insert, Update, Delete işlemleri esnasında (öncesi-sonrası) tetiklenmesi ayarlanan triggerlar.

2- Create, Drop, Alter işlemleri öncesi ve sonrasında tetiklenmek için hazırlanan triggerlardır.

İlk trigger türünü bir örnek üzerinde açıklayacak olursak:

İlk önce bir tablo oluşturalım.

MySQL> CREATE TABLE uyelik(no INT, ucret DECIMAL(10,2));

 

Bu tablomuzda “no” isminde int tipinde bir değişken ile “ucret” isminde decimal değerde virgülden sonra iki sayının gösterebileceği değişkenler bulunmaktadır.

MySQL> CREATE TRIGGER ins_uye BEFORE INSERT ON uyelik

             FOR EACH ROW SET @sonuc = @sonuc + NEW.ucret;

 

Bu SQL kodumuzda “ins_uye” ismi ile bir trigger oluşturduk. Bunu uyelik tablosunu baz alarak “BEFORE INSERT ON” tetikleyicisini belirttik. Burada “BEFORE INSERT ON” = “Tabloya bir satır ekleme öncesi” koşulunu belirledik. “FOR EACH ROW SET” kelimeleri ile “@sonuc = @sonuc + NEW.ucret” işlemini her bir ekleme gerçekleştiğinde var olan sonuc değerine yeni eklenen satırdaki ucret değerinin eklenmesi söylenir.

Tablomuza birkaç veri ekleyerek sonucu görelim:

MySQL> SET @sonuc = 0;

MySQL> INSERT INTO uyelik VALUES(15,155.21),(25,526.45),(35,-500.00);

MySQL> SELECT @sonuc AS 'Toplam Eklenen Ucret';

+———————-+

| Toplam Eklenen Ucret |

+———————-+

|               181.66 |

+———————-+

Update komutu ile güncelleme üzerine bir trigger belirleyelim:

MySQL> delimiter //

MySQL> CREATE TRIGGER upd_check BEFORE UPDATE ON uyelik

       FOR EACH ROW

       BEGIN

          IF NEW.ucret < 0 THEN

               SET NEW.ucret = 0;

          ELSEIF NEW.ucret > 100 THEN

              SET NEW.ucret = 100;

          END IF;

      END;//

MySQL> delimiter ;

Burada delimiter komutu kod bloğunun ayracı olarak kullanılmaktadır. “upd_check” isminde bir trigger oluşturup uyelik tablosunu baz alarak update işlemi yapacağımızı belirtmişiz. Sonrasında yapılacak işlemlere başlangıç olarak begin komutu ile başlamışız. Gerekli koşullarımızı girdikten sonra koşullar ve bloklar için kapatma komutlarını girip delimiter’ ı da sonlandırıp trigger oluşturma işlemimizi bitiriyoruz.

MySQL> update uyelik set ucret=’129.12′ where ucret=’155.21′;

Yukarıdaki SQL cümleciği, uyelik tablosu içerisinde ucret değeri 155.21 olan değeri değiştirerek 129.12 yapmak için oluşturulmuştur fakat oluşturduğumuz kısıtlama sebebi ile 129.12 değeri yerine 100.00 değeri tablomuza eklenecektir. Select komutu ile tablomuzu görmeye çalıştığımızda çıktımız şu şekilde olacaktır:

+——+———+

| no | ucret |

+——+———+

|   15 |  100.00 |

|   25 |  526.45 |

|   35 | -500.00 |

+——+———+

Bu trigger güncelleme (update) işlemi sırasında eğer güncellenen ucret değeri 0 değerinden küçük ise değeri 0’a eşitleyip gerekli yere ekliyor. 100’den büyük girildiğinde ise 100 değerine eşitleyip gerekli yere ekleme yapıyor.

Oluşturduğunuz triggerları ve ayarlamalarını görmek için;

MySQL> show triggers; //yazmanız yeterli olacaktır...

Oluşturulan triggerları kaldırmak için tablolarda yaptığımız gibi DROP SQL komutunu kullanmamız gerekecektir;

MySQL>  DROP TRIGGER upd_check;

Bu işlem sonrası yapacağım güncellemelerde oluşturduğumuz kısıtlamalar artık olmayacaktır.