Archívum ‘Snippets‘

 
 

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.

Javascript text rotator

Keszitettem egy egyszeru kis javascript szoveg forgatot, es ezt szeretnem megosztani. A script mukodesehez jQuery libray szukseges az effectek miatt. Itt lathatjatok mukodes kozben es a forrasban ott a kod kommentezve.

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

Check all js function

Egy egyszeru kis js fuggvenyt szeretnenk megosztani veletek, amivel egy vezerlo checkbox-on keresztul ki tudunk jelolni egyszerre tobb masikat is. Ime a kod:

<script type="text/javascript">
function checkuncheck(name,controller,form){
    eval("name = document."+form+".elements['"+name+"']");
    name.checked = controller.checked;
    for (i = 0; i < name.length; i++)  {
     name[i].checked = controller.checked;
    }
}
</script>
<form name="test" >
<label>Controller</label><input type="checkbox" onclick="checkuncheck('test[]',this,'test')"/><br />
<input type="checkbox" name="test[]" /><br />
<input type="checkbox" name="test[]" /><br />
<input type="checkbox" name="test[]" /><br />
<input type="checkbox" name="test[]" /><br />
</form>

A fuggveny parameterei:
name: az vezerelni kivant checkbox-ok neve,
controller: a vezerlo checkbox objektuma,
form: a form neve amiben a checkbox-ok talalhatoak.

Anti IE6

Nem igazan kedvelem az IE6-ot,ezert osszedobtam egy apro js-t ami ha ie6-al nyitjak meg az oldalt egy figyelmezteto uzenetet jelenit meg es a beallitasoktol fuggo ido utan az eltunteti.
Lassuk a hasznalatat.
Miutan betoltottuk a jquery-t,a head reszbe az alabbi kodot illesszuk be:

<script type="text/javascript">
(function($){$.fn.antiIE = function(options){$.fn.antiIE.defaults  = $.extend({}, $.fn.antiIE.defaults, options);jQuery.each(jQuery.browser,function(i,val){if(i=="msie"&&jQuery.browser.version.substr(0,1)=="8"){$("body").append('<div class="thisisIE6">'+$.fn.antiIE.defaults.ie6Message+'</div>');$('.thisisIE6').css($.fn.antiIE.defaults.css).slideDown('slow');setTimeout(function(){$('.thisisIE6').slideUp()},($.fn.antiIE.defaults.timeout*1000))}});};
$.fn.antiIE.defaults = {
ie6Message: 'On ie 6-ot hasznal',
css : {'position':'fixed','top':'0','left':'0','width':'100%','height':'20px','display':'none','background':'#333131','padding':'20px','color':'#fff'},
timeout: 5
}})(jQuery);
$("body").antiIE({ie6Message:'On Internet Explorer 6-ot hasznal. Jobban jar mindenki ha lecsereli :).',timeout:5});
</script>

Az “On Internet Explorer… ” szoveg helyere irhatjuk be a megjeleniti kivant uzenetet a timeout pedig az eltuntenesi ido masodpercben.

Jelszogenerator

A jelszavak hasznalatanal fontos tenyezo hogy ne ertelmes szot hasznaljunk, mert azt az egyszeru bruteforce technikaval konnyeden fel lehet torni. Ezert krealtam egy jelszo generalo javascriptet : Jelszogenerator