Daha önce bu konuda get metodunu anlatmıştım, amacım post da anlatmak olduğu için kaldığım yerden devam ediyorum.
POST metudumuz ise GET metodundan biraz daha farklı ama her ikisinde de sunucuya bir veri gönderiyoruz. Sunucudaki php kodlarımız aşağıdaki gibi olsun, bu sefer "username" ve "password" olarak iki tane post anahtarını işleme sokmak isteyelim.
Anahtarların değerlerini değişkene atarken kullanmamız gereken "$_POST" ibaresidir, hatırlarlasanız GET için "$_GET" kullanmıştık
Dolayısıyla işleme sokacağımız değişkenler şu şekilde olacaktır.
Bunları da kendi anahtar isimlerine denk gelen bir değişken ile kısaca tanımlamak için atayabiliriz.
gelelim yine sunucuda bunları nasıl işleyeceğimize, "yavuz" adında bir username olsun ve şifresi de "cetin" olsun. Eğer username ve password bizi php sayfamızdakiyle eşleşirse karşıya "giris basarili" mesajı gitsin eğer eşleşmezse "basarisiz giris" mesajı gitsin. Sayfamızın adı da "login.php" olsun (örn; "http://adres.com/login.php" gibi olabilir).
Göründüğü sunucu tarafında GET ile arasında pek fark, ama POST ile asıl far isteğin göderilme aşamasıdır. Bu isteği gönderirken HTML ile nasıl bir işlem yapılıyor görelim
burda ki "form" verilerini girerken "input" oluşturduk ama "name" karşılığına yazdığımız php sayfamızdaki "$_POST" değişkene yeni bir array ekleyeceği için "username" ve "password" olmasına dikkat ettik. Eğer name karşılıkları "selam" gibi bir şey olsaydı bu $_POST["selam"] değişkenine denk gelecekti ve inputlara kullanıcının gireceği değer bunun karşılığı olacaktı.
Peki Python ile istek göndermek istersek?
o zaman python kullanıcılarına "urllib2" ve "requests" modulleri ile iki örnek vermek istiyorum
urllib2 modülü ile:
requests modulu ile:
peki nedir POST metodunun farkı?
GET ve POST metodlarını en basit işlemleriyle anlatmaya çalıştım, umarım yolun başında olan arkadaşlara faydalı olur. Anlamadığınız yerleri de sormaktan çekinmeyin, zira kimsenin ana dili programlama değil
iyi forumlar...
POST metudumuz ise GET metodundan biraz daha farklı ama her ikisinde de sunucuya bir veri gönderiyoruz. Sunucudaki php kodlarımız aşağıdaki gibi olsun, bu sefer "username" ve "password" olarak iki tane post anahtarını işleme sokmak isteyelim.
Anahtarların değerlerini değişkene atarken kullanmamız gereken "$_POST" ibaresidir, hatırlarlasanız GET için "$_GET" kullanmıştık
Dolayısıyla işleme sokacağımız değişkenler şu şekilde olacaktır.
PHP Kod:
$_POST["username"];
$_POST["password"];
Bunları da kendi anahtar isimlerine denk gelen bir değişken ile kısaca tanımlamak için atayabiliriz.
PHP Kod:
$username = $_POST["username"];
$password = $_POST["password"];
gelelim yine sunucuda bunları nasıl işleyeceğimize, "yavuz" adında bir username olsun ve şifresi de "cetin" olsun. Eğer username ve password bizi php sayfamızdakiyle eşleşirse karşıya "giris basarili" mesajı gitsin eğer eşleşmezse "basarisiz giris" mesajı gitsin. Sayfamızın adı da "login.php" olsun (örn; "http://adres.com/login.php" gibi olabilir).
PHP Kod:
<?php
if (isset($_POST['username']) && isset($_POST['passeword']))
{
$username = $_POST["username"];
$password = $_POST["password"];
if ($username == "yavuz" && $password == "cetin")
{
echo "giris basarili";
}
else
{
echo "basarisiz giris";
}
}
?>
Göründüğü sunucu tarafında GET ile arasında pek fark, ama POST ile asıl far isteğin göderilme aşamasıdır. Bu isteği gönderirken HTML ile nasıl bir işlem yapılıyor görelim
PHP Kod:
<html>
<body>
<form action="login.php" method="POST">
<input type="input" name="username" />
<input type="password" name="password" />
<input type="submit" />
</form>
</body>
</html>
burda ki "form" verilerini girerken "input" oluşturduk ama "name" karşılığına yazdığımız php sayfamızdaki "$_POST" değişkene yeni bir array ekleyeceği için "username" ve "password" olmasına dikkat ettik. Eğer name karşılıkları "selam" gibi bir şey olsaydı bu $_POST["selam"] değişkenine denk gelecekti ve inputlara kullanıcının gireceği değer bunun karşılığı olacaktı.
Peki Python ile istek göndermek istersek?
o zaman python kullanıcılarına "urllib2" ve "requests" modulleri ile iki örnek vermek istiyorum
urllib2 modülü ile:
PHP Kod:
import urllib2
import urllib
# burda giden post data urlencode yapilmak zorunda
# ve de json formatinda gondermemiz gerekiyor
data = urllib.urlencode({"username": "yavuz", "password": "cetin"})
istek = urllib2.urlopen("http://siteadi.com/login.php", data)
print istek.read()
requests modulu ile:
PHP Kod:
import requests
# gordugunuz gibi requests ile urlencode yapmamiza gerek yok
data = {"username": "yavuz", "password": "cetin"}
istek = requests.post("http://siteadi.com/login.php", data=data)
print istek.content
peki nedir POST metodunun farkı?
- Post ile verilerimiz get'e göre daha güvenli gider (mesela tarayıcı adres satırında veriler görünmez)
- Get ile gönderdiğimiz veri sınırlıdır ama Post ile öyle bir sınırımız yoktur.
GET ve POST metodlarını en basit işlemleriyle anlatmaya çalıştım, umarım yolun başında olan arkadaşlara faydalı olur. Anlamadığınız yerleri de sormaktan çekinmeyin, zira kimsenin ana dili programlama değil
iyi forumlar...
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club