Php sayfaları arasında POST veya GET metoduyla gelen değerleri veya sayfa içindeki dizi veya nesnelerin alt elemanlarıyla beraber değerlerini taşımak için aşağıdaki yöntemi kullanabilirsiniz.
form.html // Form verilerinin POST metodu ile gönderileceği form sayfası.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Form</title> </head> <body> <form action="islem1.php" method="POST"> Adı : <input type="text" name="adi" size="30"><br> Soyadı : <input type="text" name="soyadi" size="30"><br> Email : <input type="text" name="email" size="50"><br> Telefon : <input type="text" name="Telefon" size="30"><br> Şehir : <select name="sehir"> <option>İstanbul</option> <option>Ankara</option> <option>İzmir</option> </select><br> <input type="submit" value="Gönder"> </form> </body> </html>
islem1.php //Formdan POST metoduyla gelen değerler islem2.php dosyasına aktarılacak.
<? $param=base64_encode(serialize($_POST)); $link = 'islem2.php?data='.$param; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>1. Adım</title> </head> <body> <a href="<?=$link?>">2. Adıma Geç</a> </body> </html>
Burada form verilerini aktarmak için php’nin serialize ve base64_encode fonksiyonlarını kullanıyoruz. Serialize fonksiyonu bir değişken(dizi veya nesne) içindeki değerleri string’e dönüştürür. base64_encode fonksiyonu ise verilen değeri 64 bit olarak şifreler ve yine string bir değer oluşturur. Oluşturduğumuz bu string değeri sayfalar arasında taşımak, formdaki her bir değeri ayrı ayrı yazıp taşımaktan daha kolaydır. Hatta bazı durumlarda değişkenlerde değişebileceği için bu yöntem daha sağlıklı olacaktır.
<? $renk[0]='mavi'; $renk[1]='kırmızı'; $renk[2]='yeşil'; $data = serialize($renk); echo $data; //a:3:{i:0;s:4:"mavi";i:1;s:10:"kırmızı";i:2;s:6:"yeşil";} $data=base64_encode($data); echo $data; //YTozOntpOjA7czo0OiJtYXZpIjtpOjE7czoxMDoia8Sxcm3EsXrEsSI7aToyO3M6NjoieWXFn2lsIjt9 ?>
islem2.php //islem1.php sayfasındaki form değerleri bu sayfaya aktarıldı.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>2. Adım</title> </head> <body> <? if(isset($_GET['data'])) { $_POST=unserialize(base64_decode($_GET['data'])); echo 'Adı : '.$_POST['adi'].'<br>'; echo 'Soyadı : '.$_POST['soyadi'].'<br>'; echo 'Email : '.$_POST['email'].'<br>'; echo 'Şehir : '.$_POST['sehir'].'<br>'; } ?> </body> </html>
islem1.php dosyasından aktarılan değerleri yeniden kullanabilmemiz için yaptığımız işlemlerin tersini gerçekleştirmemiz gerekiyor. base64_encode ile şifrelediğimiz veriyi base64_decode fonksiyonu ile dönüştürüyoruz. serialize ile string hale dönüştürdüğümüz verieri de unserialize ile dönüştürüyoruz. Artık değişkenlerimizi sayfa içerisinde kullanabiliriz.



Temmuz 1st, 2009 14:14
ÇOk güzel bi konu buna ihtiacım olmuştu ELinize ağznıza sağlık yoksa 20 defa post et sonra yolla, çok amele işi idi…
Eylül 25th, 2009 15:16
Çok teşekkür ederim. Güzel bir bilgi.
Tek tek taşımadan önce araştırayım demiştim.. İyi ki de değimişim
Ocak 21st, 2010 00:03
Çok güzel gerçekten teşekkür ediyorum..