Php’de serialize ve base64_encode ile sayfalar arasında dizi veya nesneleri taşımak

php 3 Yorum »

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.

XML – Dizi Dönüştürmesi Yapmak İçin Php Sınıfı (XML<->Array)

php Yorum Yok »

Aşağıdaki assoc_array2xml php sınıfı ile dizileri xml’e, xml verilerini de php dizilerine dönüştürebilirsiniz. Daha çok php4 kullananlar bu sınıfa ihtiyaç duyacaktır. Php5 kullananlar SimpleXML sınıfı ile aynı işlemleri ve daha fazlasını yapabilirler. SimpleXML ile ilgili örnekleri ve bilgileri yakında yayınlarız.

<?php
class assoc_array2xml
{
	var $text;
	var $arrays, $keys, $node_flag, $depth, $xml_parser;
 
	function array2xml($array)
	{
		$this->text="<array>";
		$this->text.= $this->array_transform($array);
		$this->text .="</array>";
		return $this->text;
	}
 
	function array_transform($array)
	{
		foreach($array as $key => $value)
		{
			if(!is_array($value))
			{
				$this->text .= "<$key>$value</$key>";
			}
			else
			{
				$this->text.="<$key>";
				$this->array_transform($value);
				$this->text.="</$key>";
			}
		}
		return $array_text;
	}
 
	function xml2array($xml)
	{
		$this->depth=-1;
		$this->xml_parser = xml_parser_create();
		xml_set_object($this->xml_parser, $this);
		xml_parser_set_option ($this->xml_parser,XML_OPTION_CASE_FOLDING,0);
		xml_set_element_handler($this->xml_parser, "startElement", "endElement");
		xml_set_character_data_handler($this->xml_parser,"characterData");
		xml_parse($this->xml_parser,$xml,true);
		xml_parser_free($this->xml_parser);
		return $this->arrays[0];
	}
 
	function startElement($parser, $name, $attrs)
	{
		$this->keys[]=$name;
		$this->node_flag=1;
		$this->depth++;
	}
 
	function characterData($parser,$data)
	{
		$key=end($this->keys);
		$this->arrays[$this->depth][$key]=$data;
		$this->node_flag=0;
	}
 
	function endElement($parser, $name)
	{
		$key=array_pop($this->keys);
		if($this->node_flag==1)
		{
			$this->arrays[$this->depth][$key]=$this->arrays[$this->depth+1];
			unset($this->arrays[$this->depth+1]);
		}
		$this->node_flag=1;
		$this->depth--;
	}
}
 
 
$dizi=array('seviye1_1'=>'45','seviye1_2'=>array('seviye2_1'=>'56','seviye2_2'=>'78'),'seviye1_3'=>'62');
$cevir= new assoc_array2xml;
$xml=$cevir->array2xml($dizi);
 
echo htmlentities($xml);
echo "<br>";
 
$xml_dizi=$cevir->xml2array($xml);
print_r($xml_dizi);
 
?>
Lampforweb 2007 Tüm hakları saklıdır. Tema N.Design Studio
İçerik RSS Yorum RSS Giriş