Hu Gb

PHP

Yii framework DataProvider default order

2011.09.08
The widgets of the Yii framework are using a so called 'dataprovider'. They support the order of the data by any attribute but in some cases we need a default order. To achive this we need to set the 'defaultOrder' property of the 'sort' property(which is a CSort class) of the dataProvider:
$dataProvider=new CActiveDataProvider('Post', array(
	    'criteria'=>array(
	        'condition'=>'status=1',
	        'with'=>array('author'),
	    ),
		'sort' => array(
			'defaultOrder' => 'create_time DESC'
		),
	    'pagination'=>array(
	        'pageSize'=>20,
	    ),
	));
Továbbolvas

RSS megjelenítése PHP-vel

2009.11.08
Weboldalunkon egyszerűen jelenithetünk meg más oldalatól kapott rss anyagot. Az alábbi snippet müködéséhez szükségünk lesz cURL,és simplexml támogatásra a tárhelyünkön, de ezek szinte mindenhol alapból elérhetőek. Az rss csatornák xml segítségével adják át az adatokat. Tehát amikor meg akarunk nyitni egy rss csatornát, például ezen blog-ét akkor egy xml-t fogunk kapni. A csatorna megnyitásához használhatnánk a file_get_contents függvényt is, de ott az időtullépést nem tudjuk kellően lekezelni ezért én cURL-t használok:
$url = "http://blog.greg-dev.com/feed/";
$options = array(
	CURLOPT_URL => $url,#url megadasa
	CURLOPT_RETURNTRANSFER => 1,#nem akarunk kozvetlen output-ot
	CURLOPT_CONNECTTIMEOUT => 2 ,# 2 masodperc-es varakozas utan megszakitjuk a kerest
	CURLOPT_MAXREDIRS      => 0,#maximum 0 atiranyitasig kovesse az atiranyitasokat
	CURLOPT_REFERER => "http://www.google.hu" #beallitjuk a referert
	
	);
	$ch = curl_init();
	curl_setopt_array($ch, $options);
	#megcsinaljuk a http kerest
	$result = curl_exec($ch);
	#lezarjuk a session-t hogy felszabaditsuk a rendszer-eroforrasokat.
	curl_close($ch);
A fenti kód lefutása után a $result változóban lesz a nekünk kellő xml adatállomány. A kapott adatot ezután valmilyen használható formára kellene alakítanunk és ítt veszzük igénybe aphp simplexml bővítményét ami az átadot xml-ből egy objektumot képez nekünk:
    $xml = simplexml_load_string($result);
    $output = '<ul>';
    $limit = 10;
    $i = 0;
	foreach($xml->channel->item as $item){
	  $output .= '<li><a href="'.$item->link.'" rel="nofollow" target="_blank">'.$item->title.'</a>';
	  $output .= '<br /><span class="description">'.$item->description.'</span>';
	  $output .= '</li>';
	  $i++;
	  if($limit != 0 and $i == $limit)break;
	}
   $output .= '</ul>';
Mivel a kapott adat lehet hogy tul hosszú ezért beállíthatunk egy limitet,melynek elérésekor a ciklus véget ér. Az xml tag-jai pedig az objectumon keresztül elérhetőek és tetszőleges kimeneti formába rendezhetőek.
Továbbolvas

ASCII encoder keszitese PHP-vel

2009.08.31
Sokan hasznaljak email cimek vedelmere a harvester robotok ellen az email cim ASCII kodolasu kiiratasat. Egy parsoros php koddal ezt konnyeden megvalosithatjuk. Amire szuksegunk lesz az az ord() fuggveny ami a parameterkent atadott karakter ASCII kodjat adja nekunk vissza. Ahhoz hogy ezt a bongeszo meg is ertse at kell alakitanunk a kodot, vagyis csak ele kell raknunk egy "&" es "#" jelet illetve egy ";" karakterrel lezarni. Lassuk akkor a kodot:
$string = 'test@test.com';
$ascii = null;
for($a = 0;$a < strlen($string);$a++){
  $ascii .= '&#'.ord(substr($string,$a)).';';
}

echo $ascii;
Amint lathato a stringen vegigmegyunk karakterenkent egy ciklussal es igy egyesevel kicsereljuk a karaktereket ASCII megfelelojukre. A fenti par sor eleg eroforras igenyes ezert csinjan banjunk vele. Itt megnezhettek egy mukodo demot: Demo
Továbbolvas

Validalas filterekkel

2009.08.10
Altalaban validalasra a regexp fuggvenyeket hasznaljak az emberek,pedig van egyszerubb modja is a validalasnak. Ket beepitett php kiterjesztest fogok bemutatni amivel konnyeden tudunk validalni. Az elso a php filters kiterjesztes. A kiterjesztessel nem csak validalni tudunk hanem az adatok megtisztisat is konnyeden elvegezhetjuk.
Továbbolvas

Thumbnail imagick-el

2009.08.07
A képek méretezésére PHP-ban a legtöbben a GD library-t használják, pedig van egy egyszerűbb és kisebb erőforrásigényű megoldás is: Imagick. Ez egy php kiterjesztés amit telepítenünk kell a szerveren, és ha ez megvan akkor jöhet is a használat:
##megnyitjuk a kepet es letrehozzuk az imagick objektumot
$image = new Imagick("meretezendo_kep_elerese");
##meretezes
$image->thumbnailImage($width,$height,1);
##lementjuk az uj kepet
$image->writeImage("az_uj_fajl_neve");
Ha az utolsó paraméter true akkor az imagick úgy fog méretezni hogy mindenképpen beleférjen az új kép a megadott méretbe es nekünk nem kell bajlódnunk az arányok számításával. Ezen kívűl még rengeteg hasznos dolgot lehet csinálni az imagick-el, úgyhogy folyt. köv.
Továbbolvas