Geri git   Van.GEN.TR Forum | Yerel Van Forumu > Bilgisayar > Programlama > PHP

Cevapla
 
Konu Araçları Stil
Alt 21/03/07, 22:35   #1
muhemar
Site Sahibi
 
muhemar - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Dec 2006
Mesajlar: 1.709
Tecrübe Puanı: 200 muhemar has much to be proud of muhemar has much to be proud of muhemar has much to be proud of muhemar has much to be proud of muhemar has much to be proud of muhemar has much to be proud of muhemar has much to be proud of muhemar has much to be proud of muhemar has much to be proud of
Standart PHP ve Formlar

Hepimiz değilse bile çoğumuz önce Frontpage veya Dreamweaver benzeri bir editor kullandık, herşey iyi güzel giderken iş form koyma, form ile ziyaretçiden bilgi alma işlemine gelince takılıp kalmışızdır. Çünkü statik HTML sayfaları ile formu oluşturabilir fakat daha ilerisine gidemezsiniz. Artık buradan sonrasını server taraflı bir script diline teslim etmemiz gerekiyor. Mesela PHP.
Bir HTML formuna göz atalım;

HTML-Kodu:
<form action=form.php method=GET>
Adınız : <input type="text" name=ad size=10><br>
Soyadınız : <input type="text" name=soyad size=10><br>
<input type="submit" value=" Gönder ">
</form>

Basitçe sadece ad ve soyad girilen bu form aslında temel form özelliklerinin hepsini kullanıyor. Form etiketine dikkat edelim :
"action=form.php" : Evet bahsettiğimiz gibi artık HTML devredışı kalacak ve form içeriği işlenmek için server taraflı bir programa gönderilecek. İşte form içinde ki action özelliği gönderilecek progamın yerini belirtmeye yarar. Mesela şu da geçerli bir atamadır: action="http://www.ceviz.net/form.php" veya action="../form.php" gibi...

"method=GET" : Burada formun hangi metod kullanılarak gönderileceği belirtiliyor. İki seçeneğiniz var -aslında iki değil ama genelde sadece ikisi kullanılıyor- : GET veya POST. Bunlardan herhangi birisini seçebilirsiniz, GET veya POST ile veri göndermenin farklarını yazmak uzun olacağından ve bu yazının ötesinde bi şey olduğundan sadece şunu diyelim :
GET ile gönderilen form verileri, adres satırına eklenir. POST ile gönderilenler ise adres satırında görünmez. GET, POST yöntemine göre biraz daha kısıtlı bir metoddur. Herneyse...
Form içinde bilgileri göndermemize yarayan etiketler ise input etiketleridir. Input'lar dışında select etiketleride bu işe yararlar. input etiketi tanımlarken dikkat etmemiz gereken nokta name özelliğidir. input veya select için name özelliği , formu işleyecek olan PHP scriptinde ziyaretçinin girdiği değerleri almak için otomatik oluşacak değişkenleri belirlediği için önemlidir. Neyse fazla soyut tutmadan bir örnekle daha iyi anlayalım :
Form.html dosyamız da şu kodlar olsun :


HTML-Kodu:
<html><body>
<form action=form.php method=GET>
Adınız : <input type="text" name=ad size=10><br>
Soyadınız : <input type="text" name=soyad size=10><br>
<input type="submit" value=" Gönder ">
</form> 
</body></html>
Bu da formu işleyecek olan form.php dosyamız :

PHP- Kodu:
<?
 
$ad 
$_GET["ad"];
$soyad $_GET["soyad"];
 
echo 
"Adınız : $ad <br> Soyadınız : $soyad"
 
?>
Ne? Çok mu kısa? Evet çok kısa, çünkü sadece formdan gelen değerleri aldık, ama onları işlemedik, sadece ekrana yazdırdık. Formdan gelen verileri aldıktan sonra artık onları ister veritabanına yazdırır, ister e-mail olarak gönderir, isterseniz hiç umursamazsınız, seçim sizin. Herneyse eğer form POST ile gönderilseydi :


PHP- Kodu:
<?
$ad 
$_POST["ad"];
$soyad $_POST["soyad"];
?>

Oldukça basit değil mi? Buraya kadar formdan verileri almanın PHP ile ne kadar kolay olduğunu gördük, şimdi bir iki noktaya dikkat ederek, bu işi hatasız ve mükemmel bir hale getirebilirsiniz.
1- PHP'nin en güzel, güzel olduğu kadar dikkat gerektiren özelliklerinden birisi de 'track_vars' dır. Yani POST, GET ile gönderilen veriler, COOKIE değişkenleri, SESSION değişkenleri oluşturulduğunda PHP motoru bunların her birisi için aynı isimde bir değişkeni otomatik oluşturur. Mesela;


PHP- Kodu:
<?
//formda <input type=text name=ad"gt; şeklinde gönderilen bir veri için 
//$ad değişkeni otomatik olarak oluşturulur.
echo "Adınız : $ad";
//veya 
echo "Soyadınız : $soyad";
 
?>

