![]() |
|
| |||||||
|
| | Seçenekler |
|
#1
| ||||
| | ||||
PHP ve FormlarPHP 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; <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><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 : <?$ad = $HTTP_GET_VARS["ad"];$soyad = $HTTP_GET_VARS["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 : <?$ad = $HTTP_POST_VARS["ad"];$soyad = $HTTP_POST_VARS["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; <?//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; <?$ad = $HTTP_GET_VARS["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. <?// @ işareti bu satırda hata varsa, gözardı edilmesini sağlar $ad = @$HTTP_GET_VARS["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. |
| Sponsorlar | |||
|
Text Reklam: facebook ~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | ||||||||||||||||||||||||||||||||||||||||||||||