Rss megjelenítése

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.

ASCII encoder keszitese

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

Sqlite

Elofurdul hogy olyan tarhelyre kell fejleszteni ahol nincsen klasszikus adatbazis,de szuksegunk lenne ra. Van aki ilyenkor fajl-ban tarolja a szukseges adatokat de en azt nem tartom tul gyors es jo megoldasnak, foleg hogy php5 ota alapbol rendelkezesunkre all az sqlite is.
Továbbolvas…

Validalas maskepp

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

A kepek meretezesere a legtobben a gd libray-t hasznaljak. En is ezt hasznaltam(hasznalom ma is ahol nincs lehetoseg imagick-re), de van egy annal kevesebb rendszereroforrast igenylo es egyszerubben hasznalhato megoldas is : imagick.
Ez egy php kiterjesztes amit a serveradmin tud installalni a serveren, es ha ez megvan akkor johet is a hasznalat:

##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 utolso parameter true akkor a az imagick ugy fog meretezni hogy mindenkeppen beleferjen az uj kep a megadott meretekbe es nem kell nekunk bajlodni az aranyok szamitasaval.
Ezen kivul meg rengeteg hasznos dolgot lehet a library-val csinalni ugyhogy folyt.kov.

cURL I.

A cURL library segítségével könnyedén hajtatunk végre bonyolultabb http kéréseket is.
Nézzük hogyan tudunk vele megnyitni egy weboldalt:

#elinditjuk a  cURL sessiont
$ch = curl_init();
#megadjuk a beallitasokat
#az megnyitni kivant url
curl_setopt($ch, CURLOPT_URL, "google.com");
#a valaszt nem akarjuk kozvetlenul output-olni
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
#vegrehajtjuk a kerest
$result= curl_exec($ch);
#lezarjuk a session-t hogy felszabaditsuk a rendszer-eroforrasokat.
curl_close($ch);


Továbbolvas…

Php shorthands

Ebben a postban nehany hasznos php “shorthand” szintakszist fogok bemutatni. A programozok jelentos resze nem szeret gepelni, de emellett a kod atlathatosaganak is jot tesz ha az ember hasznalja ezeket. Ennek ellenere e nem sok kodban latom oket, de remeljuk hogy egyre tobbe kezdik el hasznalni.

Akkor lassunk is nehany peldat.
Továbbolvas…

Email küldés formból egyszerűen

Ma mar szinte minden weboldalon talalhato uzenetkuldo form. Ennek a feldolgozasara mutatok meg egy modszert. A form validalasara most nem terek ki, talan arrol is irok majd egy postot. Nezzunk is egy pelda form-ot.

<form id="contact" method="post">
 <label>Nev</label><input name="nev" type="text" />
 <label>Emailcim</label><input name="emailcim" type="text" />
 <label>Mezo </label><input name="mezo" type="text" />
 <label>Mezo 2</label><input name="mezo_2" type="text" />
 <input name="send" type="submit" />
</form>

A kezdo fejleszto ilyenkor nekilat es szepen osszerakja az emailt a $_POST -on jovo adatokbol igy:

$email = "Nev:" .$_POST['nev']."\n"
	  ."Email:" .$_POST['email']."\n";

es igy tovabb az osszes mezovel. En szemely szerint nem szeretek gepelni raadasul ez nem igazan ujrahasznosithato kodot fog eredmenyezni.

Továbbolvas…