<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Peter Oravec Blog &#187; PHP</title>
	<atom:link href="http://www.peteroravec.sk/clanky/webdizajn-a-programovanie/php-hypertext-preprocessor/feed" rel="self" type="application/rss+xml" />
	<link>http://www.peteroravec.sk</link>
	<description>O IT, weboch, webdizajne, SEO a RC modeloch...</description>
	<lastBuildDate>Wed, 25 Jan 2012 19:59:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Zend Framework: validátor voľnej domény</title>
		<link>http://www.peteroravec.sk/zend-framework-validator-volnej-domeny</link>
		<comments>http://www.peteroravec.sk/zend-framework-validator-volnej-domeny#comments</comments>
		<pubDate>Sun, 21 Mar 2010 19:25:13 +0000</pubDate>
		<dc:creator>Peter Oravec</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdizajn a programovanie]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[ZF "po lopate"]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.peteroravec.sk/?p=2502</guid>
		<description><![CDATA[Toto je krátky návod ako si vytvoriť vlastný validátor v Zend Frameworku pre overenie Vami zadanej domény či je dostupná pre registráciu. Na internete je podobných scriptov dosť ale nie všetky fungujú spoľahlivo. Táto ukážka by mala fungovať a je tu prerobená do validátora v ZF. Celý validátor pre overenie domény v ZF class My_Validate_AvailableDomain extends Zend_Validate_Abstract { const NOT_AVAILABLE = &#039;NotAvailableDomain&#039;; const NOT_VALID = &#039;NotValidDomain&#039;; const NO_TLD = &#039;NoTLD&#039;;...]]></description>
			<content:encoded><![CDATA[<p>Toto je krátky návod ako si vytvoriť vlastný validátor v Zend Frameworku pre overenie Vami zadanej domény či je dostupná pre registráciu. Na internete je podobných scriptov dosť ale nie všetky fungujú spoľahlivo. Táto ukážka by mala fungovať a je tu prerobená do validátora v ZF.</p>
<p><a href="http://www.peteroravec.sk/wp-content/uploads/2010/03/ZendFramework-logo.png"><img class="alignnone size-medium wp-image-2520" style="border: 0;" title="ZendFramework-logo" src="http://www.peteroravec.sk/wp-content/uploads/2010/03/ZendFramework-logo-640x169.png" border="0" alt="" width="640" height="169" /></a><span id="more-2502"></span></p>
<h2>Celý validátor pre overenie domény v ZF</h2>
<p><pre><pre style="height: 150px; overflow: auto; padding: 5px; border: 1px solid white;">class My_Validate_AvailableDomain extends Zend_Validate_Abstract
{
const NOT_AVAILABLE = &#039;NotAvailableDomain&#039;;
const NOT_VALID = &#039;NotValidDomain&#039;;
const NO_TLD = &#039;NoTLD&#039;;

protected $_messageTemplates =

array(
self::NOT_AVAILABLE =&amp;gt; &#039;Táto doména nie je voľná! Skúste vybrať inú...&#039;,
self::NOT_VALID =&amp;gt; &#039;Neplatná doména, nesprávny tvar domény!&#039;,
self::NO_TLD =&amp;gt; &#039;Vyberte TLD domény! (Top Level Domains)&#039;
);

public function isValid($value, $context = null)
{

$value = (string) $value;
$this-&amp;gt;_setValue($value);

if(!eregi(&quot;^[a-z0-9_\-]*$&quot;, $value)) {
$this-&amp;gt;_error(self::NOT_VALID);
return false;
}

if(isset($context[&#039;tld&#039;]) &amp;amp;&amp;amp; $context[&#039;tld&#039;] == &quot;&quot;) {
$this-&amp;gt;_error(self::NO_TLD);
return false;
}

###################

// ked budete pridavat domeny, musite zvysovat cislo v premennej podla poctu tld
$tlds = 32;

$tldt[&#039;co.uk&#039;] = 1;
$tld[1]=&quot;.co.uk&quot;;
$nic[1]=&quot;whois.nic.uk&quot;;
$rep[1]=&quot;No match for&quot;;

$tldt[&#039;org.uk&#039;] = 2;
$tld[2]=&quot;.org.uk&quot;;
$nic[2]=&quot;whois.nic.uk&quot;;
$rep[2]=&quot;No match for&quot;;

$tldt[&#039;net.uk&#039;] = 3;
$tld[3]=&quot;.net.uk&quot;;
$nic[3]=&quot;whois.nic.uk&quot;;
$rep[3]=&quot;No match for&quot;;

$tldt[&#039;me.uk&#039;] = 4;
$tld[4]=&quot;.me.uk&quot;;
$nic[4]=&quot;whois.nic.uk&quot;;
$rep[4]=&quot;No match for&quot;;

$tldt[&#039;com&#039;] = 5;
$tld[5]=&quot;.com&quot;;
$nic[5]=&quot;whois.opensrs.net&quot;;
$rep[5]=&quot;Can&#039;t get information&quot;;

$tldt[&#039;net&#039;] = 6;
$tld[6]=&quot;.net&quot;;
$nic[6]=&quot;whois.opensrs.net&quot;;
$rep[6]=&quot;Can&#039;t get information&quot;;

$tldt[&#039;org&#039;] = 7;
$tld[7]=&quot;.org&quot;;
$nic[7]=&quot;whois.publicinterestregistry.net&quot;;
$rep[7]=&quot;Not found&quot;;

$tldt[&#039;biz&#039;] = 8;
$tld[8]=&quot;.biz&quot;;
$nic[8]=&quot;whois.nic.biz&quot;;
$rep[8]=&quot;not found&quot;;

$tldt[&#039;info&#039;] = 9;
$tld[9]=&quot;.info&quot;;
$nic[9]=&quot;whois.afilias.net&quot;;
$rep[9]=&quot;not found&quot;;

$tldt[&#039;cc&#039;] = 10;
$tld[10]=&quot;.cc&quot;;
$nic[10]=&quot;whois.nic.cc&quot;;
$rep[10]=&quot;no match&quot;;

$tldt[&#039;uk.com&#039;] = 11;
$tld[11]=&quot;.uk.com&quot;;
$nic[11]=&quot;whois.centralnic.com&quot;;
$rep[11]=&quot;no match&quot;;

$tldt[&#039;uk.net&#039;] = 12;
$tld[12]=&quot;.uk.net&quot;;
$nic[12]=&quot;whois.centralnic.com&quot;;
$rep[12]=&quot;no match&quot;;

$tldt[&#039;name&#039;] = 13;
$tld[13]=&quot;.name&quot;;
$nic[13]=&quot;whois.nic.name&quot;;
$rep[13]=&quot;no match&quot;;

$tldt[&#039;sk&#039;] = 14;
$tld[14]=&quot;.sk&quot;;
$nic[14]=&quot;whois.ripe.net&quot;;
$rep[14]=&quot;Not found.&quot;;

$tldt[&#039;cz&#039;] = 15;
$tld[15]=&quot;.cz&quot;;
$nic[15]=&quot;whois.nic.cz&quot;;
$rep[15]=&quot;No entries found.&quot;;

$tldt[&#039;eu&#039;] = 16;
$tld[16]=&quot;.eu&quot;;
$nic[16]=&quot;whois.eu&quot;;
$rep[16]=&quot;Status:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FREE&quot;;

$tldt[&#039;at&#039;] = 17;
$tld[17]=&quot;.at&quot;;
$nic[17]=&quot;whois.nic.at&quot;;
$rep[17]=&quot;nothing found&quot;;

$tldt[&#039;de&#039;] = 18;
$tld[18]=&quot;.de&quot;;
$nic[18]=&quot;whois.denic.de&quot;;
$rep[18]=&quot;free&quot;;

$tldt[&#039;ru&#039;] = 19;
$tld[19]=&quot;.ru&quot;;
$nic[19]=&quot;whois.ripn.ru&quot;;
$rep[19]=&quot;No entries found&quot;;

$tldt[&#039;tv&#039;] = 20;
$tld[20]=&quot;.tv&quot;;
$nic[20]=&quot;whois.nic.tv&quot;;
$rep[20]=&quot;No match for&quot;;

$tldt[&#039;be&#039;] = 21;
$tld[21]=&quot;.be&quot;;
$nic[21]=&quot;whois.geektools.com&quot;;
$rep[21]=&quot;Status:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FREE&quot;;

$tldt[&#039;ch&#039;] = 22;
$tld[22]=&quot;.ch&quot;;
$nic[22]=&quot;whois.nic.ch&quot;;
$rep[22]=&quot;We do not have an entry&quot;;

$tldt[&#039;li&#039;] = 23;
$tld[23]=&quot;.li&quot;;
$nic[23]=&quot;whois.nic.ch&quot;;
$rep[23]=&quot;We do not have an entry&quot;;

$tldt[&#039;lt&#039;] = 24;
$tld[24]=&quot;.lt&quot;;
$nic[24]=&quot;whois.domreg.lt&quot;;
$rep[24]=&quot;Status:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;available&quot;;

$tldt[&#039;lv&#039;] = 25;
$tld[25]=&quot;.lv&quot;;
$nic[25]=&quot;whois.nic.lv&quot;;
$rep[25]=&quot;%ERR - Nothing found&quot;;

$tldt[&#039;se&#039;] = 26;
$tld[26]=&quot;.se&quot;;
$nic[26]=&quot;whois.nic-se.se&quot;;
$rep[26]=&quot;not found.&quot;;

$tldt[&#039;ac&#039;] = 27;
$tld[27]=&quot;.ac&quot;;
$nic[27]=&quot;whois.nic.ac&quot;;
$rep[27]=&quot;- Available&quot;;

$tldt[&#039;ag&#039;] = 28;
$tld[28]=&quot;.ag&quot;;
$nic[28]=&quot;whois.nic.ag&quot;;
$rep[28]=&quot;Not found&quot;;

$tldt[&#039;cc&#039;] = 29;
$tld[29]=&quot;.cc&quot;;
$nic[29]=&quot;whois.nic.cc&quot;;
$rep[29]=&quot;No match&quot;;

$tldt[&#039;cn&#039;] = 30;
$tld[30]=&quot;.cn&quot;;
$nic[30]=&quot;whois.cnnic.net.cn&quot;;
$rep[30]=&quot;no matching record&quot;;

$tldt[&#039;cx&#039;] = 31;
$tld[31]=&quot;.cx&quot;;
$nic[31]=&quot;whois.nic.cx&quot;;
$rep[31]=&quot;Status: Not Registered&quot;;

$tldt[&#039;ws&#039;] = 32;
$tld[32]=&quot;.ws&quot;;
$nic[32]=&quot;whois.worldsite.ws&quot;;
$rep[32]=&quot;No match for&quot;;

###########################

$domainname = $value;
$texttld = $context[&#039;tld&#039;];
$stld = $tldt[$texttld];
$domname= $domainname.&#039;.&#039;.$texttld; //$tldt[$stld];

$wnic=$nic[$stld];
$ns = fsockopen($wnic,43); fputs($ns,&quot;$domname\r\n&quot;);
while(!feof($ns)) $result .= fgets($ns,128); fclose($ns);
if (eregi($rep[$stld],$result)) {
return true;
} else {
$this-&amp;gt;_error(self::NOT_AVAILABLE);
return false;
}
}
}
</pre></pre><br />
Trieda validátora sa volá  <strong>My_Validate_AvailableDomain</strong> pretože je uložená v adresári library/My/Validate/AvailableDomain.php . Vytvoríme si 3 konštanty ktoré budú označovať stavy ktoré môžu nastať a popíšeme k nim chybové hlášky ktoré sa vrátia ak overenie neprebehne v poriadku, ak prebehne script vráti len <strong>true</strong>.<br />
<pre><pre style="height: 150px; overflow: auto; padding: 5px; border: 1px solid white;">const NOT_AVAILABLE = &#039;NotAvailableDomain&#039;;
const NOT_VALID = &#039;NotValidDomain&#039;;
const NO_TLD = &#039;NoTLD&#039;;

protected $_messageTemplates =
array(
&nbsp;&nbsp;self::NOT_AVAILABLE =&amp;gt; &#039;Táto doména nie je voľná! Skúste vybrať inú...&#039;,
&nbsp;&nbsp;self::NOT_VALID =&amp;gt; &#039;Neplatná doména, nesprávny tvar domény!&#039;,
&nbsp;&nbsp;self::NO_TLD =&amp;gt; &#039;Vyberte TLD domény! (Top Level Domains)&#039;
);
</pre></pre><br />
Ďalšie na rade je zoznam registrátorov podľa krajiny.  V tomto scripte si nie som istý či pobeží overenie EU domén a INFO pravdepodobne bude treba len dať inú URL adresu pre WHOIS.</p>
<p>Script obsahuje aj overenie tvaru domény kde ak sa nezhoduje tvar podľa regulárneho výrazu vráti to FALSE. Pokračovať bude len ak je tvar správny.</p>
<h2>Hodnoty z formulára pre overenie</h2>
<p>Validátor je navrhnutý tak, že preberie 2 hodnoty z formulára a to: TLD, a názov domény (pomenujme si ich domain a tld). TLD bude klasický selectbox a názov domény bude klasický input pre text. V tomto scripte sa preberajú v tomto mieste:<br />
<pre><pre style="height: 100px; overflow: auto; padding: 5px; border: 1px solid white;">$domainname = $value;
$texttld = $context[&#039;tld&#039;];
$stld = $tldt[$texttld];
$domname= $domainname.&#039;.&#039;.$texttld;
</pre></pre></p>
<h2>Zobrazenie formulára a overenie domény</h2>
<p>Samotné volanie validátora je jednoduché, prikladám ukážku kde mám vytvorené políčka formuláru domain a tld. Pri TLD vložíme cez addMultiOption do rozbaľovátka hodnoty ktoré chceme overovať. (MOBI a EU možno nepojde, treba upraviť WHOIS)<br />
<pre><pre style="height: 150px; overflow: auto; padding: 5px; border: 1px solid white;">$name = new Zend_Form_Element_Text(&#039;domain&#039;);
$name -&amp;gt;setLabel(&#039;Názov domény&#039;)
-&amp;gt;setRequired(true)
-&amp;gt;addFilter(&#039;StripTags&#039;)
-&amp;gt;addFilter(&#039;StringTrim&#039;)
-&amp;gt;addFilter(&#039;StringToLower&#039;)
-&amp;gt;addValidator(&#039;NotEmpty&#039;)
-&amp;gt;addValidator(&#039;AvailableDomain&#039;)
-&amp;gt;addValidator(&#039;stringLength&#039;, false, array(1, 100));
$name-&amp;gt;addPrefixPath(&#039;My_Validate&#039;, &#039;My/Validate/&#039;,&#039;validate&#039;);
$name-&amp;gt;setDecorators(array(&#039;Composite&#039;,&#039;CustomHtml&#039;));
$this-&amp;gt;addElement($name);

$tld = new Zend_Form_Element_Select(&#039;tld&#039;);
$tld-&amp;gt;addMultiOption(&#039;&#039;, &#039;&#039;);
$tld-&amp;gt;addMultiOption(&#039;sk&#039;, &#039;sk&#039;);
$tld-&amp;gt;addMultiOption(&#039;cz&#039;, &#039;cz&#039;);
$tld-&amp;gt;addMultiOption(&#039;com&#039;, &#039;com&#039;);
//$tld-&amp;gt;addMultiOption(&#039;eu&#039;, &#039;eu&#039;);
$tld-&amp;gt;addMultiOption(&#039;biz&#039;, &#039;biz&#039;);
$tld-&amp;gt;addMultiOption(&#039;info&#039;, &#039;info&#039;);
$tld-&amp;gt;addMultiOption(&#039;name&#039;, &#039;name&#039;);
$tld-&amp;gt;addMultiOption(&#039;net&#039;, &#039;net&#039;);
$tld-&amp;gt;addMultiOption(&#039;org&#039;, &#039;org&#039;);
//$tld-&amp;gt;addMultiOption(&#039;mobi&#039;, &#039;mobi&#039;);
$tld-&amp;gt;addMultiOption(&#039;de&#039;, &#039;de&#039;);
$tld-&amp;gt;setLabel(&#039;&#039;)
-&amp;gt;addFilter(&#039;StripTags&#039;)
-&amp;gt;addFilter(&#039;StringTrim&#039;)
-&amp;gt;setDecorators(array(&#039;Composite&#039;,&#039;CustomHtml&#039;))
-&amp;gt;addValidator(&#039;NotEmpty&#039;);
$this-&amp;gt;addElements(array($tld));
</pre></pre><br />
V prípade, že overenie neprebehne script vráti hlášku podľa konštanty na začiatku scriptu. Môže to vyzerať napríklad takto.</p>
<p><a href="http://www.peteroravec.sk/wp-content/uploads/2010/03/overenie-domeny.gif"><img class="alignnone size-full wp-image-2518" title="overenie-domeny" src="http://www.peteroravec.sk/wp-content/uploads/2010/03/overenie-domeny.gif" alt="" width="462" height="104" /></a></p>
<p>Najdôležitejšie je mať políčka domain a tld. V políčku domain treba zavolať<br />
<pre><pre style="overflow: auto; padding: 5px; border: 1px solid white;">$name-&amp;gt;addPrefixPath(&#039;My_Validate&#039;, &#039;My/Validate/&#039;,&#039;validate&#039;);
$name-&amp;gt;addValidator(&#039;AvailableDomain&#039;);
</pre></pre><br />
Ostatné prebehne automaticky pretože validátor volá obsah políčok podľa ich mena. Dúfam, že som pomohol pri vytváraní vlastného validátora pre overenie domény. Podobným spôsobom môžete vytvoriť akýkoľvek validátor pre overenie čohokoľvek. Štruktúra a spôsob ostáva, jediné čo zmeníte je vnútro tiedy kde sa niečo overuje a vracia TRUE alebo FALSE. To je celé...</p>
<h2  class="related_post_title">Podobné články</h2><ul class="related_post"><li>18. Február 2009 -- <a href="http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu" title="Zend Framework po lopate: Použitie View Helperu">Zend Framework po lopate: Použitie View Helperu</a></li><li>23. Január 2009 -- <a href="http://www.peteroravec.sk/ako-vytvorit-vlastny-validator-pre-zend-framework-overenie-hesiel" title="Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel">Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel</a></li><li>20. September 2008 -- <a href="http://www.peteroravec.sk/zend-framework-pre-php" title="Zend Framework pre PHP">Zend Framework pre PHP</a></li><li>7. August 2008 -- <a href="http://www.peteroravec.sk/ako-presunut-web-na-novu-domenu-a-neprist-o-navstevnost-z-google" title="Ako presunúť web na novú doménu a neprísť o návštevnosť z Google">Ako presunúť web na novú doménu a neprísť o návštevnosť z Google</a></li><li>14. Marec 2008 -- <a href="http://www.peteroravec.sk/php5-a-mysql5-na-localhoste-s-wampserverom-nic-lahsie" title="PHP5 a MySQL5 na localhoste? S Wampserverom nič ľahšie&#8230;">PHP5 a MySQL5 na localhoste? S Wampserverom nič ľahšie&#8230;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.peteroravec.sk/zend-framework-validator-volnej-domeny/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zend Framework po lopate: Použitie View Helperu</title>
		<link>http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu</link>
		<comments>http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu#comments</comments>
		<pubDate>Wed, 18 Feb 2009 19:32:31 +0000</pubDate>
		<dc:creator>Peter Oravec</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdizajn a programovanie]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[ZF "po lopate"]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.peteroravec.sk/?p=1844</guid>
		<description><![CDATA[O Zend Frameworku je na internete toho popísaného veľa, nie ale všetko je zrozumiteľné hlavne pre človeka ktorý sa do toho chce dostať a nie všetkému rozumie. Jedna z takých vecí je napríklad View Helper. V podstate nutnosť pri práci so Zendom. Tento článok je laický návod na jeho použitie. Zend Framework sa podľa mňa ťažko učí z oficiálnej príručky kde človek veľa veciam nerozumie a často potrebuje vedieť aj...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.peteroravec.sk/wp-content/uploads/2009/02/zend-framework.png"><img class="alignleft size-full wp-image-1850" title="zend-framework" src="http://www.peteroravec.sk/wp-content/uploads/2009/02/zend-framework.png" alt="zend-framework" width="185" height="187" /></a></p>
<p>O Zend Frameworku je na internete toho popísaného veľa, nie ale všetko je zrozumiteľné hlavne pre človeka ktorý sa do toho chce dostať a nie všetkému rozumie. Jedna z takých vecí je napríklad View Helper. V podstate nutnosť pri práci so Zendom. Tento článok je laický návod na jeho použitie.</p>
<p>Zend Framework sa podľa mňa ťažko učí z oficiálnej príručky kde človek veľa veciam nerozumie a často potrebuje vedieť aj iné veci. Práve preto asi  urobím niečo ako mini seriál <strong>laických návodov Zend Frameworku</strong> lebo keby existovalo niečo keď som sa to snažil naučiť je sám tak by som si ušetril kopec času. Uvidíme...<span id="more-1844"></span></p>
<h2 style="clear: both;">Čo je View Helper?</h2>
<p>Vzhľadom na to, že je to framework typu MCV tak logika so vzhľadom je oddelená vec, view helper je niečo medzi tým. V podstate je to ako PHP funkcia ktorá mi niečo robí (počíta niečo alebo vráti kus HTML kódu) a vracia určité hodnoty alebo kusy kódov.  Už z názvu View je používaná v pohľadoch ale dá sa použiť aj v controller, tu je to ale na zváženie lebo nie vždy je vhodné do logiky vkladať View helper ktorý mi môže narušiť tú logiku MCV frameworku. Ak teda sa už hráme, že oddeľujeme logiku od vzhľadu tak je najlepšie View helper v controlleroch používať rozumne alebo vôbec.</p>
<h3>Kedy je to vhodné a vlastne na čo použiť View Helper?</h3>
<p>View Helper je vhodný do miest kde určitý úkon vykonávam často prípadne existuje na každej podstránke. <strong>Tým ale nemyslím</strong> napríklad ľavý stĺpec, pravý stĺpec, pätičku alebo hlavičku. Na niečo takéto sa to síce použiť dá ale podľa mňa to nieje dobre, toto sa dá vytvoriť pomocou vlastností a možností layoutov. View helper sa pri klasickom webe hodí napríklad na generovanie odkazov na registráciu, prihlásenie, odhlásenie a výpis prihláseného užívateľa. I keď sa toto bude nachádzať na každej podstránke tak to aké odkazy sa zobrazia si vyžaduje určitý script na overenie či je užívateľ prihlásený alebo nie. Mohli by ste to dať do hlavičky kde to nejakým spôsobom overiť ale nieje to praktické. View helper to vyrieši  a do pohľadu len vložíme jeden riadok kódu ktorý nám vráti čo potrebujeme.</p>
<h2>Vytvárame View Helper</h2>
<p>Vytvorenie View Helperu je jednoduché v podste si len vytvoríte jednu triedu s určitým názvom, tú uložíte na určité miesto vďaka tomu, že názov triedy a jej umiestnenie v adresároch umožní to, že View Helper použijete kdekoľvek bez toho aby bolo niekde treba niečo includovať.</p>
<blockquote><p>View Helper zavoláte v bez nutnosti includovania, to vďaka názvu triedy ktorá odkazuje na jeho umiestnenie. Toto je veľmi pohodlné, View Helper môžete zavolať aj v controller triede ale to je na zváženie, nemiešajte logiku so vzhľadom.</p></blockquote>
<p>Jednoduchý View Helper vyzerá napríklad takto:<br />
<pre><pre>&amp;lt;?php

class Zend_View_Helper_LoggedInUser

{

&nbsp;&nbsp;protected $_view;

&nbsp;&nbsp;function setView($view) {

&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;_view = $view;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;function loggedInUser() {

&nbsp;&nbsp;&nbsp;&nbsp;$auth = Zend_Auth:getInstance();

&nbsp;&nbsp;&nbsp;&nbsp;if($auth-hasIdentity()) 

&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$logoutUrl = $this-&amp;gt;_view-&amp;gt;linkTo(&#039;auth/logout&#039;);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$user = $auth-&amp;gt;getIdentity();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$username = $this-&amp;gt;_view-&amp;gt;escape(ucfirst($user-&amp;gt;username));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$string = &#039;Logged in as &#039; . $username . &#039; | &amp;lt;a href=&quot;&#039; . $logoutUrl . &#039;&quot;&amp;gt;Logout&amp;lt;/a&amp;gt;&#039;; 

&nbsp;&nbsp;&nbsp;&nbsp;} else {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$loginUrl = $this-&amp;gt;_view-&amp;gt;linkTo(&#039;authentification/identify&#039;);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$string = &#039;&amp;lt;a href=&quot;&#039; . $loginUrl . &#039;&quot;&amp;gt;Log In&amp;lt;/a&amp;gt;&#039;;

&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;return $string;

&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

}</pre></pre><br />
<a href="http://www.peteroravec.sk/wp-content/uploads/2009/02/zend-view-helper.gif"><img class="alignleft size-thumbnail wp-image-1864" title="Umiestnenie View Helperu v štruktúre" src="http://www.peteroravec.sk/wp-content/uploads/2009/02/zend-view-helper-83x180.gif" alt="Umiestnenie View Helperu v štruktúre" width="83" height="180" /></a>View Helper začína definíciou triedy, názov našej triedy je:<br />
<pre>Zend_View_Helper_LoggedInUser</pre><br />
Prečo? Zend_View_Helper definuje umiestnenie View Helperu, ten môžeme uložiť do ľubovoľného PHP súboru... názov môže byť ľubovoľný. Avšak v adresári <strong>Views / Helpers </strong>/ názov našeho View Helperu.</p>
<p><strong>LoggedInUser</strong> je názov triedy, najideálnejšie je si ju nazvať tak ako budeme volať aj View Helper v pohľade.</p>
<p>Funkciu SetView neriešte vložte to do každého View Helperu. Ďalej nasleduje funkcia ktorá sa volá tak isto ako názov triedy a to je to kde si dáte vlastný kód ktorý niečo spraví a vráti. V našom prípade to bude overenie či je užívateľ prihlásený a ak áno tak vypíše jeho meno a zobrazí odkaz na odhlásenie. Podrobne jej kód vysvetľovať nebudem.</p>
<p>V jednom View Helper môžete vytvoriť aj viac funkcií kde jedna môže niečo vrátiť druhej, funguje to ako keď v jednej funkcii vložíte inú atď.</p>
<h2>View Helper už máme, treba ho len zavolať</h2>
<p>View Helper máme vytvorený, jeho názov je dobre vytvorený, je umiestnený v presnom adresári... teraz ho už len zavoláme na mieste kde potrebujeme. V pohľade to spravíme s kódom napríklad:<br />
<pre>&amp;lt;?php echo $this-&amp;gt;LoggedInUser(); ?&amp;gt;</pre><br />
V Controller to zavoláme trochu inak a to:<br />
<pre>$this-&amp;gt;view-&amp;gt;LoggedInUser();</pre><br />
Toto je dúfam ľahko pochopiteľné použitie jednoduchého View Helperu...</p>
<h2  class="related_post_title">Podobné články</h2><ul class="related_post"><li>21. Marec 2010 -- <a href="http://www.peteroravec.sk/zend-framework-validator-volnej-domeny" title="Zend Framework: validátor voľnej domény">Zend Framework: validátor voľnej domény</a></li><li>23. Január 2009 -- <a href="http://www.peteroravec.sk/ako-vytvorit-vlastny-validator-pre-zend-framework-overenie-hesiel" title="Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel">Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel</a></li><li>20. September 2008 -- <a href="http://www.peteroravec.sk/zend-framework-pre-php" title="Zend Framework pre PHP">Zend Framework pre PHP</a></li><li>27. Apríl 2009 -- <a href="http://www.peteroravec.sk/tutorial-3d-text-vo-photoshope" title="Tutoriál: 3D text vo Photoshope">Tutoriál: 3D text vo Photoshope</a></li><li>7. August 2008 -- <a href="http://www.peteroravec.sk/ako-presunut-web-na-novu-domenu-a-neprist-o-navstevnost-z-google" title="Ako presunúť web na novú doménu a neprísť o návštevnosť z Google">Ako presunúť web na novú doménu a neprísť o návštevnosť z Google</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel</title>
		<link>http://www.peteroravec.sk/ako-vytvorit-vlastny-validator-pre-zend-framework-overenie-hesiel</link>
		<comments>http://www.peteroravec.sk/ako-vytvorit-vlastny-validator-pre-zend-framework-overenie-hesiel#comments</comments>
		<pubDate>Fri, 23 Jan 2009 22:45:38 +0000</pubDate>
		<dc:creator>Peter Oravec</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdizajn a programovanie]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.peteroravec.sk/?p=1746</guid>
		<description><![CDATA[Pri programovaní v Zend Frameworku prídete do stavu kedy budete potrebovať vytvoriť vlastný validátor na overenie určitých údajov, môžu to byť emeilové adresy, veľkosti súborov, správne obsahy nejakých políčok alebo aj jednoduché overenie správnosti dvoch hesiel. Tento článok popisuje vytvorenie jednoduchého validátoru pre overenie (potvrdenie) dvoch hesiel vo webovom formulári či sú rovnaké. Začneme zložitejšie a rovno celým kódom validátora: &#60;pre&#62;&#38;lt;?php class My_Validate_PasswordConfirmation extends Zend_Validate_Abstract { &#160;&#160;&#160;&#160;const NOT_MATCH = &#039;notMatchPasswords&#039;;...]]></description>
			<content:encoded><![CDATA[<p>Pri programovaní v Zend Frameworku prídete do stavu kedy budete potrebovať vytvoriť <strong>vlastný validátor na overenie určitých údajov</strong>, môžu to byť emeilové adresy, veľkosti súborov, správne obsahy nejakých políčok alebo aj jednoduché overenie správnosti dvoch hesiel. Tento článok popisuje vytvorenie jednoduchého validátoru pre overenie (potvrdenie) dvoch hesiel vo webovom formulári či sú rovnaké.<span id="more-1746"></span></p>
<p>Začneme zložitejšie a rovno celým kódom validátora:</p>
<p><pre><code>
&lt;pre&gt;&amp;lt;?php
class My_Validate_PasswordConfirmation extends Zend_Validate_Abstract
{
&nbsp;&nbsp;&nbsp;&nbsp;const NOT_MATCH = &#039;notMatchPasswords&#039;; 

&nbsp;&nbsp;&nbsp;&nbsp;protected $_messageTemplates =&nbsp;&nbsp;array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self::NOT_MATCH =&amp;gt; &#039;Password are not equals&#039;
&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;public function isValid($value, $context = null)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$value = (string) $value;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;_setValue($value); 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is_array($context)) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (isset($context[&#039;password_confirm&#039;]) &amp;amp;&amp;amp; ($value == $context[&#039;password_confirm&#039;]))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elseif (is_string($context) &amp;amp;&amp;amp; ($value == $context)) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&amp;gt;_error(self::NOT_MATCH);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;}
}
?&amp;gt;&lt;/pre&gt;
</code></pre></p>
<h2>Po kúskoch</h2>
<p>Teraz si to rozoberieme postupne.</p>
<p><code>class My_Validate_PasswordConfirmation extends Zend_Validate_Abstract</code></p>
<p><img class="alignleft size-full wp-image-1754" title="Zend Framework a umiestnenie validatora" src="http://www.peteroravec.sk/wp-content/uploads/2009/01/zend.gif" alt="Zend Framework a umiestnenie validatora" width="253" height="298" />Vytvoríme si triedu pre náš validátor... rozširujeme triedu Zend_Validate_Abstract. Meno našej triedy bude <strong>PasswordConfirmation</strong> lebo budeme overovat hodnoty dvoch políčok formulára. Teraz ale pozor na textik <strong>My_Validate_ </strong>pred názvom triedy. Nieje to tam pre srandu a určuje to v podstate miesto kde je validátor uložený. V našom prípade to je <strong>adresár library/My/Validate/</strong>.</p>
<p>Umiestniť si to môžete aj inde ale toto je jedno z odporúčaní, ako vidíte na obrázku tak do adresára My umiestňujete aj paginatory, vlastne decoratory ci ine dolezite triedy. Takže, teraz vieme ako zostaviť názov triedy a môžeme ísť ďalej.</p>
<p><code>const NOT_MATCH = &#039;notMatchPasswords&#039;;</code></p>
<p>Vytvoríme si konštantu s názvom NOT_MATCH ktorej bude priradená hláška pri nesplnení overovania (v našom prípade ak sa heslá nebudú rovnať).</p>
<p>V ďalšej funkcii si do premenných preberieme hodnoty inputov a v podmienke:</p>
<p><code>if (isset($context[&#039;password_confirm&#039;]) &amp;amp;&amp;amp; ($value == $context[&#039;password_confirm&#039;]))</code></p>
<p>overíme či heslá sú zhodné, ak áno vrátime si TRUE, ak nie vrátime FALSE a zobrazíme <strong>$this-&gt;_error(self::NOT_MATCH);</strong> čo nám vygeneruje hlášku formulára.</p>
<p>Takto samozrejme môžete overovať čokoľvek... heslá, regexp, adresy, unikátne údaje.</p>
<h2  class="related_post_title">Podobné články</h2><ul class="related_post"><li>21. Marec 2010 -- <a href="http://www.peteroravec.sk/zend-framework-validator-volnej-domeny" title="Zend Framework: validátor voľnej domény">Zend Framework: validátor voľnej domény</a></li><li>18. Február 2009 -- <a href="http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu" title="Zend Framework po lopate: Použitie View Helperu">Zend Framework po lopate: Použitie View Helperu</a></li><li>20. September 2008 -- <a href="http://www.peteroravec.sk/zend-framework-pre-php" title="Zend Framework pre PHP">Zend Framework pre PHP</a></li><li>7. August 2008 -- <a href="http://www.peteroravec.sk/ako-presunut-web-na-novu-domenu-a-neprist-o-navstevnost-z-google" title="Ako presunúť web na novú doménu a neprísť o návštevnosť z Google">Ako presunúť web na novú doménu a neprísť o návštevnosť z Google</a></li><li>14. Marec 2008 -- <a href="http://www.peteroravec.sk/php5-a-mysql5-na-localhoste-s-wampserverom-nic-lahsie" title="PHP5 a MySQL5 na localhoste? S Wampserverom nič ľahšie&#8230;">PHP5 a MySQL5 na localhoste? S Wampserverom nič ľahšie&#8230;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.peteroravec.sk/ako-vytvorit-vlastny-validator-pre-zend-framework-overenie-hesiel/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework pre PHP</title>
		<link>http://www.peteroravec.sk/zend-framework-pre-php</link>
		<comments>http://www.peteroravec.sk/zend-framework-pre-php#comments</comments>
		<pubDate>Sat, 20 Sep 2008 12:18:49 +0000</pubDate>
		<dc:creator>Peter Oravec</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdizajn a programovanie]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.peteroravec.sk/?p=881</guid>
		<description><![CDATA[PHP mám rád, páči sa mi jeho jednoduchosť a čistota výstupu pri tvorbe webov. Zend Framework (mohli by sme ho nazvať aj prvým oficiálnym frameworkom) ma zaujal a rozhodol som sa ho naučiť. Pokúsim sa (postupne ako ho budem spracovávať) priniesť niečo ako seriál o programovaní so Zend Frameworkom. Zatiaľ taký malý úvod. Čo je Zend Framework? Zend Framework je PHP knižnica pre vývoj aplikácií v PHP. Obsahuje množstvo komponentov...]]></description>
			<content:encoded><![CDATA[<p>PHP mám rád, páči sa mi jeho jednoduchosť a čistota výstupu pri tvorbe webov. Zend Framework (mohli by sme ho nazvať aj prvým oficiálnym frameworkom) ma zaujal a rozhodol som sa ho naučiť. Pokúsim sa (postupne ako ho budem spracovávať) priniesť niečo ako seriál o <strong>programovaní so Zend Frameworkom. </strong>Zatiaľ taký malý úvod.<span id="more-881"></span></p>
<h2>Čo je Zend Framework?</h2>
<p>Zend Framework je PHP knižnica pre vývoj aplikácií v PHP. Obsahuje množstvo komponentov ktoré umožňujú vyvíjať PHP aplikácie ľahšie s udržateľnejším kódom pre budúce úpravy a vylepšenia.</p>
<h2>Prečo Zend Framework?</h2>
<ul>
<li>Rozsiahla dokumentácia</li>
<li>Rozsiahla komunita</li>
<li>Všetko v jednom, všetky Zend obsahuje všetko čo pri vývoji budete potrebovať</li>
<li>Jednoduchosť vývoja</li>
<li>Umožní rýchly vývoj aplikácií</li>
</ul>
<h2>Jednotlivé moduly</h2>
<p>Zend Framework môžeme rozdeliť do šiestich modulov, tie pokrývajú všetky nástroje pre vývoj aplikácií. Sú to:</p>
<h3>Jadro:</h3>
<p>Zend_Controller, Zend_View, Zend_Db, Zend_Config, Zend_Filter, Zend_Validate, Zend_Registry, Zend_Acl,  Zend_Auth, Zend_Session</p>
<h3>Internalizačné nástroje:</h3>
<p>Zend_Date, Zend_Locale, Zend_Measure</p>
<h3>Hypertext Transfer Protocol:</h3>
<p>Zend_Http_Client, Zend_Http_Server, Zend_Uri</p>
<h3>Inter-application komunikácia:</h3>
<p>Zend_Json, Zend_XmlRpc, Zend_Soap, Zend_Rest</p>
<h3>Web Services:</h3>
<p>Zend_Feed, Zend_Gdata, Zend_Service_Amazon, Zend_Service_Flickr, Zend_Service_Yahoo</p>
<h3>Pokročilé:</h3>
<p>Zend_Cache, Zend_Search, Zend_Pdf, Zend_Mail, Zend_Mime, Zend_Measure</p>
<h2>MCV: Model-Controller-View</h2>
<p>Komponenty tvoriace jadro Zend Frameworku využívajú tzv. MCV (Model-controller-view) systém pre tvorbu aplikácií kde je oddelený vzhľad internetovej stránky od logiky a controllerov. Hlavné časti MCV teda tvoria: Zend_Controller (Controller), Zend_View (View) a Zend_Db (Model)</p>
<p>Toto je priblíženie komponentov Zend Frameworku, postupne prinesiem ďalšie články o práci s týmto Frameworkom.</p>
<h2  class="related_post_title">Podobné články</h2><ul class="related_post"><li>21. Marec 2010 -- <a href="http://www.peteroravec.sk/zend-framework-validator-volnej-domeny" title="Zend Framework: validátor voľnej domény">Zend Framework: validátor voľnej domény</a></li><li>18. Február 2009 -- <a href="http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu" title="Zend Framework po lopate: Použitie View Helperu">Zend Framework po lopate: Použitie View Helperu</a></li><li>23. Január 2009 -- <a href="http://www.peteroravec.sk/ako-vytvorit-vlastny-validator-pre-zend-framework-overenie-hesiel" title="Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel">Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel</a></li><li>25. Január 2012 -- <a href="http://www.peteroravec.sk/vytvarame-facebook-aplikacie-iii-ako-vytvorit-pekny-vaseho-webu" title="Vytvárame Facebook aplikácie III. Ako vytvoriť pekný LIKE z Vašeho webu ">Vytvárame Facebook aplikácie III. Ako vytvoriť pekný LIKE z Vašeho webu </a></li><li>7. August 2008 -- <a href="http://www.peteroravec.sk/ako-presunut-web-na-novu-domenu-a-neprist-o-navstevnost-z-google" title="Ako presunúť web na novú doménu a neprísť o návštevnosť z Google">Ako presunúť web na novú doménu a neprísť o návštevnosť z Google</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.peteroravec.sk/zend-framework-pre-php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ako presunúť web na novú doménu a neprísť o návštevnosť z Google</title>
		<link>http://www.peteroravec.sk/ako-presunut-web-na-novu-domenu-a-neprist-o-navstevnost-z-google</link>
		<comments>http://www.peteroravec.sk/ako-presunut-web-na-novu-domenu-a-neprist-o-navstevnost-z-google#comments</comments>
		<pubDate>Thu, 07 Aug 2008 19:33:20 +0000</pubDate>
		<dc:creator>Peter Oravec</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdizajn a programovanie]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.peteroravec.sk/?p=438</guid>
		<description><![CDATA[Tento problém som riešil práve s týmto blogom. Na mojej pôvodnej doméne fungoval blog na adrese blog.peteroravec.net, ja som ale pre blog zakúpil samostatnú doménu peteroravec.sk kde chcem blog publikovať. Vzhľadom na to, že používam jeden hosting na ktorý mám maskované viaceré domény tak mi stačilo len maskovať doménu na sub-adresár môjho blogu. To ale spôsobí, že aj pôvodná adresa blogu bude funkčná. Keď presuniem web na novú doménu tak...]]></description>
			<content:encoded><![CDATA[<p>Tento problém som riešil práve s týmto blogom. Na mojej pôvodnej doméne fungoval blog na adrese blog.peteroravec.net, ja som ale pre blog zakúpil samostatnú doménu <strong>peteroravec.sk </strong>kde chcem blog publikovať.<span id="more-438"></span></p>
<p>Vzhľadom na to, že používam <strong>jeden hosting na ktorý mám maskované viaceré domény </strong>tak mi stačilo len maskovať doménu na sub-adresár môjho blogu. To ale spôsobí, že aj pôvodná adresa blogu bude funkčná.</p>
<h2>Keď presuniem web na novú doménu tak všetky staré odkazy budú nefunkčné?</h2>
<p><strong>Áno, ak s tým nič nespravíte!</strong> Ak je to dostatočné množstvo odkazov prečo o traffic z nich prísť? Ak máte hosting s <strong>PHP a podporou modRewrite</strong> dá sa to veľmi elegantne vyriešiť. Pomocou <strong>modRewrite </strong>môžete na serveri definovať podmienku ktorá akúkoľvek URL presmeruje na novú doménu a tak nemusíte riešiť to ak nie všetko bude hneď zaindexované a ak niekto bude pristupovať zo starých výsledkov vyhľadávania bude presmerovaný na tú istú URL s novou doménou.<!--more--></p>
<p>Ja som to vyriešil týmto kódom v .htaccess súbore:</p>
<p><pre><code>RewriteCond %{HTTP_HOST}^blog.peteroravec.net
RewriteRule (.*) http://www.peteroravec.sk/$1 [R=301,QSA,L]</code></pre></p>
<p>Tieto dva riadky kódu spôsobia že ak pristúpite napríklad z Googlu na starú doménu tak budete presmerovaný na novú doménu.</p>
<h2>Čo na to povie Google?</h2>
<p>Presmerovanie sa deje pod <strong>hlavičkou 301</strong> takže podľa mňa je to OK. Google postupne staré odkazy odstráni i keď mu to bude trvať možno aj pár mesiacov. Treba si uvedomiť, že presúvanie webu na novú doménu sa nerobieva zrovna každý deň ale toto je riešenie ako sa to dá spraviť bezbolestne s tým, že <strong>neprídete o doterajší traffic.</strong></p>
<h2  class="related_post_title">Podobné články</h2><ul class="related_post"><li>21. Marec 2010 -- <a href="http://www.peteroravec.sk/zend-framework-validator-volnej-domeny" title="Zend Framework: validátor voľnej domény">Zend Framework: validátor voľnej domény</a></li><li>9. Február 2010 -- <a href="http://www.peteroravec.sk/uzivatelska-recenzia-motorola-milestone-droid" title="Užívateľská recenzia Motorola Milestone">Užívateľská recenzia Motorola Milestone</a></li><li>25. November 2009 -- <a href="http://www.peteroravec.sk/mam-10-pozvanok-do-google-wave-chce-niekto" title="Mám 10 pozvánok do Google Wave! Chce niekto?">Mám 10 pozvánok do Google Wave! Chce niekto?</a></li><li>18. Február 2009 -- <a href="http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu" title="Zend Framework po lopate: Použitie View Helperu">Zend Framework po lopate: Použitie View Helperu</a></li><li>17. Február 2009 -- <a href="http://www.peteroravec.sk/google-sync-synchronizujte-kontakty-a-kalendar-s-push-technologiou" title="Google Sync: synchronizujte kontakty a kalendár s Push technológiou">Google Sync: synchronizujte kontakty a kalendár s Push technológiou</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.peteroravec.sk/ako-presunut-web-na-novu-domenu-a-neprist-o-navstevnost-z-google/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP5 a MySQL5 na localhoste? S Wampserverom nič ľahšie&#8230;</title>
		<link>http://www.peteroravec.sk/php5-a-mysql5-na-localhoste-s-wampserverom-nic-lahsie</link>
		<comments>http://www.peteroravec.sk/php5-a-mysql5-na-localhoste-s-wampserverom-nic-lahsie#comments</comments>
		<pubDate>Fri, 14 Mar 2008 19:03:46 +0000</pubDate>
		<dc:creator>Peter Oravec</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Webdizajn a programovanie]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Recenzia]]></category>

		<guid isPermaLink="false">http://www.blog.peteroravec.net/php5-a-mysql5-na-localhoste-s-wampserverom-nic-lahsie</guid>
		<description><![CDATA[Pre neskúseného úžívateľa rozbehať PHP server s MySQL databázou na svojom lokálnom PC môže byť veľmi veľký problém, ten kto vie si stiahne jednotlivé balíky a všetky potrebné úkony a nastavenia si porobí sám, ostatný (medzi nimi som aj ja) radšej hľadajú iné riešenie ako PHP server na localhoste rozbehať. Mojim obľúbeným riešením je Wampserver 2 . Ako sa pracuje s Wampserverom? Práca je úplne jednoduchá... Len nainštalujete a všetko...]]></description>
			<content:encoded><![CDATA[<p>Pre neskúseného úžívateľa rozbehať PHP server s MySQL databázou na svojom lokálnom PC môže byť veľmi veľký problém, ten kto vie si stiahne jednotlivé balíky a všetky potrebné úkony a nastavenia si porobí sám, ostatný (medzi nimi som aj ja) radšej  hľadajú iné riešenie ako PHP server na localhoste rozbehať. Mojim obľúbeným riešením je <strong>Wampserver 2 </strong>.<span id="more-84"></span></p>
<p style="text-align: center"><img src="http://www.blog.peteroravec.net/wp-content/uploads/2008/03/wamp5.JPG" alt="Wampserver" /></p>
<h2>Ako sa  pracuje s Wampserverom?</h2>
<p>Práca je úplne jednoduchá... Len nainštalujete a všetko obsluhujete cez malú ikonku v lište.Táto ikonka (niečo ako otáčkomer) signalizuje či služby bežia prípadne nebežia. Po stlačení pravého tlačidla sa zobrazí celková ponuka cez ktorú môžete server ľahko obsluhovať. Pri Wampserver nieje potreba manuálne hľadat <strong>extensions</strong> a odkomentovávať, tu si jednoducho rozšírenie nájdete a kliknete... Wampserver ešte aj sám server reštartne.</p>
<p style="text-align: center"><img src="http://www.blog.peteroravec.net/wp-content/uploads/2008/03/0_wamp5_servicestatus.gif" alt="Wampserver status" /></p>
<p>Súčasťou Wampservera je aj PHPMyAdmin pre MySQL5 ale aj SQLLite. Práve pre toto je obsluha stránok a rozšírení úplne jednoduchá, <a href="http://www.wampserver.com">Wampserver si môžete stiahnuť tu</a>.</p>
<h2  class="related_post_title">Podobné články</h2><ul class="related_post"><li>16. Júl 2010 -- <a href="http://www.peteroravec.sk/uzivatelska-recenzia-digitalnej-zrkadlovky-nikon-d90" title="Užívateľská recenzia digitálnej zrkadlovky Nikon D90">Užívateľská recenzia digitálnej zrkadlovky Nikon D90</a></li><li>21. Marec 2010 -- <a href="http://www.peteroravec.sk/zend-framework-validator-volnej-domeny" title="Zend Framework: validátor voľnej domény">Zend Framework: validátor voľnej domény</a></li><li>9. Február 2010 -- <a href="http://www.peteroravec.sk/uzivatelska-recenzia-motorola-milestone-droid" title="Užívateľská recenzia Motorola Milestone">Užívateľská recenzia Motorola Milestone</a></li><li>18. Február 2009 -- <a href="http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu" title="Zend Framework po lopate: Použitie View Helperu">Zend Framework po lopate: Použitie View Helperu</a></li><li>23. Január 2009 -- <a href="http://www.peteroravec.sk/ako-vytvorit-vlastny-validator-pre-zend-framework-overenie-hesiel" title="Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel">Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.peteroravec.sk/php5-a-mysql5-na-localhoste-s-wampserverom-nic-lahsie/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Základy SESSION relácií v PHP</title>
		<link>http://www.peteroravec.sk/zaklady-session-relacii-v-php</link>
		<comments>http://www.peteroravec.sk/zaklady-session-relacii-v-php#comments</comments>
		<pubDate>Wed, 14 Feb 2007 20:12:02 +0000</pubDate>
		<dc:creator>Peter Oravec</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdizajn a programovanie]]></category>
		<category><![CDATA[ochrana]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.blog.peteroravec.net/zaklady-session-relacii-v-php</guid>
		<description><![CDATA[Pri bezstavovom protokole HTTP nemá programátor žiadny nástroj s ktorým by mohol zisťovať či požiadavky užívateľa pochádzajú od tej istej osoby. Na riešenie tohoto problému existuje SESSION. Protokol HTTP je bezstavová technológia, tzn. že samotný protokol nemá žiadne prostriedky ktoré by dokázali zachovávať stavy medzi jednotlivými prechodmi medzi stránkami kde by sme vedeli či požiadavka pochádza od toho istého užívateľa. Hlavný rozdiel medzi COOKIEs a SESSION je ten, že COOKIES...]]></description>
			<content:encoded><![CDATA[<p>Pri bezstavovom protokole HTTP nemá programátor žiadny nástroj s ktorým by mohol zisťovať či požiadavky užívateľa pochádzajú od tej istej osoby. Na riešenie tohoto problému existuje SESSION.</p>
<p>Protokol HTTP je bezstavová technológia, tzn. že samotný protokol nemá žiadne prostriedky ktoré by dokázali zachovávať stavy medzi jednotlivými prechodmi medzi stránkami kde by sme vedeli či požiadavka pochádza od toho istého užívateľa.</p>
<p><span id="more-74"></span></p>
<p>Hlavný rozdiel medzi COOKIEs a SESSION je ten, že COOKIES sa ukladajú u klienta a SESSION na webovom serveri. To čo je ukladané u klienta (COOKIEs) je vo svojej podstate potenciálne nebezpečné. U údajov ukladaných u užívateľa platí, že to čo prehliadač prijme môže byť uložené, zmenené a poslané naspať. Tento fakt môže spôsobiť nemalé problémy hlavne tam kde používame COOKIEs namiesto SESSION. Preto si treba uvedomiť kde a kedy použiť SESSION alebo COOKIES.</p>
<h2>Ako funguje SESSION?</h2>
<p>SESSION k svojmu správnemu fungovaniu využíva COOKIEs. Samotná relácia je riadená priradeným popisovačom čo je vlastne PHP ID (zašifrované náhodné číslo ktoré je uložené u klienta ako COOKIEs), to odkazuje na SESSION uložené na serveri.</p>
<p>Prácu s reláciami by sme mohli rozdeliť do týchto fáz:</p>
<ul>
<li><strong>Zahájime reláciu:</strong> Pod týmto pojmom rozumieme to, že musíme dať serveru (na ktorom stránka beží) vedie´t že ideme použiť SESSION. Zahájime ho funkciou <strong>session_start(); na začiatku nášho scriptu.</strong><code>session_start();</code>Môžeme tiež v PHP.INI zapnúť direktívu SESSION.AUTO_START ktorá zabezpečí, že relácia bude automaticky spustená po prístupe na stránku.</li>
<li><strong>Registrácia session:</strong> Nebudeme sa zaoberať zastaralými spôsobmi ako $HTTP_SESSION_VARS či nutnosť session_register() ale použijeme klasický spôsob $_SESSION.Pre vytvorenie jednoduchého SESSION to môžeme urobiť napríklad takto (na začiatku skriptu je session_start())
<p><code>$_SESSION[&#039;premenna&#039;] = 12345;</code>Týmto vytvoríme premennú relácie s hodnotou 12345. Premenná relácie bude platná pokým:</li>
<li>Nevyprší doba platnosti podľa nastavenia servera na ktorom stránka bežíNeukončíme reláciu manuálne keď ju už nebudeme potrebovať (napríklad odhlásenie užívateľa)</li>
<li><strong>Zničenie SESSION:</strong> Doba platnosti SESSION býva často dlhšia ako je na prácu s reláciou nutné a preto si ukážeme ako ju ukončíme manuálne. Keď vieme, že už SESSION nepotrebujeme použijeme na odstránenie premennej funkciu <strong>unset()</strong>, napríklad:<code>unset($_SESSION[&#039;premenna&#039;]);</code>Následne by sme mali použiť funkciu <strong>session_destroy()</strong> ktorá úplne odstráni ID relácie a tým aj celú reláciu zo servera.
<p><code>session_destroy();</code></li>
</ul>
<h2>Testovanie existencie SESSION</h2>
<p>Pri práci so SESSION budete skôr či neskôr potrebovať overiť existenciu relácie (napríklad overenie či užívateľ je prihlásený). Na overenie existencie premennej SESSION môžeme použiť funkcie <strong>isset()</strong> alebo <strong>empty().</strong></p>
<p><pre><code>if(isset($_SESSION[&#039;premenna&#039;]))
echo&#039;existuje session&#039;;
else echo&#039;neexistuje session&#039;;</code></pre></p>
<p><pre><code>if(!empty($_SESSION[&#039;premenna&#039;]))
echo&#039;existuje session&#039;;
else echo&#039;neexistuje session&#039;;
</code></pre></p>
<h2>Konkrétny príklad funkčnosti</h2>
<p>Teraz si ukážeme konkrétny príklad ako pracovať s reláciami. Vytvoríme si tri php súbory na ktorých si demonštrujeme vytvorenie, zobrazenie a odstránenie SESSION.</p>
<p>V súbore stranka1.php vytvoríme reláciu spolu s odkazom na ďalší súbor kde SESSION znova zobrazíme.</p>
<p><pre><code> session_start(); //zahájime session
//vytvoríme session
$_SESSION[&#039;moje_session&#039;] = &#039;Toto je moje SESSION&#039;;</code></pre></p>
<p>//odkaz na ďalší súbor<br />
echo'&lt;a href="stranka2.php"&gt;stranka2.php&lt;/a&gt;';  V tomto súbore zobrazíme už vytvorené SESSION a v súbore stranka3.php ho zobrazíme a zničíme kde uvidíme, že už nebude ďalej existovať.</p>
<p><pre><code> session_start(); //zahájime session
//zobrazíme session
echo&#039;Moje SESSION obsahuje text: &#039;.$_SESSION[&#039;moje_session&#039;];</code></pre></p>
<p>//odkaz na ďalší súbor<br />
echo'&lt;a href="stranka3.php"&gt;stranka3.php&lt;/a&gt;';  V súbore stranka3.php SESSION zobrazíme, zničíme a pokúsime sa ho znova zobraziť aj keď už nebude existovať.</p>
<p><pre><code> session_start(); //zahájime session
//zobrazíme session
echo&#039;Moje SESSION obsahuje text: &#039;.$_SESSION[&#039;moje_session&#039;];</code></pre></p>
<p>//zničíme session<br />
unset($_SESSION['moje_session']);<br />
session_destroy();<br />
/* session už neexistuje a to si môže me ukázať ak ho dáme zobraziť  SESSION TU UŽ NEEXISTUJE! */</p>
<p>echo'Moje SESSION obsahuje text: '.$_SESSION['moje_session'];  V tomto článku sme si ukázali základy práce so SESSION. Treba si ale uvedomiť, že aj keď sú SESSION ukladané na serveri treba dbať na bezpečnosť a preto <strong>NIKDY</strong> nepoužívajte ako identifikátor relácie alebo jeho hodnotu svoj nick či prípadne heslo (pri overovaní totožnosti užívateľa). Ak ho musíte použiť tak určite v zaheshovanej podobe ktorá bz pri nejakom odcudzení do rúk hackera nepodávala žiadnu informáciu ktorú by hacker mohol zneužiť.</p>
<h2  class="related_post_title">Podobné články</h2><ul class="related_post"><li>31. Január 2007 -- <a href="http://www.peteroravec.sk/bezpecnost-udajov-zadanych-uzivatelom-v-php" title="Bezpečnosť údajov zadaných užívateľom v PHP">Bezpečnosť údajov zadaných užívateľom v PHP</a></li><li>21. Marec 2010 -- <a href="http://www.peteroravec.sk/zend-framework-validator-volnej-domeny" title="Zend Framework: validátor voľnej domény">Zend Framework: validátor voľnej domény</a></li><li>18. Február 2009 -- <a href="http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu" title="Zend Framework po lopate: Použitie View Helperu">Zend Framework po lopate: Použitie View Helperu</a></li><li>23. Január 2009 -- <a href="http://www.peteroravec.sk/ako-vytvorit-vlastny-validator-pre-zend-framework-overenie-hesiel" title="Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel">Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel</a></li><li>3. Január 2009 -- <a href="http://www.peteroravec.sk/seagate-freeagent-desk-zalohovanie-a-ochrana-dat-v-pohode" title="Seagate FreeAgent Desk, zálohovanie a ochrana dát v pohode">Seagate FreeAgent Desk, zálohovanie a ochrana dát v pohode</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.peteroravec.sk/zaklady-session-relacii-v-php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bezpečnosť údajov zadaných užívateľom v PHP</title>
		<link>http://www.peteroravec.sk/bezpecnost-udajov-zadanych-uzivatelom-v-php</link>
		<comments>http://www.peteroravec.sk/bezpecnost-udajov-zadanych-uzivatelom-v-php#comments</comments>
		<pubDate>Wed, 31 Jan 2007 11:49:38 +0000</pubDate>
		<dc:creator>Peter Oravec</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdizajn a programovanie]]></category>
		<category><![CDATA[ochrana]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.peteroravec.net/bezpecnost-udajov-zadanych-uzivatelom-v-php</guid>
		<description><![CDATA[Každá internetová stránka sa snaží spĺňať pravidlá bezpečného webu. Najväčším rizikom sú vždy údaje od užívateľov. Nikdy neviete kto a čo plánuje s vašim webom a opatrnosti nieje nikdy dosť.]]></description>
			<content:encoded><![CDATA[<p>Každá internetová stránka sa snaží spĺňať pravidlá bezpečného webu. Najväčším rizikom sú vždy údaje od užívateľov. Nikdy neviete kto a čo plánuje s vašim webom a opatrnosti nieje nikdy dosť.</p>
<p><span id="more-24"></span></p>
<p>Pri prevádzke dynamických internetových stránok existujú rôzne bezpečnostné hrozby od SQL injection, cez XSS... Tento článok by Vám mal pomôcť ako a na čo si dať pozor pri dátach prichádzajúcich od užívateľa.</p>
<ul>
<li>Vždy predtým ako nejaké údaje uložíte do databázy, prežente ich funkciou <strong>addslashes()</strong>. Tá potlačí význam niektorých špeciálnych znakov ktoré by mohli spôsobiť problémy. Pri získavaní údajov z databázy musíte potom použiť funkciu <strong>stripslashes()</strong> ktorá odstráni spätné lomítka a údaje budú v pôvodnom stave.</li>
<li>V súbore PHP.INI existujú direktívy <strong>magic_quotes_gpc</strong> a <strong>magic_quotes_runtime</strong>. Magic_quotes_gpc je funkcia magických úvodzoviek ktorá všetkým údajom prichádzajúcim z GET, POST a COOKIEs automaticky vkladá spätné lomítka. Pri tejto direktíve nieje na škodu vytvoriť si vlastnú funkciu add_slashes() ktorá by nazávisle na tom, či je magic_quotes_gpc zapnuté alebo nie.Môžeme ju urobiť pomocou jednoduchého ternárneho operátora:</li>
</ul>
<p><pre><code>function gpc_addslashes($str)
{
//funkcia zistí, či je magic_quotes_gpc zapnuté alebo nie
//a podľa toho aplikuje na reťazec addsleshes() alebo nie
return (get_magic_quotes_gpc() ? $str : addslashes($str));
} </code></pre><br />
Druhá direktíva magic_quotes_runtime ošetruje dáta idúce z databázy.</p>
<ul>
<li>Niekedy potrebujeme zobrazovať v php aj časti HTML kódu ktorý sa môže vykonať a spôsobiť problémy. Jednoduchým riešením je funkcia <strong>strip_tags()</strong> ktorá umožňuje automatické odstránenie všetkých tagov. Má aj nepovinný parameter v ktorom môžeme zapísať povelené tagy. Týmto zabránime prípadnému útočníkovi zadávať scripty ktoré by sa mohli vykonať a smerovať naspäť do prehliadača.</li>
<li>Ak chceme zobrazovať HTML kód ale nechceme aby sa vykonal môžeme použiť funkciu <strong>htmlspecialchars()</strong> ktorá pretvorí znaky na neškodné HTML entity. Napríklad znak &lt; by premenila na &lt;</li>
<li>Pokiaľ nejaké údaje dávame funkciám <strong>system()</strong> alebo <strong>exec()</strong> mali by sme použiť funkciu <strong>escapeshellcmd()</strong>. Touto funkciou potlačíme význam všetkých metaznakov a tým zabránime spúšťaniu akýchkoľvek príkazov.</li>
<li>Ak pracujete s číselnými hodnotami (napríklad SQL dotaz prijímajúci číselnú hodnotu z URL) mali by sme hodnotu testovať pomocou funkcie <strong>intval()</strong>. Táto funkcia skúša či hodnota sa dá premeniť na číslo, ak to nebude číselná hodnota vráti 0, dobrá funkcia pri ochrane pred SQL injection.</li>
</ul>
<p>Toto boli základné pravidlá bezpečnosti ktorých by ste sa mali držať aby ste riziko minimalizovali a vyhli sa tak najväčším chybám.</p>
<h2  class="related_post_title">Podobné články</h2><ul class="related_post"><li>14. Február 2007 -- <a href="http://www.peteroravec.sk/zaklady-session-relacii-v-php" title="Základy SESSION relácií v PHP">Základy SESSION relácií v PHP</a></li><li>21. Marec 2010 -- <a href="http://www.peteroravec.sk/zend-framework-validator-volnej-domeny" title="Zend Framework: validátor voľnej domény">Zend Framework: validátor voľnej domény</a></li><li>18. Február 2009 -- <a href="http://www.peteroravec.sk/zend-framework-po-lopate-pouzitie-view-helperu" title="Zend Framework po lopate: Použitie View Helperu">Zend Framework po lopate: Použitie View Helperu</a></li><li>23. Január 2009 -- <a href="http://www.peteroravec.sk/ako-vytvorit-vlastny-validator-pre-zend-framework-overenie-hesiel" title="Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel">Ako vytvoriť vlastný validátor pre Zend Framework: overenie hesiel</a></li><li>3. Január 2009 -- <a href="http://www.peteroravec.sk/seagate-freeagent-desk-zalohovanie-a-ochrana-dat-v-pohode" title="Seagate FreeAgent Desk, zálohovanie a ochrana dát v pohode">Seagate FreeAgent Desk, zálohovanie a ochrana dát v pohode</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.peteroravec.sk/bezpecnost-udajov-zadanych-uzivatelom-v-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL injection: úvod do problematiky</title>
		<link>http://www.peteroravec.sk/sql-injection-ochrana-uvod-do-problematiky</link>
		<comments>http://www.peteroravec.sk/sql-injection-ochrana-uvod-do-problematiky#comments</comments>
		<pubDate>Wed, 31 Jan 2007 00:25:36 +0000</pubDate>
		<dc:creator>Peter Oravec</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdizajn a programovanie]]></category>
		<category><![CDATA[databáza]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.peteroravec.net/sql-injection-ochrana-uvod-do-problematiky</guid>
		<description><![CDATA[Niekedy (hlavne kvôli neskúsenosti programátora) sú niektoré databázy ohrozované tým, že môžeme v nej použiť hackerskú metódu SQL injection. Tento článok je úvodom do tejto problematiky.]]></description>
			<content:encoded><![CDATA[<p>Niekedy (hlavne kvôli neskúsenosti programátora) sú niektoré databázy ohrozované tým, že môžeme v nej použiť hackerskú metódu SQL injection. Tento článok je úvodom do tejto problematiky.</p>
<p><span id="more-23"></span></p>
<h2>Čo je to SQL injection?</h2>
<p>SQL injection je hackerská metóda ktorá využíva nedostatky (chyby programátora) v kontrole vstupných dát k tomu aby mohol hacker podstrčiť namiesto očakávaných informácií vlastné a prebrať tak kontrolu nad databázou nad rámec svojich práv. Tým prebraním kontroly je myslená úplná kontrola nad databázou kde hacker môže databázu kopírovať, mazať, pridávaťľubovoľné údaje alebo kradnúť dôležité informácie.</p>
<h2>Kontrola vstupu</h2>
<p>Kontrola vstupu býva často kameňom úrazu mnohých programátorov. Platí pravidlo: "Neverte údajom od užívateľa!". A práve toto je zdrojom najčastejších útokov a problémov. K problémom s SQL injection nastáva vtedy keď sa nestaráme poriadne (alebo vôbec) o informácie ktoré má obdržať náš SQL dotay z adresy URL. Napríklad: Script očakáva číslo ale vy mu pošlete písmeno, v prípade že script nevie na túto situáciu pružne reagovať zobrazí chybovú hlášku ktorá môže byť znakom, že niečo nieje v poriadku.</p>
<h2>Ako na to?</h2>
<p>Pozrite sa na nasledujúcu (vymyslenú) adresu:<br />
<code>http://www.adresa.sk/clanky.php?id=1</code><br />
Na tejto adrese sa nachádza súbor clanky.php ktorý podľa hodnoty (čísla) v premennej ID zobrazuje konkrétne články.</p>
<h2>Ako odtestovať SQL injection?</h2>
<p>V prvom rade skúste manipulovať s hodnotou premennej ID v parametri adresy URL, napríklad:<br />
<code>http://www.adresa.sk/clanky.php?id=2</code><br />
<code>http://www.adresa.sk/clanky.php?id=3</code><br />
<code>http://www.adresa.sk/clanky.php?id=4</code><br />
Ak články s takýmto ID existujú a sú dostupné mali by sa nám zobraziť. To nieje nič zvláštne ale teraz skúsime ako si script poradí keď dostane nečíselné (neočakávané) parametre. Na príkladovaj adrese skúste zadať namiesto čísla nečíselnú hodnotu prípadne ukončiť dotaz úvodzovkou, napríklad:<br />
<code>http://www.adresa.sk/clanky.php?id=xxx</code><br />
<code>http://www.adresa.sk/clanky.php?id=&#039;</code><br />
V prípade, že script nemá ošetrený vstup a chybové hlásenia mala by sa zobraziť varovná správa. Pre hackera to môže byť dobré znamenie že na stránke sa dá prevádzkovať SQL injection (pre dotyčný web je to však zlá správa).</p>
<p>Teraz skúsime konkrétny spôsob ako pomocou SQL injection vypísať všetky dostupné články, zápis a tva adresy by vyzeral nejak takto:<br />
<code>http://www.adresa.sk/clanky.php?id=1 or 1=1</code><br />
V prehliadači sa medzery premenia na %20 a adresa bude vyzerať nejak takto:<br />
<code>http://www.adresa.sk/clanky.php?id=1%20or%201=1</code><br />
Ak SQL injection funguje tak by sa mali vypísať úplne všetky dostupné články. V dotaye sa nasledujúci zápis prejaví napríklad ako:<br />
<code>SELECT * FROM moje_clanky WHERE id_clanku = ID OR 1=1</code><br />
Toto bude mať za následok vypísanie všetkých dostupných článkov pretože nech už bola hodnota ID akákoľvek podmienka 1=1 bola splnená. Zápis OR 1=1 je tzv. večná pravda ktorou si môžete odtestovať SQL injection v praxi. V prípade, že večná pravda funguje tak dotyčná stránka má "dosť veľký problém" a je len otázkou času kedy to objaví niekto kto vie čo s tým. Možnosti SQL injection sa neobmedzujú len na vypisovanie všetkých článkov, vy totiž môžete databázu ľubovoľne upravovať, kopírovať, mazať prípadne kradnúť dôležité informácie.</p>
<p>O ďalších možnostiach SQL injection sa dočítate niekedy v ďalšom pokračovaní článku.</p>
<h2  class="related_post_title">Podobné články</h2><ul class="related_post"><li>14. Marec 2008 -- <a href="http://www.peteroravec.sk/php5-a-mysql5-na-localhoste-s-wampserverom-nic-lahsie" title="PHP5 a MySQL5 na localhoste? S Wampserverom nič ľahšie&#8230;">PHP5 a MySQL5 na localhoste? S Wampserverom nič ľahšie&#8230;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.peteroravec.sk/sql-injection-ochrana-uvod-do-problematiky/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

