|
|||||||
| Web Geliştirme Dilleri İnternet sitesi geliştirme için kullanılan araçlar ve programlama dilleri... ASP & ASP.NET & PHP & CSS & HTML & SQL & Java Script |
![]() |
|
|
Konu Araçları |
|
|
#1 (permalink) |
|
I'm REAL ?>
Katılma Tarihi: Şub 2006
Nereden: Bursa/es-es
Yaş: 23
Mesajlar: 1,780
|
Problem:Verilerimizi bir anahtarla sifrelemek istiyoruz.Ama nasil?
Cozum:Kendi sifre/desifre algoritmanizi yazin. Sifrelemek icin: <?php function veriyi_sifrele ($veri,$anahtar) { for ($i=0,$j=0;$i<strlen ($veri); $i++,$j++){ $orta = ord(substr($veri,$i,1)) + ord(substr($anahtar,$j,1)); if ($j > strlen($anahtar)) {$j=0;} $sifrelenmis_veri .= chr ($orta); } return ($sifrelenmis_veri); } $sonuc= veriyi_sifrele ($veri,$anahtar); echo $sonuc; ?> Desifrelemek icin: <?php function veriyi_desifrele ($veri,$anahtar) { for ($i=0,$j=0;$i<strlen ($veri); $i++,$j++){ $orta = ord(substr($veri,$i,1)) - ord(substr($anahtar,$j,1)); if ($j > strlen($anahtar)) {$j=0;} $desifrelenmis_veri .= chr ($orta); } return ($desifrelenmis_veri); } $sonuc= veriyi_desifrele ($veri,$anahtar); echo $sonuc; ?> Yukaridaki algoritmalar neredeyse guvenilemeyecek kadar basit yapili sifreleme yapilaridir.Daha iyi bir cozum ariyorsaniz PHP ile beraber gelen TripleDES sifreleme yapilarini kullanabilirsiniz.Kisa bir ornek vermek istersek, <?php $anahtar = "Serkan Hadi Ceylani"; $veri = "Kendi zamaninda yapilan politika sonsuzlugu yakalar"; $sifrelenmis_veri = mcrypt_ecb(MCRYPT_TripleDES,$anahtar,$veri,MCRYPT_ ENCRYPT); $desifrelenmis_veri = mcrypt_ecb(MCRYPT_TripleDES,$anahtar,$veri,MCRYPT_ DECRYPT); ?> MD5 Sifreleme Algoritmasi Web sayfalarinda kullanilan "oturum yonetimi" gibi uygulamalar icin yaratilabilcek en guzel Kullanici ID asagidaki gibidir : (getmypid () fonksiyonu kullanilarak farkli server proseslerinin veya intranet uzerinde ayni agda yer alan serverlar icin farkli kisiler icin ayni ID uretilmesi problemi ortadan kalkmaktadir Kullanilan butun fonksiyonlar PHP ile beraber gelmektedir. <?php $id = md5(uniqid(microtime(), 1)) . getmypid (); ?> Ornek Uygulama Simdi de kendi yazdigimiz ornek ile ilgili bir alistirma yapalim ve sifreledigimiz verilerin neler olduguna nasil sifrelendigine bakalim. Once veriyi alacagimiz HTML formunu hazirlayalim. 1.Asagidaki kodlari text editorunuz yazrdimiyla yaziniz. <HTML> <HEAD> <TITLE>Sifreleme ve Desifreleme Algoritmalari</TITLE> </HEAD> <BODY> <FORM ACTION="sifrele.php" METHOD=GET> Lutfen sifrelemek istediginiz veriyi asagidaki kutuya giriniz. <BR> <INPUT TYPE=TEXT NAME="veri"> Lutfen bu veri icin bir sifreleme anahtari giriniz. <BR> <INPUT TYPE=TEXT NAME="anahtar"> <INPUT TYPE=SUBMIT VALUE=Sifrele> </FORM> </BODY> </HTML> 2. Bu dosyayi "sifrele.html" olarak kayit edin. Simdi de sifrelenmesi icin bu verinin gelecegi "sifre.php" dosyasini yazalim.Tabii ki yukaridaki algoritmayi programa donusturmekten baska bir olay degil yaptigimiz. 3.Asagidaki PHP kodlarini text editorunuz yardimiyla yaziniz. <?php //sifrele.php function veriyi_sifrele ($veri,$anahtar) { for ($i=0,$j=0;$i<strlen ($veri); $i++,$j++){ $orta = ord(substr($veri,$i,1)) + ord(substr($anahtar,$j,1)); if ($j > strlen($anahtar)) {$j=0;} $sifrelenmis_veri .= chr ($orta); } return ($sifrelenmis_veri); } $sonuc= veriyi_sifrele ($veri,$anahtar); echo $sonuc; ?> 4.Bu dosyayi "sifrele.php" olarak kayit ediniz. 5. sifrele.html dosyasini acip kendi yazdiginiz algoritma ile verilerinizi sifreleyin. |
|
|
|
|
|
#2 (permalink) |
|
I'm REAL ?>
Katılma Tarihi: Şub 2006
Nereden: Bursa/es-es
Yaş: 23
Mesajlar: 1,780
|
PHP Cikti Kontrol Fonksiyonlari ve HTTP Basliklari
Cikti Kontrol fonksiyonlarinin PHP'ye eklenme sebebini ve ne tur durumlarda bize yardimci olabilecegini anlamak icin HTTP HEADER (baslik)'larinin ne oldugu ve nasil calistigi konusuna biraz deginmek gerekiyor. HTTP HEADER (HTTP BASLIGI) HTTP protokolu kullanilarak web sunucusuna yapilan her cagriya, gonderilen cevap her zaman iki bolumden olusur, baslik ve govde. Mesela web surucumuzde 'ornek.txt' adinda "Turkiye'nin en iyi PHP sitesi Turk-php.com !" seklinde bir satir iceren bir dosyamiz oldugunu varsayalim. Web sunucumuzun bu dosyayi cagiran bir tarayiciya gonderecegi cevap asagidaki gibidir. HTTP/1.1 200 OK Date: Sat, 02 Sep 2000 21:40:08 GMT Server: Apache/1.3.11 (Unix) mod_macro/1.1.1 PHP/4.0.2-dev Last-Modified: Sat, 02 Sep 2000 21:39:49 GMT ETag: "12600b-e-39b173a5" Accept-Ranges: bytes Content-Length: 14 Connection: close Content-Type: text/plain Turkiye'nin en iyi PHP sitesi Turk-php.com ! Bu cevabin ustte kalan ilk kismi HTTP Basligidir. Kullanicilar ustteki bu baslik kismini gormeseler de, bu kisim icerik tipi, kullanilan protokol versiyonu, dokumanin son guncellenme tarihi ve benzeri gibi cok miktarda bilgi ihtiva etmektedir. HTTP basliginin formati konusunda cok fazla bir kural yoktur ve genelde satir basina bir tane Alan Adi : Deger seklindeki ciftlerden olusur. Burada en dikkat edilmesi gereken nokta HTTP Basliginin, Icerik govdesinden bos bir satir ile ayrilmis olmasi gerektigidir. HTTP basligindaki bilgilere PHP fonksiyonlarini kullanarak ekleme veya degistirme yapabilirsiniz. Mesela bunu acik bir sekilde header () fonksiyonunu kullanarak yapabilirsiniz: header("Location: http://www.turk-php.com/"); // sayfayi yonlendir HTTP basligini direk olmayan bir sekilde SetCookie() fonksiyonuyla da manipule edebilirsiniz. SetCookie("foo", "bar"); HTML cookie'leri , HTTP basliklari kullanilarak uygulanmaktadir. Mesela asagidaki php kod blogunu ele alalim: <?php SetCookie("foo", "bar"); print "Cookie yaz."; ?> Bu kod blogunun web sunucusundan ciktisi asagidaki sekilde olacaktir: HTTP/1.1 200 OK Date: Sat, 02 Sep 2000 21:43:02 GMT Server: Apache/1.3.11 (Unix) mod_macro/1.1.1 PHP/4.0.2-dev X-Powered-By: PHP/4.0.2-dev Set-Cookie: foo=bar Connection: close Content-Type: text/html Cookie yaz. Kullanicinin web tarayicisi yukaridaki web ciktisini aldiginda 'foo' adinda ve 'bar' degerine atanmis bir cookie'nin olusturulmus oldugunu anlayacaktir. CIKTI KONTROL FONKSITONLARINA NEDEN IHTIYAC DUYUYORUZ. Cikti kontrol fonksiyonlarinin koku PHP/FI zamanlarina dayanir. Makalemizin basinda cikti kontrol fonksiyonlarinin header() fonksiyonu kullanildiginda alinabilecek hatalara bir cozum olarak dizayn edildigini soylemistik. Bu hatalarin metnini tekrar hatirlayalim: "Cannot add header information - headers already sent" veya Oops, php_set_cookie called after header has been sent" Peki bu hatalar hangi kosullarda meydana geliyor? Bu hatalar PHP HTTP basligini gonderip bos bir satir ile de basligin tamamlanip asil govdeye gecildigini belirttikten sonra HTTP basligina birsey eklemeye veya baslikta birsey degistirmeye calistigimiz zaman meydana gelir. Bunun sebebi HTTP basligi ve bunu takip eden bos satir tarayiciya gonderildikten sonra tarayicinin artik yeni baslik bilgilerini govdeden ayiramamasindan dolayir. Daha dogrusu bu kisitlamadan dolayi, PHP isteginizi gerceklestirmeden bir hata mesajiyla sizi durdurmaktadir. Bu problem genelde baslik bilgilerini govde ciktisindan once gondermeye dikkat ederek kolayca cozulebilse de bu kisitlama bazen cok kolay olabilecek programlari gereksiz sekilde zorlastirabilir. Iste bu asamada Cikti Kontrol Fonksiyonlari yardimimiza yetismektedir. CIKTI KONTROLU NASIL CALISIR? Cikti kontrolu aktive edilmis oldugunda PHP ,normalden farkli olarak, program cikti gonderdigi anda HTTP basligini tarayiciya gondermez. Bu bilgileri ve ciktiyi tarayiciya gondermek yerine, dinamik olarak buyuyen ( gerektikce kendi kendine genisleyen ) bir buffer ( tampon ) 'a gonderir. Bu sayede baslik satirini gecmis olmaniza zaman tarayiciya henuz gonderilmedigi icin istediginiz cookie ve baslik islemlerini yapmaya devam edebilirsiniz. En basit halinde program sona erdiginde PHP otomatik olarak HTTP basligini ve HTML govdesini tampon'dan tarayiciya gondermeye baslayacaktir. TEMEL KULLANIM: ob_start() Cikti kontrolunu aktif hale getir. Bu fonksiyonu bir birinin icinde birden fazla cagirmak mumkundur. ob_end_flush() Tampon'da biriktirilenleri gonderip, cikti kontrolunu sona erdir. ob_end_clean() Tampon'da birikenleri GONDERMEDEN, cikti kontrolunu sona erdir. ob_get_contents() Tampon icerigini bir STRING olarak almaya yarar. Bu sayede programini ciktisini tarayiciya gondermeden bir kez daha degistirmek mumkun olmaktadir. Buna ilaveten php.ini kurulum dosyasindaki output_buffering direktifini aktif hale getirerek her php sayfanizin ob_start() fonksiyonu cagirilmis gibi davranmasini saglayabilirsiniz. Ornek 1: <?php ob_start(); ?> <h1>Ornek 1</h1> <?php print "Merhaba, $kullanicin"; SetCookie("Cerez", "Yukaridaki satir cikti gondermesine ragmen yine de bu cookie yaratildi"); ?> Bu ornekte hem html tagleri (<H1> ve </H1>) hem de print() fonksiyonu cikti gondermesine ragmen, SetCookie direktifi ,cikti kontrol mekanizmasi sayesinde, sorunsuz (ve hatasiz) olarak calisacaktir. Cikti kontrol sistemi , web sunucunuza bir miktar ek yuk bindirmektedir bu yuzden bu fonksiyonu surekli aktif hale getirmeden once bunu gozonune almalisiniz. Ornek 2: <?php ob_start(); print "Bu ornekte bir string'in boyunu kullanissiz bir yontemle bulacagiz"; $uzunluk = strlen(ob_get_contents()); ob_end_clean(); ?> Yukaridaki ornekte kisaca ciktiyi tarayiciya gondermek yerine tampon'da tutup daha sonra tampondan geri cikarip boyuna bakiyoruz. Bu asamada tarayiciya gondermekten vazgecip ob_end_clean() ile tamponu bosaltiyoruz. Boylece cikti kontrolunu de durdurmus oluyoruz. Simdilik bu kadar.. Bu makalenin ileriki bir bolumunde cikti fonksiyonlarinin ileri seviyede kullanim sekillerine ve bu fonksiyonlarla web sitelerimizden transfer ettigimiz dokumanlari sIkIstirip ( yani compression) gondererek web sitelerimizi nasil hizlandirabilecegimize deginecegiz. Size fikri vermek acisindan daha kendi kendinize yazabileceginiz bir program fikriyle makalemizi bitiriyoruz. Cikti Kontrol Fonksiyonlariyla Dinamik Sayfalar Yazilimi: Eger web siteniz'de bir sayfa bir veritabani sorgusunun uzun surmesi dolayisiyla veya herhangi bir baska sebebpten cok uzun zamanda yukleniyorsa dokumanin bir kismini tampon'a yukleyip sayfayi yavaslatan bolume baslamadan bunu tarayiciya gondererek kullaniciya sayfa daha hizli yukleniyor izlenimi vermek mumkun.. Sorgunun sonucunu beklemeden cikti vermeye baslayabileceginizden bazi kosullarda gercek anlamda bir hizlanma da soz konusu olabilir. En basitinden sorguya baslamadan once "Lutfen bekleyiniz sayfa yukleniyor" turu bir mesaj cikarmaniz cikti kontrolleri sayesinde artik mumkun. |
|
|
|
![]() |
| Şu Anda Konuyu İnceleyen Aktif Kullanıcılar: 1 (0 üye ve 1 misafir) | |
| Konu Araçları | |
|
|
Benzer Konular
|
||||
| Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
| klasör şifreleme | Babacandeniz | Resimli Program Anlatım | 21 | 30.05.2008 19:22 |
| İki Veri Tabanı Arasında Veri Transferi... | staticiation | Programlama & Geliştiriciler için | 0 | 19.06.2007 01:38 |
| Sayfa Şifreleme(Asp)... | staticiation | Web Geliştirme Dilleri | 0 | 03.06.2007 20:50 |
| PHP’leri Şifreleme | maChaRa | Web Tasarım | 0 | 25.05.2007 09:33 |
| HTML Kod Şifreleme | CyberCoMo | Web Tasarım | 0 | 11.02.2007 22:58 |