Ama bu kullanım biraz dikkat gerektirdiği ve güvenlik açıkları verebilme ihtimalinden dolayı birinci yol daha kullanışlıdır.
2- Ziyaretçi formun gönder tuşuna tıkladığında elbette form üzerinde boş alanlar bırakılmış olabilir(veya bilerek yapmış olabilir). Bu durumda;


PHP- Kodu:
<?
$ad 
$_GET["ad"];
?>
kod parçası hata verecektir. PHP size HTTP_GET_VARS dizisinde ad isimli bir indisin olmadığını söyler. Çünkü formda ad isimli input boş bırakıldığı zaman PHP sayfasına bu değişken aktarılmaz ve dolayısıyla olmayan indis hatası verilir. Bunu engellemek için PHP ile kontroller koyabilirsiniz.


PHP- Kodu:
<?
// @ işareti bu satırda hata varsa, gözardı edilmesini sağlar 
$ad = @$_GET["ad"];
 
if (
$ad=="") {
die (
"Form alanlarından birisi boş bırakılmış...");
}
?>
Şimdilik formlar üzerine söyleyeceklerim bu kadar, tabii ki daha çok şeyler var ama siz kendi formlarınızı oluşturup deneyerek bunların hepsinin üstesinden gelebilirsiniz.

kaynak:ceviz.net
__________________
[Bu Adresi (link) Görme Yetkiniz Yok BEDAVA'ya Üye Ol Sitemizden Faydalan....]
muhemar isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Konu Sayısı: 92
Takımınız:
Alt 16/06/07, 13:32   #2
LastDesiqner
Super Moderator
 
LastDesiqner - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Jan 2007
Bulunduğu yer: ναη
Mesajlar: 8.060
Tecrübe Puanı: 56 LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute LastDesiqner has a reputation beyond repute
Standart

emeğine sağlık abi... teşekkürler....
__________________
[Bu Adresi (link) Görme Yetkiniz Yok BEDAVA'ya Üye Ol Sitemizden Faydalan....]
[Bu Adresi (link) Görme Yetkiniz Yok BEDAVA'ya Üye Ol Sitemizden Faydalan....]


[Bu Adresi (link) Görme Yetkiniz Yok BEDAVA'ya Üye Ol Sitemizden Faydalan....]
LastDesiqner isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Konu Sayısı: 488
Takımınız:
Alt 01/08/08, 10:23   #3
Neutralizer
Yasaklı kullanıcı
 
Neutralizer - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Jan 2008
Bulunduğu yer: İstediğin yerden
Mesajlar: 1.883
Tecrübe Puanı: 0 Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute Neutralizer has a reputation beyond repute
Standart

emeğe sağlık
Neutralizer isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Konu Sayısı: 316
Takımınız:
Alt 10/10/09, 23:24   #4
mbyorgun
Acemi Er
 
mbyorgun - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Oct 2009
Mesajlar: 2
Tecrübe Puanı: 0 mbyorgun will become famous soon enough
Standart

yani emek sarf etmissiniz ama
1. olarak GET yontemi ile form kullanmak cok guvensiz tabi ihtiyac olursa olabilir
2. @$_GET['deger'] burada ki @ isareti sadece mevcut bulunan degiskenin yanindaki deger eger hata verir se hata ciktisini gostermez ama error_reporting(0); bu fonksiyon tamamiyle tum php sayfasinda ki hatalari gostermeyi iptal eder....

PHP- Kodu:
<? echo 'tesekkurler :)'?>
mbyorgun isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Konu Sayısı: 0
Takımınız:
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Yeni Mesaj yazma yetkiniz Aktif değil dir.
Mesajlara Cevap verme yetkiniz aktif değil dir.
Eklenti ekleme yetkiniz Aktif değil dir.
Kendi Mesajınızı değiştirme yetkiniz Aktif değildir dir.

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Gitmek istediğiniz klasörü seçiniz


Bütün Zaman Ayarları WEZ +3 olarak düzenlenmiştir. Şu Anki Saat: 23:34 .


Powered by vBulletin
Copyright © 2000-2007 Jelsoft Enterprises Limited.
Sitemap
6, 5, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 113, 16, 17, 18, 19, 81, 20, 27, 22, 23, 24, 25, 26, 48, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 43, 136, 40, 58, 45, 42, 44, 46, 47, 53, 54, 55, 56, 57, 59, 60, 70, 61, 62, 63, 64, 65, 66, 68, 69, 71, 72, 74, 75, 76, 77, 78, 79, 80, 82, 83, 96, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 98, 97, 100, 101, 102, 103, 106, 104, 105, 112, 109, 108, 107, 110, 111, 114, 115, 118, 116, 117, 119, 148, 154, 124, 165, 122, 120, 123, 121, 150, 153, 125, 128, 129, 131, 132, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 151, 149, 202, 175, 164, 152, 167, 155, 156, 157, 158, 159, 160, 161, 162, 163, 195, 169, 166, 168, 170, 171, 172, 199, 174, 173, 196, 200, 176, 177, 180, 178, 179, 182, 189, 187, 184, 186, 191, 192, 193, 194, 197, 198, 201, 203, 229, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 236, 231, 232, 233, 234, 235, 237, 240, 239, 241, 243, 242, 244,