<?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>ACCES INTERZIS &#187; programare</title>
	<atom:link href="http://www.accesinterzis.ro/index.php/category/programare/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.accesinterzis.ro</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Tue, 20 Apr 2010 12:08:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Cum implementez plugin-ul jQuery YoxView intr-o pagina web?</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-yoxview-intr-o-pagina-web-2/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-yoxview-intr-o-pagina-web-2/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 14:59:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=397</guid>
		<description><![CDATA[Descarc fisierele plugin-ului. Dezarhivez .zip-ul. Bag folderul yoxview in folderul js din root-ul site-ului. In folderul js se afla, de asemenea, si jquery1.4.2.js, fisierul cu libraria jQuery. Sterg yoxview-nojquery.js, jquery-1.4.2.min.js, jquery.jsonp-1.0.4.min.js, jquery.yoxview-1.1.min.js.
Modific yoxview-init.js in:

var _yoxviewPath = getYoxviewPath();

document.write('&#60;link rel=&#34;Stylesheet&#34; type=&#34;text/css&#34; href=&#34;' + _yoxviewPath + 'yoxview.css&#34; /&#62;');

function LoadScript( url )
{
	document.write( '&#60;scr' + 'ipt type=&#34;text/javascript&#34; src=&#34;' + url [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-lightbox-intr-o-pagina-web-2/' rel='bookmark' title='Permanent Link: Cum implementez plugin-ul jQuery LightBox intr-o pagina web?'>Cum implementez plugin-ul jQuery LightBox intr-o pagina web?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-slider-de-imagini-in-jquery-si-php/' rel='bookmark' title='Permanent Link: Cum fac un slider de imagini in jQuery si PHP?'>Cum fac un slider de imagini in jQuery si PHP?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-extrag-adrese-de-email-de-pe-o-pagina-web/' rel='bookmark' title='Permanent Link: Cum extrag adrese de email de pe o pagina web?'>Cum extrag adrese de email de pe o pagina web?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a title="Cum implementez plugin-ul jQuery YoxView intr-o pagina web?" href="http://yoxigen.com/yoxview/Download.aspx" target="_blank">Descarc</a> fisierele plugin-ului. Dezarhivez .zip-ul. Bag folderul <strong>yoxview</strong> in folderul <strong>js</strong> din root-ul site-ului. In folderul <strong>js</strong> se afla, de asemenea, si <strong>jquery1.4.2.js</strong>, fisierul cu libraria jQuery. Sterg <strong>yoxview-nojquery.js</strong>, <strong>jquery-1.4.2.min.js</strong>, <strong>jquery.jsonp-1.0.4.min.js</strong>, <strong>jquery.yoxview-1.1.min.js</strong>.<br />
Modific <strong>yoxview-init.js</strong> in:</p>
<pre class="brush: jscript;">
var _yoxviewPath = getYoxviewPath();

document.write('&lt;link rel=&quot;Stylesheet&quot; type=&quot;text/css&quot; href=&quot;' + _yoxviewPath + 'yoxview.css&quot; /&gt;');

function LoadScript( url )
{
	document.write( '&lt;scr' + 'ipt type=&quot;text/javascript&quot; src=&quot;' + url + '&quot;&gt;&lt;\/scr' + 'ipt&gt;' ) ;
}
LoadScript(_yoxviewPath + &quot;jquery.timers-1.2.min.js&quot;);
LoadScript(_yoxviewPath + &quot;jquery.yoxview-1.1.js&quot;);

function getYoxviewPath()
{
    var scripts = document.getElementsByTagName(&quot;script&quot;);
    var regex = /(.*\/)yoxview.*/i;
    for(var i=0; i&lt;scripts.length; i++)
    {
        var currentScriptSrc = scripts[i].src;
        if (currentScriptSrc.match(regex))
        return currentScriptSrc.match(regex)[1];
    }

    return null;
}
</pre>
<p>Din folderul <strong>lang</strong> pot sterge toate fisierele in afara de <strong>en.js</strong>.<br />
Dupa toate astea, folderul <strong>yoxview</strong> (care asa cum am zis se afla in folderul <strong>js</strong> din root-ul site-ului) va arata asa:<br />
<img class="alignnone" title="Cum implementez plugin-ul jQuery YoxView intr-o pagina web?" src="http://img407.imageshack.us/img407/8160/cleanedyoxview.gif" alt="Cum implementez plugin-ul jQuery YoxView intr-o pagina web?" width="627" height="197" /><br />
In acest fel ma scap de fisiere inutile. Nu are sens sa ocup spatiu pe server aiurea.<br />
Acum nu imi mai ramane decat sa implementez plugin-ul in <a title="Cum implementez plugin-ul jQuery YoxView intr-o pagina web?" href="http://www.accesinterzis.ro/myfw/sliders/yoxview-1.0.php" target="_blank">pagina mea web</a>.</p>
<p><span id="more-397"></span></p>
<p><strong>index.php</strong></p>
<pre class="brush: xml;">
&lt;?php include('includes/functions.inc.php'); ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;title&gt;Cum implementez YoxView intr-o pagina web?&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;Cum implementez YoxView intr-o pagina web?&quot; /&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;Cum implementez YoxView intr-o pagina web?&quot; /&gt;
&lt;meta name=&quot;abstract&quot; content=&quot;Cum implementez YoxView intr-o pagina web?&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;copyright&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;noindex,nofollow&quot; /&gt;
&lt;meta name=&quot;revisit-after&quot; content=&quot;7 days&quot; /&gt;
&lt;meta http-equiv=&quot;cache-control&quot; content=&quot;no-cache&quot;&gt;

&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery1.4.2.js&quot;&gt;&lt;/script&gt;

&lt;!--**********Begin - jQuery YoxView**********--&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/yoxview/yoxview-init.js&quot;&gt;&lt;/script&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
    $(document).ready(function(){
        $(&quot;#gallery&quot;).yoxview();
	});
&lt;/script&gt;
&lt;!--**********End - jQuery YoxView**********--&gt;

&lt;style type=&quot;text/css&quot;&gt;
* {
	margin:0;
	padding:0;
	outline:none;
}

html {
	color:black;
	background-color:white;
	font: normal normal normal 12px  Verdana;
	/*font-style font-variant font-weight font-size font-family*/
}

img {
	border:none;
}

ul#gallery {
	overflow:hidden;
	list-style-type:none;
	width:1000px;
	margin:10px auto;
}

ul#gallery li {
	float:left;
	margin-right:5px;
}
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;ul id=&quot;gallery&quot;&gt;
	&lt;?php
	$pictures = read_images('images/thumbs', array('.jpg', '.jpeg'), 120, 120, 120, 120, 0, 10000);
	for ($i = 0; $i &lt; 8; $i++) {
		echo '&lt;li&gt;';
		echo '&lt;a href=&quot;images/big-ones/'.$pictures[$i].'&quot;&gt;';
		echo '&lt;img src=&quot;images/thumbs/'.$pictures[$i].'&quot; alt=&quot;&quot; title=&quot;'.$pictures[$i].'&quot; /&gt;';
		echo '&lt;/a&gt;';
		echo '&lt;/li&gt;'.&quot;\r\n&quot;;
	}
	?&gt;
&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Cu ajutorul functiei PHP <a title="Cum citesc dinamic imaginile dintr-un folder?" href="http://www.accesinterzis.ro/index.php/programare/functii-php-utile-in-orice-proiect/" target="_blank">read_images()</a> citesc dinamic thumbnail-urile de pe server.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+implementez+plugin-ul+jQuery+YoxView+intr-o+pagina+web%3F+http://fd6sp.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Cum+implementez+plugin-ul+jQuery+YoxView+intr-o+pagina+web%3F+http://fd6sp.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-lightbox-intr-o-pagina-web-2/' rel='bookmark' title='Permanent Link: Cum implementez plugin-ul jQuery LightBox intr-o pagina web?'>Cum implementez plugin-ul jQuery LightBox intr-o pagina web?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-slider-de-imagini-in-jquery-si-php/' rel='bookmark' title='Permanent Link: Cum fac un slider de imagini in jQuery si PHP?'>Cum fac un slider de imagini in jQuery si PHP?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-extrag-adrese-de-email-de-pe-o-pagina-web/' rel='bookmark' title='Permanent Link: Cum extrag adrese de email de pe o pagina web?'>Cum extrag adrese de email de pe o pagina web?</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-yoxview-intr-o-pagina-web-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cum implementez plugin-ul jQuery LightBox intr-o pagina web?</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-lightbox-intr-o-pagina-web-2/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-lightbox-intr-o-pagina-web-2/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 14:59:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=398</guid>
		<description><![CDATA[Descarc fisierele plugin-ului. Dezarhivez .zip-ul. Iau jquery.lightbox-0.5.js si il bag in folderul js din root-ul site-ului. In folderul js se afla, de asemenea, si fisierul care contine libraria jQuery. jquery.lightbox-0.5.css il bag in folderul css din root-ul site-ului. In folderul images din root-ul site-ului creez un folder lb-btns in care voi baga imaginile cu butoanele [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-yoxview-intr-o-pagina-web-2/' rel='bookmark' title='Permanent Link: Cum implementez plugin-ul jQuery YoxView intr-o pagina web?'>Cum implementez plugin-ul jQuery YoxView intr-o pagina web?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-slider-de-imagini-in-jquery-si-php/' rel='bookmark' title='Permanent Link: Cum fac un slider de imagini in jQuery si PHP?'>Cum fac un slider de imagini in jQuery si PHP?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-extrag-adrese-de-email-de-pe-o-pagina-web/' rel='bookmark' title='Permanent Link: Cum extrag adrese de email de pe o pagina web?'>Cum extrag adrese de email de pe o pagina web?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a title="Cum implementez plugin-ul jQuery LightBox intr-o pagina web?" href="http://leandrovieira.com/projects/jquery/lightbox/" target="_blank">Descarc</a> fisierele plugin-ului. Dezarhivez .zip-ul. Iau <strong>jquery.lightbox-0.5.js</strong> si il bag in folderul <strong>js</strong> din root-ul site-ului. In folderul <strong>js</strong> se afla, de asemenea, si fisierul care contine libraria jQuery. <strong>jquery.lightbox-0.5.css</strong> il bag in folderul <strong>css</strong> din root-ul site-ului. In folderul <strong>images</strong> din root-ul site-ului creez un folder <strong>lb-btns</strong> in care voi baga imaginile cu butoanele LightBox-ului din folderul <strong>images</strong>. Acum am grija sa modific chemarile butoanelor in fisierul <strong>jquery.lightbox-0.5.js</strong> de la linia 30 la 34.</p>
<p>Acum nu imi mai ramane decat sa implementez plugin-ul in <a title="Cum implementez plugin-ul jQuery LightBox intr-o pagina web?" href="http://www.accesinterzis.ro/myfw/sliders/lightbox-1.0.php" target="_blank">pagina mea web</a>.</p>
<p><span id="more-398"></span></p>
<p><strong>index.php</strong></p>
<pre class="brush: xml;">
&lt;?php include('includes/functions.inc.php'); ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;title&gt;Cum implementez plugin-ul jQuery LightBox intr-o pagina web?&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;Cum implementez plugin-ul jQuery LightBox intr-o pagina web?&quot; /&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;Cum implementez plugin-ul jQuery LightBox intr-o pagina web?&quot; /&gt;
&lt;meta name=&quot;abstract&quot; content=&quot;Cum implementez plugin-ul jQuery LightBox intr-o pagina web?&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;copyright&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;noindex,nofollow&quot; /&gt;
&lt;meta name=&quot;revisit-after&quot; content=&quot;7 days&quot; /&gt;
&lt;meta http-equiv=&quot;cache-control&quot; content=&quot;no-cache&quot;&gt;

&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery1.4.2.js&quot;&gt;&lt;/script&gt;

&lt;!--**********Begin - jQuery LightBox**********--&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/jquery.lightbox-0.5.css&quot; media=&quot;screen&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.lightbox-0.5.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(function() {
    $('#gallery a').lightBox();
});
&lt;/script&gt;
&lt;!--**********End - jQuery LightBox**********--&gt;

&lt;style type=&quot;text/css&quot;&gt;
* {
	margin:0;
	padding:0;
	outline:none;
}

html {
	color:black;
	background-color:white;
	font: normal normal normal 12px  Verdana;
	/*font-style font-variant font-weight font-size font-family*/
}

img {
	border:none;
}

ul#gallery {
	overflow:hidden;
	list-style-type:none;
	width:1000px;
	margin:10px auto;
}

ul#gallery li {
	float:left;
	margin-right:5px;
}
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;ul id=&quot;gallery&quot;&gt;
	&lt;?php
	$pictures = read_images('images/thumbs', array('.jpg', '.jpeg'), 120, 120, 120, 120);
	for ($i = 0; $i &lt; 8; $i++) {
		echo '&lt;li&gt;';
		echo '&lt;a href=&quot;images/big-ones/'.$pictures[$i].'&quot;&gt;';
		echo '&lt;img src=&quot;images/thumbs/'.$pictures[$i].'&quot; alt=&quot;&quot; /&gt;';
		echo '&lt;/a&gt;';
		echo '&lt;/li&gt;'.&quot;\r\n&quot;;
	}
	?&gt;
&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Cu ajutorul functiei PHP <a title="Cum citesc dinamic imaginile dintr-un folder?" href="http://www.accesinterzis.ro/index.php/programare/functii-php-utile-in-orice-proiect/" target="_blank">read_images()</a> citesc dinamic thumbnail-urile de pe server.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+implementez+plugin-ul+jQuery+LightBox+intr-o+pagina+web%3F+http://xhke3.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Cum+implementez+plugin-ul+jQuery+LightBox+intr-o+pagina+web%3F+http://xhke3.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-yoxview-intr-o-pagina-web-2/' rel='bookmark' title='Permanent Link: Cum implementez plugin-ul jQuery YoxView intr-o pagina web?'>Cum implementez plugin-ul jQuery YoxView intr-o pagina web?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-slider-de-imagini-in-jquery-si-php/' rel='bookmark' title='Permanent Link: Cum fac un slider de imagini in jQuery si PHP?'>Cum fac un slider de imagini in jQuery si PHP?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-extrag-adrese-de-email-de-pe-o-pagina-web/' rel='bookmark' title='Permanent Link: Cum extrag adrese de email de pe o pagina web?'>Cum extrag adrese de email de pe o pagina web?</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-lightbox-intr-o-pagina-web-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Functii PHP utile in orice proiect</title>
		<link>http://www.accesinterzis.ro/index.php/programare/functii-php-utile-in-orice-proiect/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/functii-php-utile-in-orice-proiect/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 14:53:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=396</guid>
		<description><![CDATA[Ca tot am inceput sa vorbesc despre cod procedural reutilizabil am sa prezint cateva functii PHP foarte utile in orice proiect.
read_images() &#8211; citeste imaginile dintr-un folder de pe server si le incarca intr-un array

function read_images($folder, $allowed_extensions = NULL, $min_width = NULL, $max_width = NULL, $min_height = NULL, $max_height = NULL, $min_size = NULL, $max_size = [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-upload-in-php/' rel='bookmark' title='Permanent Link: Cum fac un formular de upload in PHP?'>Cum fac un formular de upload in PHP?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Ca tot am inceput sa vorbesc despre <strong>cod procedural reutilizabil</strong> am sa prezint cateva functii PHP foarte utile in orice proiect.</p>
<p><strong>read_images()</strong> &#8211; citeste imaginile dintr-un folder de pe server si le incarca intr-un array</p>
<pre class="brush: php;">
function read_images($folder, $allowed_extensions = NULL, $min_width = NULL, $max_width = NULL, $min_height = NULL, $max_height = NULL, $min_size = NULL, $max_size = NULL) {
	//-----specific valorile default
	$allowed_extensions = (isset($allowed_extensions)) ? $allowed_extensions : array('.jpg', '.jpeg', '.gif', '.png');
	$min_width          = (isset($min_width))          ? $min_width          : 1;
	$max_width          = (isset($max_width))          ? $max_width          : 10000;
	$min_height         = (isset($min_height))         ? $min_height         : 1;
	$max_height         = (isset($max_height))         ? $max_height         : 10000;
	$min_size           = (isset($min_size))           ? $min_size           : 1;
	$max_size           = (isset($max_size))           ? $max_size           : 10000;

	//-----initializez array-ul in care voi strange numele imaginilor de pe server
	$images = array();

	if (is_dir($folder)) {
		//-----deschid folderul de imagini pentru a-l citi
		if($handle = opendir ($folder)) {
			//-----citesc folderul
			while ($image_name = readdir($handle)) {
				//-----&quot;.&quot; reprezinta folderul curent iar &quot;..&quot; reprezinta folderul anterior
				if ($image_name != '.' &amp;&amp; $image_name != '..') {
					$image_extension = substr($image_name, strrpos($image_name,'.'),100);
					$image_extension = strtolower($image_extension);

					if (in_array($image_extension,$allowed_extensions)) {
						$properties = @getimagesize($folder.'/'.$image_name);
						$size = round(filesize($folder.'/'.$image_name) / 1024);

						if ($properties[0] &gt;= $min_width  &amp;&amp; $properties[0] &lt;= $max_width &amp;&amp;
							$properties[1] &gt;= $min_height &amp;&amp; $properties[1] &lt;= $max_height &amp;&amp;
							$size          &gt;= $min_size   &amp;&amp; $size          &lt;= $max_size) {

							$images[] = $image_name;
						}
					}
				}
			}

			closedir($handle);
		}
	}

	return ($images);
}
</pre>
<p><span id="more-396"></span><br />
<i>Exemplu</i></p>
<pre class="brush: php;">
&lt;?php $slides = read_images('images/slides', array('.jpg', '.jpeg'), 600, 600, 270, 270); ?&gt;
&lt;pre&gt;&lt;?php print_r($slides); ?&gt;&lt;/pre&gt;
</pre>
<p>In acest exemplu am folosit functia pentru a incarca dinamic imaginile prezentate intr-un slider jQuery. Numai imaginile care au extensia .jpg sau .jpeg si care au EXACT 600px latime si EXACT 270px inaltime vor fi incarcate in sliderul jQuery.</p>
<p>Aceasta functie o mai pot folosi pentru a afla cate imagini se afla intr-un folder.</p>
<pre class="brush: php;">
&lt;?php echo count($slides); ?&gt;
</pre>
<p><strong>read_files()</strong> &#8211; citeste fisierele dintr-un folder de pe server si le incarca intr-un array</p>
<pre class="brush: php;">
function read_files($folder, $allowed_extensions = NULL, $min_size = NULL, $max_size = NULL) {
	//-----specific valorile default
	$allowed_extensions = (isset($allowed_extensions)) ? $allowed_extensions : array('.php', '.css', '.js', '.html', '.htm');
	$min_size           = (isset($min_size))           ? $min_size           : 1;
	$max_size           = (isset($max_size))           ? $max_size           : 10000;

	//-----initializez array-ul in care voi strange numele fisierelor de pe server
	$files = array();

	if (is_dir($folder)) {
		//-----deschid folderul de fisiere pentru a-l citi
		if($handle = opendir ($folder)) {

			//-----citesc folderul
			while ($image_name = readdir($handle)) {
				//-----&quot;.&quot; reprezinta folderul curent iar &quot;..&quot; reprezinta folderul anterior
				if ($image_name != '.' &amp;&amp; $image_name != '..') {
					$image_extension = substr($image_name, strrpos($image_name,'.'),100);
					$image_extension = strtolower($image_extension);

					if (in_array($image_extension, $allowed_extensions)) {
						$size = filesize($folder.'/'.$image_name) / 1024;

						if ($size &gt;= $min_size &amp;&amp; $size &lt;= $max_size) {
							$files[] = $image_name;
						}
					}
				}
			}

			closedir($handle);
		}
	}

	return ($files);
}
</pre>
<p><strong>filter_this()</strong> &#8211; aplica filtre (<strong>trim</strong>, <strong>stripslashes</strong>, <strong>strip_tags</strong>, <strong>htmlentities</strong>, <strong>nl2br</strong>, <strong>mysql_real_escape_string</strong> etc.) pe date (array sau string)</p>
<pre class="brush: php;">
function filter_this($data, $filters = array()) {
	if (is_array($data)) {
		$wrapped_data = array();

		foreach ($data as $k =&gt; $v) {
			foreach ($filters as $filter) {
				switch ($filter) {
					case 'htmlentities':
						$v = htmlentities($v, ENT_QUOTES, 'utf-8');
						break;

					default:
						$v = $filter($v);
				}
			}

			$wrapped_data[$k] = $v;
		}
	} else {
		foreach ($filters as $filter) {
			switch ($filter) {
				case 'htmlentities':
					$data = htmlentities($data, ENT_QUOTES, 'utf-8');
					break;

				default:
					$data = $filter($data);
			}
		}

		$wrapped_data = $data;
	}

	return ($wrapped_data);
}
</pre>
<p><i>Exemplu</i></p>
<pre class="brush: php;">
$cookie = (isset($_COOKIE)) ? filter_this($_COOKIE, array('strip_tags', 'htmlentities')) : NULL;
</pre>
<p>In acest exemplu am aplicat filtrele <strong>strip_tags</strong> si <strong>htmlentities</strong> pe datele stocate in array-ul superglobal $_COOKIE ca sa ma asigur ca nu contin cod malitios. Se stie ca toate datele stocate de cookie-urile create de server pe PC-ul vizitatorilor pot fi manipulate si folosite malitios.</p>
<p><strong>get_random_string()</strong> &#8211; genereaza aleatoriu un sir de caractere. Functia imi permite sa aleg numarul si tipul de caractere.</p>
<pre class="brush: php;">
function get_random_string($length, $chars_type = array()) {
	if (count($chars_type) == 0) {
		$charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890123456789!@#$%^&amp;*()!@#$%^&amp;*()';
	} else {
		$lower_case = (in_array('lower_case', $chars_type)) ? 'abcdefghijklmnopqrstuvwxyz' : NULL;
		$upper_case = (in_array('upper_case', $chars_type)) ? 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' : NULL;
		$digits     = (in_array('digits', $chars_type))     ? '01234567890123456789'       : NULL;
		$symbols    = (in_array('symbols', $chars_type))    ? '!@#$%^&amp;*()!@#$%^&amp;*()'       : NULL;

		$charset = $lower_case.$upper_case.$digits.$symbols;
	}

	$string = '';

	for ($i = 1; $i &lt;= $length; $i++) {
		$string .= substr($charset,rand(0,strlen($charset) - 1),1);
	}

	return ($string);
}
</pre>
<p><i>Exemplu</i></p>
<pre class="brush: php;">
//-----functia va genera un sir de 10 caractere alcatuit din minuscule si majuscule
echo get_random_string(10, array('lower_case', 'upper_case'));
</pre>
<p><strong>create_menu()</strong> &#8211; creeaza un meniu sub forma unei liste neordonate.</p>
<pre class="brush: php;">
function create_menu($menu_id, $menu_btns = array()) {
	$result = '&lt;ul id=&quot;'.$menu_id.'&quot;&gt;'.&quot;\r\n&quot;;

	foreach ($menu_btns as $k =&gt; $v) {
		$result .= '&lt;li id=&quot;'.substr($v, 0, strrpos($v, '.')).'-item&quot;&gt;'.&quot;\r\n&quot;;

		$active_btn = (basename($_SERVER['PHP_SELF']) == $v) ? ' class=&quot;active-btn&quot;' : '';

		$result .= '&lt;a href=&quot;'.$v.'&quot; title=&quot;'.$k.'&quot; id=&quot;'.substr($v, 0, strrpos($v, '.')).'-btn&quot;'.$active_btn.'&gt;';
		$result .= $k;
		$result .= '&lt;/a&gt;'.&quot;\r\n&quot;;
		$result .= '&lt;/li&gt;'.&quot;\r\n\r\n&quot;;
	}

	$result .= '&lt;/ul&gt;';

	return ($result);
}
</pre>
<p><i>Exemplu</i></p>
<pre class="brush: php;">
$my_menu = array('Home'            =&gt; 'index.php',
				 'Who we are?'     =&gt; 'who-we-are.php',
				 'Make a donation' =&gt; 'make-a-donation.php',
				 'Our work'        =&gt; 'our-work.php',
				 'News &amp; press'    =&gt; 'news-and-press.php',
				 'Contact us'      =&gt; 'contact-us.php');

echo create_menu('header-menu', $my_menu);
</pre>
<p>CSS-ul cu care stilizez lista neordonata:</p>
<pre class="brush: css;">
ul#header-menu {
	list-style-type:none;
	position:absolute;
	bottom:10px;
	left:50px;
}

	ul#header-menu li {
		float:left;
		margin-right:35px;
	}

	ul#header-menu li#contact-us-item {
		margin-right:0 !important;
	}

		ul#header-menu li a {
			color:white;
		}

		ul#header-menu li a:hover, ul#header-menu li a.active-btn {
			color:#333;
		}
</pre>
<p><strong>get_filepermis()</strong> &#8211; returneaza permisiile unui fisier</p>
<pre class="brush: php;">
function get_filepermis($file) {
	return substr(decoct(fileperms($file)), 2);
}
</pre>
<p><i>Exemplu</i></p>
<pre class="brush: php;">
echo get_filepermis('mysql_db.class.php');// 0666
</pre>
<p><strong>redirect_to()</strong> &#8211; redirecteaza vizitatorul catre o alta pagina web si intrerupe executarea codului</p>
<pre class="brush: php;">
function redirect_to($location) {
    header(&quot;Location:&quot;.$location);
    exit();
}
</pre>
<p><strong>get_file_extension()</strong> &#8211; returneaza extensia unui fisier</p>
<pre class="brush: php;">
function get_file_extension($filename) {
	if (strrpos($filename, '.')) {
		return substr($filename, strrpos($filename, '.'));
	} else {
		die('&lt;strong&gt;'.$filename.'&lt;/strong&gt; isn\'t a valid file.');
	}
}
</pre>
<p><i>Exemplu</i></p>
<pre class="brush: php;">
echo get_file_extension('mysql_db.class.php');// .php
</pre>
<p><strong>get_filesize()</strong> &#8211; returneaza marimea in kb a unui fisier </p>
<pre class="brush: php;">
function get_filesize($file) {
	return round((filesize($file)/1024));// size in kb
}
</pre>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Functii+PHP+utile+in+orice+proiect+http://co5ik.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Functii+PHP+utile+in+orice+proiect+http://co5ik.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-upload-in-php/' rel='bookmark' title='Permanent Link: Cum fac un formular de upload in PHP?'>Cum fac un formular de upload in PHP?</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/functii-php-utile-in-orice-proiect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cum fac un slider de imagini in jQuery si PHP?</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-slider-de-imagini-in-jquery-si-php/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-slider-de-imagini-in-jquery-si-php/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:08:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=373</guid>
		<description><![CDATA[UPDATED ARTICLE
Probabil toata lumea stie cum se realizeaza in jQuery un slider. E destul de simplu. Incarcam fisierul jQuery in pagina si plugin-ul jQuery pentru realizarea sliderului. Putem prezenta in slider nu numai imagini ci si orice fel de continut de la texte la video.

index.php

&#60;?php include('includes/functions.inc.php'); ?&#62;
&#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&#62;
&#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&#62;
&#60;head&#62;
&#60;title&#62;Cum [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-lightbox-intr-o-pagina-web-2/' rel='bookmark' title='Permanent Link: Cum implementez plugin-ul jQuery LightBox intr-o pagina web?'>Cum implementez plugin-ul jQuery LightBox intr-o pagina web?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-yoxview-intr-o-pagina-web-2/' rel='bookmark' title='Permanent Link: Cum implementez plugin-ul jQuery YoxView intr-o pagina web?'>Cum implementez plugin-ul jQuery YoxView intr-o pagina web?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;"><strong>UPDATED ARTICLE</strong></span></p>
<p>Probabil toata lumea stie cum se realizeaza in jQuery un<a title="Cum fac un slider de imagini in jQuery si PHP?" href="http://www.accesinterzis.ro/myfw/sliders/slider-1.0.php" target="_blank"> slider</a>. E destul de simplu. Incarcam <a title="fisierul jQuery" href="http://www.accesinterzis.ro/myfw/sliders/js/jquery1.4.2.js" target="_blank">fisierul jQuery</a> in pagina si <a title="plugin-ul jQuery pentru realizarea sliderului" href="http://www.accesinterzis.ro/myfw/sliders/js/easy-slider1.5.js" target="_blank">plugin-ul jQuery pentru realizarea sliderului</a>. Putem prezenta in slider nu numai imagini ci si orice fel de continut de la texte la video.<br />
<span id="more-373"></span><br />
<strong>index.php</strong></p>
<pre class="brush: php;">
&lt;?php include('includes/functions.inc.php'); ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;title&gt;Cum fac un slider de imagini in jQuery si PHP?&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;Cum fac un slider de imagini in jQuery si PHP?&quot; /&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;Cum fac un slider de imagini in jQuery si PHP?&quot; /&gt;
&lt;meta name=&quot;abstract&quot; content=&quot;Cum fac un slider de imagini in jQuery si PHP?&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;copyright&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;noindex,nofollow&quot; /&gt;
&lt;meta name=&quot;revisit-after&quot; content=&quot;7 days&quot; /&gt;

&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery1.4.2.js&quot;&gt;&lt;/script&gt;

&lt;!--**********Begin - jQuery slider**********--&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/easy-slider1.5.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
	$(&quot;#slider&quot;).easySlider({
		auto: true,
		continuous: true
	});
});
&lt;/script&gt;
&lt;!--**********End - jQuery slider**********--&gt;

&lt;style type=&quot;text/css&quot;&gt;
* {
	margin:0;
	padding:0;
	outline:none;
}

html {
	color:black;
	background-color:white;
	font: normal normal normal 12px  Verdana;
	/*font-style font-variant font-weight font-size font-family*/
}

/***********Begin - jquery slider***********/

div#container {
	position:relative;
	width:605px;
	margin:0 auto;
}

div#container div#slider ul {
	list-style:none;
}

div#container div#slider li {
	/*
	define width and height of list item (slide)
	entire slider area will adjust according to the parameters provided here
	*/
	width:605px;
	height:270px;
	overflow:hidden;
}

div#container #prevBtn, div#container #nextBtn {
	display:block;
	width:13px;
	height:20px;
	position:absolute;
	top:275px;
}

div#container #prevBtn {
	left:0px;
}

div#container #nextBtn {
	left:587px;
}

div#container #prevBtn a, div#container #nextBtn a {
	display:block;
	width:13px;
	height:20px;
}

div#container #prevBtn a {
	background:url(images/prev-btn.png) no-repeat 0 0;
}

div#container #nextBtn a {
	background:url(images/next-btn.png) no-repeat 0 0;
}

div#container .graphic, div#container #prevBtn, div#container #nextBtn {
    display:block;
    overflow:hidden;
    text-indent:-8000px;
}

/***********End - jquery slider***********/

&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;div id=&quot;container&quot;&gt;
	&lt;div id=&quot;slider&quot;&gt;
		&lt;ul&gt;
			&lt;?php
			$slides = read_images('images/slides', array('.jpg', '.jpeg'), 600, 600, 270, 270);
			foreach ($slides as $slide) {
				echo '&lt;li&gt;';
				echo '&lt;img src=&quot;images/slides/'.$slide.'&quot; alt=&quot;&quot; /&gt;';
				echo '&lt;/li&gt;'.&quot;\r\n&quot;;
			}

			?&gt;
			&lt;li style=&quot;text-align:center; font-size:24px; color:#c00; padding-top:50px;&quot;&gt;In slider putem sa punem orice fel de continut dorim: imagini, text, video. Acest continut poate fi citit dintr-o baza de date.&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Cu ajutorul functiei PHP <a title="Cum citesc dinamic imaginile dintr-un folder?" href="http://www.accesinterzis.ro/index.php/programare/functii-php-utile-in-orice-proiect/" target="_blank">read_images()</a> citesc dinamic thumbnail-urile de pe server.</p>
<p>Sliderul poate fi folosit la fel de bine si ca sectiune de stiri in care se incarca dintr-o baza de date ultimele stiri.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+slider+de+imagini+in+jQuery+si+PHP%3F+http://8ozpc.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+slider+de+imagini+in+jQuery+si+PHP%3F+http://8ozpc.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-lightbox-intr-o-pagina-web-2/' rel='bookmark' title='Permanent Link: Cum implementez plugin-ul jQuery LightBox intr-o pagina web?'>Cum implementez plugin-ul jQuery LightBox intr-o pagina web?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-implementez-plugin-ul-jquery-yoxview-intr-o-pagina-web-2/' rel='bookmark' title='Permanent Link: Cum implementez plugin-ul jQuery YoxView intr-o pagina web?'>Cum implementez plugin-ul jQuery YoxView intr-o pagina web?</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-slider-de-imagini-in-jquery-si-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cum fac un formular de comentarii? (versiunea 2)</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii-versiunea-2/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii-versiunea-2/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 13:37:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=385</guid>
		<description><![CDATA[Scripturile PHP apelate prin functia include() le gasiti in articolul despre versiunea 2 a formularului de contact.
Interogarea SQL care creeaza tabelul in care se vor stoca comentariile o gasiti in articolul despre prima versiune a formularului de comentarii.

commentf.php

&#60;?php
/*
Titlu: Cum fac un formular de comentarii? (versiunea 2)
Autor: Marian Barbu aka AccesInterzis
Website: http://www.accesinterzis.ro
2010 (c) Toate drepturile rezervate
*/

//-----specific [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii/' rel='bookmark' title='Permanent Link: Cum fac un formular de comentarii?'>Cum fac un formular de comentarii?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-contact-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de contact? (versiunea 2)'>Cum fac un formular de contact? (versiunea 2)</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/web/cum-fac-un-formular-de-inregistrare-a-utilizatorilor-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de inregistrare a utilizatorilor? (versiunea 2)'>Cum fac un formular de inregistrare a utilizatorilor? (versiunea 2)</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Scripturile PHP apelate prin functia include() le gasiti in <a title="Cum fac un formular de contact? (versiunea 2)" href="http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-contact-versiunea-2/" target="_blank">articolul despre versiunea 2 a formularului de contact</a>.<br />
Interogarea SQL care creeaza tabelul in care se vor stoca comentariile o gasiti in <a title="Cum fac un formular de comentarii?" href="http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii/" target="_blank">articolul despre prima versiune a formularului de comentarii</a>.</p>
<p><span id="more-385"></span></p>
<p><strong>commentf.php</strong></p>
<pre class="brush: php;">
&lt;?php
/*
Titlu: Cum fac un formular de comentarii? (versiunea 2)
Autor: Marian Barbu aka AccesInterzis
Website: http://www.accesinterzis.ro
2010 (c) Toate drepturile rezervate
*/

//-----specific EXACT cu ce campuri se va lucra
#1
$required_fields = array('name', 'email', 'website', 'comment', 'security_code', 'add');
$sent_fields = array_keys($_POST);

//-----creez o sesiune pe server pentru a salva in ea codul generat aleatoriu de sistemul CAPTCHA
#2
session_start();

//-----ma conectez la baza de date
#3
include('includes/connect_to_db.inc.php');

//-----incarc fisierele include
#3.1
include('includes/validators.inc.php');
include('includes/filter_it.inc.php');
include('includes/validate_form.inc.php');
include('includes/filtered_urls_and_cookies.inc.php');

//------scriptul PHP se executa doar daca cererea a fost facuta de pe aceeasi pagina pe care se afla formularul si doar daca toate campurile formularului au fos trimise
#4
if ($referer == 'http://'.$_SERVER['HTTP_HOST'].$php_self &amp;&amp; $required_fields == $sent_fields) {
	//-----procesez datele din formular; rezultatul va fi o lista de erori, o lista cu datele nevalide, o lista cu datele valide
	#5
	include('includes/process_form.inc.php');

	//-----infasor datele in mysql_real_escape_string() deoarece urmeaza sa le bag in baza de date
	#6
	$processed_form['good_data'] = filter_it($processed_form['good_data'], array('mysql_real_escape_string'));

	//------daca nu exista niciun fel de erori bag datele in baza de date
    #7
	if(count($processed_form['issues']) == 0) {
		#7.1
		$q = &quot;INSERT INTO ai_commentform(`name`, `email`, `website`, `comment`, `date`, `ip`)&quot;
			.&quot;VALUES('&quot;.$processed_form['good_data']['name'].&quot;', '&quot;.$processed_form['good_data']['email'].&quot;', '&quot;.$processed_form['good_data']['website'].&quot;', '&quot;.$processed_form['good_data']['comment'].&quot;', NOW(), '&quot;.$_SERVER['REMOTE_ADDR'].&quot;')&quot;;

		#7.2
		if (mysql_query($q) == false) {
			$error_message = 'Something is wrong with the server. Your comment wasn\'t added.';
		}
	}

	//-----infasor datele in htmlentities() deoarece urmeaza sa le afisez in formular
	#8
	$get_my_fields = filter_it($get_my_fields, array('htmlentities'));
}
?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;How do I make a comment form?&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;How do I make a comment form?&quot; /&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;comment,form,php,script,add,email&quot; /&gt;
&lt;meta name=&quot;abstract&quot; content=&quot;How do I make a comment form?&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;copyright&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;index,follow&quot; /&gt;
&lt;meta name=&quot;revisit-after&quot; content=&quot;7 days&quot; /&gt;

&lt;style type=&quot;text/css&quot;&gt;
* {
	margin:0;
	padding:0;
	outline:none;
}

html {
	color:black;
	background-color:white;
	font: normal normal normal 12px  Verdana;
	/*font-style font-variant font-weight font-size font-family*/
}

/*INCEPUT - LINIILE CSS CARE CREEAZA SKINUL FORMULARULUI DE CONTACT*/

div#commentf {
	width:530px;
	margin:0px auto;
}

div#commentf h1 {
	color:black;
	font: normal normal normal 24px  Verdana;
	/*font-style font-variant font-weight font-size font-family*/
	padding-bottom:5px;
}

div#commentf div {
	margin:0 0 5px 0;
}

div#commentf label {
	width:115px;
	float:left;
}

div#commentf label span {
	color:#c00;
}

div#commentf input {
	width:200px;
}

div#commentf textarea {
	width:400px;
	height:150px;
}

div#commentf input, div#commentf textarea {
	border:1px #ccc solid;
}

div#commentf input:hover, div#commentf textarea:hover {
	border:1px #666 solid;
}

div#commentf input#add {
	width:auto;
	color:#FFF;
	background-color:#333;
	border:1px #000 solid !important;
	cursor:pointer;
}

div#commentf input#add:hover {
	color:#333;
	background-color:#fff;
	border:1px #333 solid;
}

/*Inceput - stilurile erorilor*/
div#commentf form#form-itself p {
	color:#c00;
	font-size:10px;
	padding:0 0 0 115px;
	text-align:left;
}

div#commentf div#name_field label,
div#commentf div#email_field label,
div#commentf div#website_field label,
div#commentf div#comment_field label,
div#commentf div#security_code_field label {
	color:#c00;
}

div#commentf div#name_field input,
div#commentf div#email_field input,
div#commentf div#website_field input,
div#commentf div#comment_field textarea,
div#commentf div#security_code_field input {
	border:1px #c00 solid;
	color:#c00;
}

div#commentf div#name_field input:hover,
div#commentf div#email_field input:hover,
div#commentf div#website_field input:hover,
div#commentf div#comment_field textarea:hover,
div#commentf div#security_code_field input:hover {
	border:1px #c00 solid;
}
/*Sfarsit - stilurile erorilor*/

div#comments h1 {
	color:#c00;
	font: normal normal normal 24px  Verdana;
	/*font-style font-variant font-weight font-size font-family*/
	padding-bottom:5px;
}

/*SFARSIT - LINIILE CSS CARE CREEAZA SKINUL FORMULARULUI DE CONTACT*/
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;?php
$q = &quot;SELECT name, website, date, comment FROM ai_commentform ORDER BY comment_id DESC&quot;;
$result = mysql_query($q) or die(mysql_error());

//-----cand citesc datele din baza de date le infasor in stripslashes(), htmlentities() si nl2br()
if (mysql_num_rows($result) != 0) {
	echo '&lt;div id=&quot;comments&quot;&gt;';
	echo '&lt;h1&gt;'.mysql_num_rows($result).' comment(s) so far&lt;/h1&gt;';

	$i = 0;
	while ($row = mysql_fetch_array($result)) {
		echo '&lt;p&gt;';
		echo ($row['website'] == '') ? '&lt;strong&gt;'.$row['name'].'&lt;/strong&gt;' : '&lt;a href=&quot;'.$row['website'].'&quot; title=&quot;'.$row['website'].'&quot; target=&quot;_blank&quot;&gt;'.$row['name'].'&lt;/a&gt;';
		echo ' - '.$row['date'];
		echo '&lt;/p&gt;';

		echo (is_int($i/2)) ? '&lt;p style=&quot;margin-bottom:15px;&quot;&gt;' : '&lt;p style=&quot;margin-bottom:15px; background:#ccc;&quot;&gt;';
		echo nl2br(htmlentities(stripslashes($row['comment']), ENT_QUOTES, 'utf-8'));
		echo '&lt;/p&gt;';

		$i++;
	}
	echo '&lt;/div&gt;';
}
?&gt;
&lt;div id=&quot;commentf&quot;&gt;
	&lt;h1&gt;
		&lt;label&gt;&amp;nbsp;&lt;/label&gt;
		Leave a comment
	&lt;/h1&gt;

	&lt;form action=&quot;&lt;?php echo 'http://'.$_SERVER['HTTP_HOST'].$php_self; ?&gt;&quot; method=&quot;post&quot; id=&quot;form-itself&quot;&gt;
		&lt;?php echo (isset($processed_form['issues']['name'])) ? '&lt;p&gt;'.$processed_form['issues']['name'].'&lt;/p&gt;&lt;div id=&quot;name_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;name&quot;&gt;Name&lt;span&gt;*&lt;/span&gt;:&lt;/label&gt;
			&lt;input name=&quot;name&quot; type=&quot;text&quot; id=&quot;name&quot; value=&quot;&lt;?php if (isset($get_my_fields['name'])) echo $get_my_fields['name']; ?&gt;&quot; /&gt;
		&lt;/div&gt;

		&lt;?php echo (isset($processed_form['issues']['email'])) ? '&lt;p&gt;'.$processed_form['issues']['email'].'&lt;/p&gt;&lt;div id=&quot;email_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;email&quot;&gt;Email&lt;span&gt;*&lt;/span&gt;:&lt;/label&gt;
			&lt;input name=&quot;email&quot; type=&quot;text&quot; id=&quot;email&quot; value=&quot;&lt;?php if (isset($get_my_fields['email'])) echo $get_my_fields['email']; ?&gt;&quot; /&gt;
		&lt;/div&gt;

		&lt;?php echo (isset($processed_form['issues']['website'])) ? '&lt;p&gt;'.$processed_form['issues']['website'].'&lt;/p&gt;&lt;div id=&quot;website_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;website&quot;&gt;Website:&lt;/label&gt;
			&lt;input name=&quot;website&quot; type=&quot;text&quot; id=&quot;website&quot; value=&quot;&lt;?php if (isset($get_my_fields['website'])) echo $get_my_fields['website']; ?&gt;&quot; /&gt;
		&lt;/div&gt;

		&lt;?php echo (isset($processed_form['issues']['comment'])) ? '&lt;p&gt;'.$processed_form['issues']['comment'].'&lt;/p&gt;&lt;div id=&quot;comment_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;comment&quot;&gt;Your comment&lt;span&gt;*&lt;/span&gt;:&lt;/label&gt;
			&lt;textarea name=&quot;comment&quot; rows=&quot;1&quot; cols=&quot;1&quot; id=&quot;comment&quot;&gt;&lt;?php if (isset($get_my_fields['comment'])) echo $get_my_fields['comment']; ?&gt;&lt;/textarea&gt;
		&lt;/div&gt;

		&lt;p&gt;
			&lt;img src=&quot;includes/captchaimage.inc.php?width=120&amp;height=40&amp;characters=5&quot; /&gt;
		&lt;p&gt;

		&lt;?php echo (isset($processed_form['issues']['security_code'])) ? '&lt;p&gt;'.$processed_form['issues']['security_code'].'&lt;/p&gt;&lt;div id=&quot;security_code_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;security_code&quot;&gt;Are you human?&lt;span&gt;*&lt;/span&gt;&lt;/label&gt;
			&lt;input id=&quot;security_code&quot; name=&quot;security_code&quot; type=&quot;text&quot; /&gt;
		&lt;/div&gt;

		&lt;div&gt;
			&lt;label&gt; &amp;nbsp; &lt;/label&gt;
			&lt;input name=&quot;add&quot; type=&quot;submit&quot; id=&quot;add&quot; value=&quot;add&quot; /&gt;
		&lt;/div&gt;
	&lt;/form&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+formular+de+comentarii%3F+%28versiunea+2%29+http://5ot2h.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+formular+de+comentarii%3F+%28versiunea+2%29+http://5ot2h.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii/' rel='bookmark' title='Permanent Link: Cum fac un formular de comentarii?'>Cum fac un formular de comentarii?</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-contact-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de contact? (versiunea 2)'>Cum fac un formular de contact? (versiunea 2)</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/web/cum-fac-un-formular-de-inregistrare-a-utilizatorilor-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de inregistrare a utilizatorilor? (versiunea 2)'>Cum fac un formular de inregistrare a utilizatorilor? (versiunea 2)</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii-versiunea-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cum fac un formular de contact? (versiunea 2)</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-contact-versiunea-2/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-contact-versiunea-2/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 13:15:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=380</guid>
		<description><![CDATA[Ce am facut nou rescriind acest formular de contact? Pai&#8230;am reusit sa scriem cod procedural reutilizabil. Daca dorim sa devenim programatori PHP trebuie sa ne axam foarte, foarte, foarte mult (am omis cumva sa zic &#8220;foarte mult&#8221;?) pe acest concept de cod procedural reutilizabil. N-ar strica daca ar deveni un reflex in gandirea noastra atunci [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de comentarii? (versiunea 2)'>Cum fac un formular de comentarii? (versiunea 2)</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/web/cum-fac-un-formular-de-inregistrare-a-utilizatorilor-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de inregistrare a utilizatorilor? (versiunea 2)'>Cum fac un formular de inregistrare a utilizatorilor? (versiunea 2)</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-contact/' rel='bookmark' title='Permanent Link: Cum fac un formular de contact?'>Cum fac un formular de contact?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Ce am facut nou rescriind <a title="Cum fac un formular de contact?" href="http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-contact/" target="_blank">acest formular de contact</a>? Pai&#8230;am reusit sa scriem <strong>cod procedural reutilizabil</strong>. Daca dorim sa devenim programatori PHP trebuie sa ne axam foarte, foarte, foarte mult (am omis cumva sa zic &#8220;foarte mult&#8221;?) pe acest concept de <strong>cod procedural reutilizabil</strong>. N-ar strica daca ar deveni un reflex in gandirea noastra atunci cand concepem un cod.</p>
<p><span id="more-380"></span></p>
<p><strong>contactf.php</strong></p>
<pre class="brush: php;">
&lt;?php
/*
Titlu: Cum fac un formular de contact? (versiunea 2)
Autor: Marian Barbu aka AccesInterzis
Website: http://www.accesinterzis.ro
2010 (c) Toate drepturile rezervate
*/

//-----specific EXACT cu ce campuri se va lucra
#1
$required_fields = array('name', 'phone_number', 'email', 'message', 'security_code', 'send');
$sent_fields = array_keys($_POST);

//-----creez o sesiune pe server pentru a salva in ea codul generat aleatoriu de sistemul CAPTCHA
#2
session_start();

//-----incarc fisierele include
#3
include('includes/validators.inc.php');
include('includes/filter_it.inc.php');
include('includes/validate_form.inc.php');
include('includes/filtered_urls_and_cookies.inc.php');

//------scriptul PHP se executa doar daca cererea a fost facuta de pe aceeasi pagina pe care se afla formularul si doar daca toate campurile formularului au fos trimise
#4
if ($referer == 'http://'.$_SERVER['HTTP_HOST'].$php_self &amp;&amp; $required_fields == $sent_fields) {
	//-----procesez datele din formular; rezultatul va fi o lista de erori, o lista cu datele nevalide, o lista cu datele valide
	#5
	include('includes/process_form.inc.php');

    //------daca nu exista niciun fel de erori trimit emailul
    #6
	if(count($processed_form['issues']) == 0) {
		//-----infasor datele in htmlentities() si nl2br() deoarece urmeaza sa le trimit
		#6.1
		$processed_form['good_data'] = filter_it($processed_form['good_data'], array('htmlentities','nl2br'));

        #6.2
        $to      = 'whovisitedme@gmail.com';
        $subject = substr($processed_form['good_data']['message'], 0, 20).'...';
        $body    = 'This message is received from http://'.$_SERVER['HTTP_HOST'].$php_self.'&lt;br /&gt;&lt;br /&gt;
                    &lt;strong&gt;Name&lt;/strong&gt;: '.$processed_form['good_data']['name'].'&lt;br /&gt;
                    &lt;strong&gt;Phone number&lt;/strong&gt;: '.$processed_form['good_data']['phone_number'].'&lt;br /&gt;
                    &lt;strong&gt;Email address&lt;/strong&gt;: '.$processed_form['good_data']['email'].'&lt;br /&gt;
                    &lt;strong&gt;Mesagge&lt;/strong&gt;: '.$processed_form['good_data']['message'].'&lt;br /&gt;&lt;br /&gt;
                    &lt;strong style=&quot;color:#c00;&quot;&gt;Infos about sender:&lt;/strong&gt;&lt;br /&gt;
                    &lt;strong&gt;IP address&lt;/strong&gt;: '.$_SERVER['REMOTE_ADDR'].'&lt;br /&gt;
                    &lt;strong&gt;browser and operating system&lt;/strong&gt;: '.$browser_os.'&lt;br /&gt;
                    &lt;strong&gt;dispatch hour&lt;/strong&gt;: '.date(&quot;l, F j, Y, H:i:s&quot;);
        $headers  = &quot;From: &quot;.$processed_form['good_data']['email'].&quot;\r\n&quot;;

        //-----ma asigur ca pot formata emailul cu taguri HTML si reguli CSS aplicate inline
		#6.3
        $headers .= 'MIME-Version: 1.0'.&quot;\r\n&quot;;
        $headers .= 'Content-type: text/html; charset=utf-8' . &quot;\r\n&quot;;

		//------daca emailul a fost intr-adevar trimis se va afisa pe monitor un mesaj de confirmare
        #6.4
        if (mail($to, $subject, $body, $headers)) {
			$confirmation = 'Your message was succesfully sent. We will get in touch with you as soon as possible.';
        } else {
			$confirmation = 'Something is wrong with the server. Your message wasn\'t sent.';
        }

		$confirmation .= ' &lt;a href=&quot;http://'.$_SERVER['HTTP_HOST'].$php_self.'&quot; title=&quot;Back&quot; id=&quot;back&quot;&gt;Back to contact form&lt;/a&gt;';

		#6.5
		$display = 'style=&quot;display:none;&quot;';
    }

	//-----infasor datele in htmlentities() deoarece urmeaza sa le afisez in formular
	#7
	$get_my_fields = filter_it($get_my_fields, array('htmlentities'));
}
?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;How do I make a contact form?&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;How do I make a contact form?&quot; /&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;contact,form,php,script,send,email&quot; /&gt;
&lt;meta name=&quot;abstract&quot; content=&quot;How do I make a contact form?&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;copyright&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;index,follow&quot; /&gt;
&lt;meta name=&quot;revisit-after&quot; content=&quot;7 days&quot; /&gt;

&lt;style type=&quot;text/css&quot;&gt;
* {
	margin:0;
	padding:0;
	outline:none;
}

html {
	color:black;
	background-color:white;
	font: normal normal normal 12px  Verdana;
	/*font-style font-variant font-weight font-size font-family*/
}

/*INCEPUT - LINIILE CSS CARE CREEAZA SKINUL FORMULARULUI DE CONTACT*/

div#contactf {
	width:530px;
	margin:0px auto;
}

div#contactf h1 {
	color:black;
	font: normal normal normal 24px  Verdana;
	/*font-style font-variant font-weight font-size font-family*/
	padding-bottom:5px;
}

div#contactf div {
	margin:0 0 5px 0;
}

div#contactf label {
	width:115px;
	float:left;
}

div#contactf label span {
	color:#c00;
}

div#contactf input {
	width:200px;
}

div#contactf textarea {
	width:400px;
	height:150px;
}

div#contactf input, div#contactf textarea {
	border:1px #ccc solid;
}

div#contactf input:hover, div#contactf textarea:hover {
	border:1px #666 solid;
}

div#contactf input#send {
	width:auto;
	color:#FFF;
	background-color:#333;
	border:1px #000 solid !important;
	cursor:pointer;
}

div#contactf input#send:hover {
	color:#333;
	background-color:#fff;
	border:1px #333 solid;
}

/*Inceput - stilurile erorilor*/
div#contactf p {
	color:#c00;
	font-size:10px;
	padding:0 0 0 115px;
	text-align:left;
}

div#contactf div#name_field label,
div#contactf div#email_field label,
div#contactf div#phone_number_field label,
div#contactf div#message_field label,
div#contactf div#security_code_field label {
	color:#c00;
}

div#contactf div#name_field input,
div#contactf div#email_field input,
div#contactf div#phone_number_field input,
div#contactf div#message_field textarea,
div#contactf div#security_code_field input {
	border:1px #c00 solid;
	color:#c00;
}

div#contactf div#name_field input:hover,
div#contactf div#email_field input:hover,
div#contactf div#phone_number_field input:hover,
div#contactf div#message_field textarea:hover,
div#contactf div#security_code_field input:hover {
	border:1px #c00 solid;
}

div#contactf a#back {
	color:#900;
	font-weight:bold;
	text-decoration:underline;
}
/*Sfarsit - stilurile erorilor*/

/*SFARSIT - LINIILE CSS CARE CREEAZA SKINUL FORMULARULUI DE CONTACT*/
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;div id=&quot;contactf&quot;&gt;
	&lt;h1&gt;
        &lt;label&gt;&amp;nbsp;&lt;/label&gt;
        Contact us
    &lt;/h1&gt;

    &lt;?php if (isset($confirmation)) echo '&lt;p&gt;'.$confirmation.'&lt;/p&gt;'; ?&gt;

	&lt;form action=&quot;&lt;?php echo 'http://'.$_SERVER['HTTP_HOST'].$php_self; ?&gt;&quot; method=&quot;post&quot; &lt;?php if (isset($display)) echo $display; ?&gt;&gt;
		&lt;?php echo (isset($processed_form['issues']['name'])) ? '&lt;p&gt;'.$processed_form['issues']['name'].'&lt;/p&gt;&lt;div id=&quot;name_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;name&quot;&gt;Name&lt;span&gt;*&lt;/span&gt;:&lt;/label&gt;
			&lt;input name=&quot;name&quot; type=&quot;text&quot; id=&quot;name&quot; value=&quot;&lt;?php if (isset($get_my_fields['name'])) echo $get_my_fields['name']; ?&gt;&quot; /&gt;
		&lt;/div&gt;

		&lt;?php echo (isset($processed_form['issues']['phone_number'])) ? '&lt;p&gt;'.$processed_form['issues']['phone_number'].'&lt;/p&gt;&lt;div id=&quot;phone_number_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;phone_number&quot;&gt;Phone number&lt;span&gt;*&lt;/span&gt;:&lt;/label&gt;
			&lt;input name=&quot;phone_number&quot; type=&quot;text&quot; id=&quot;phone_number&quot; value=&quot;&lt;?php if (isset($get_my_fields['phone_number'])) echo $get_my_fields['phone_number']; ?&gt;&quot; /&gt;
		&lt;/div&gt;

		&lt;?php echo (isset($processed_form['issues']['email'])) ? '&lt;p&gt;'.$processed_form['issues']['email'].'&lt;/p&gt;&lt;div id=&quot;email_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;email&quot;&gt;Email&lt;span&gt;*&lt;/span&gt;:&lt;/label&gt;
			&lt;input name=&quot;email&quot; type=&quot;text&quot; id=&quot;email&quot; value=&quot;&lt;?php if (isset($get_my_fields['email'])) echo $get_my_fields['email']; ?&gt;&quot; /&gt;
		&lt;/div&gt;

		&lt;?php echo (isset($processed_form['issues']['message'])) ? '&lt;p&gt;'.$processed_form['issues']['message'].'&lt;/p&gt;&lt;div id=&quot;message_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;message&quot;&gt;Your message&lt;span&gt;*&lt;/span&gt;:&lt;/label&gt;
			&lt;textarea name=&quot;message&quot; rows=&quot;1&quot; cols=&quot;1&quot; id=&quot;message&quot;&gt;&lt;?php if (isset($get_my_fields['message'])) echo $get_my_fields['message']; ?&gt;&lt;/textarea&gt;
		&lt;/div&gt;

		&lt;p&gt;
			&lt;img src=&quot;includes/captchaimage.inc.php?width=120&amp;height=40&amp;characters=5&quot; /&gt;
		&lt;/p&gt;

		&lt;?php echo (isset($processed_form['issues']['security_code'])) ? '&lt;p&gt;'.$processed_form['issues']['security_code'].'&lt;/p&gt;&lt;div id=&quot;security_code_field&quot;&gt;' : '&lt;div&gt;' ; ?&gt;
			&lt;label for=&quot;security_code&quot;&gt;Are you human?&lt;span&gt;*&lt;/span&gt;&lt;/label&gt;
			&lt;input id=&quot;security_code&quot; name=&quot;security_code&quot; type=&quot;text&quot; /&gt;
		&lt;/div&gt;

		&lt;div&gt;
			&lt;label&gt; &amp;nbsp; &lt;/label&gt;
			&lt;input name=&quot;send&quot; type=&quot;submit&quot; id=&quot;send&quot; value=&quot;send&quot; /&gt;
		&lt;/div&gt;
	&lt;/form&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><strong>validators.inc.php</strong></p>
<pre class="brush: php;">
&lt;?php
//----------lista de validatori pentru campurile tuturor formularelor
$validators = array('name'          =&gt; array('required'  =&gt; true,
											 'min_chars' =&gt; 3,
											 'max_chars' =&gt; 30,
											 'regex'     =&gt; '/^[a-z0-9][a-z0-9_ ]*[a-z0-9]$/i'),

					'phone_number'  =&gt; array('required'  =&gt; true,
											 'min_chars' =&gt; 3,
											 'max_chars' =&gt; 30,
											 'regex'     =&gt; '/^[0-9+][0-9. ]*[0-9]$/'),

					'email'         =&gt; array('required'  =&gt; true,
											 'min_chars' =&gt; 3,
											 'max_chars' =&gt; 30,
											 'regex'     =&gt; '/^[a-z0-9][a-z0-9_.]+@[a-z0-9-.]+\.[a-z]{2,4}$/i'),

					'website'       =&gt; array('required'  =&gt; false,
											 'min_chars' =&gt; 3,
											 'max_chars' =&gt; 30,
											 'regex'     =&gt; '/^http:\/\/[a-z0-9.-]+\.[a-z]{2,4}$/i'),

					'comment'       =&gt; array('required'  =&gt; true,
											 'min_chars' =&gt; 3,
											 'max_chars' =&gt; 20000,
											 'regex'     =&gt; '/.*/i'),

					'message'       =&gt; array('required'  =&gt; true,
											 'min_chars' =&gt; 3,
											 'max_chars' =&gt; 20000,
											 'regex'     =&gt; '/.*/i'),

					'username'      =&gt; array('required'  =&gt; true,
											 'min_chars' =&gt; 3,
											 'max_chars' =&gt; 30,
											 'regex'     =&gt; '/^[a-z0-9][a-z0-9_ ]*[a-z0-9]$/i'),

					'password'      =&gt; array('required'  =&gt; true,
											 'min_chars' =&gt; 5,
											 'max_chars' =&gt; 30,
											 'regex'     =&gt; '/^[a-z0-9]*$/i'),

					'security_code' =&gt; array('required'  =&gt; true,
											 'min_chars' =&gt; 3,
											 'max_chars' =&gt; 10,
											 'regex'     =&gt; '/^[a-z0-9]*$/i'));

?&gt;
</pre>
<p><strong>filter_it.inc.php</strong></p>
<pre class="brush: php;">
&lt;?php
function filter_it($unfiltered_data, $filters) {
	$wrapped_data = array();

	foreach ($unfiltered_data as $k =&gt; $v) {
		foreach ($filters as $filter) {
			switch ($filter) {
				case 'htmlentities':
					$v = htmlentities($v, ENT_QUOTES, 'utf-8');
					break;

				default:
					$v = $filter($v);
			}
		}

		$wrapped_data[$k] = $v;
	}

	return ($wrapped_data);
}
?&gt;
</pre>
<p><strong>validate_form.inc.php</strong></p>
<pre class="brush: php;">
&lt;?php
//----------functia care valideaza datele introduse de utilizator
function validate_form ($unverified_form, $validators) {
	include('includes/replacers.inc.php');
	$issues = array();
	$bad_data = array();

	foreach ($unverified_form as $k =&gt; $v) {
		if (empty($unverified_form[$k])) {
			if ($validators[$k]['required'] == true) {
				$issues[$k] = 'You forgot to enter the &lt;strong&gt;'.$replacers[$k].'&lt;/strong&gt;.';
				$bad_data[$k] = $unverified_form[$k];
			}
		} else {
			if (strlen($unverified_form[$k]) &lt; $validators[$k]['min_chars']) {
				$issues[$k] = 'The &lt;strong&gt;'.$replacers[$k].'&lt;/strong&gt; is too short.';
				$bad_data[$k] = $unverified_form[$k];
			} else {
				if (strlen($unverified_form[$k]) &gt; $validators[$k]['max_chars']) {
					$issues[$k] = 'The &lt;strong&gt;'.$replacers[$k].'&lt;/strong&gt; is too long.';
					$bad_data[$k] = $unverified_form[$k];
				} else {
					if (!preg_match($validators[$k]['regex'], $unverified_form[$k])) {
						$issues[$k] = 'The &lt;strong&gt;'.$replacers[$k].'&lt;/strong&gt; isn\'t valid.';
						$bad_data[$k] = $unverified_form[$k];
					}
				}
			}
		}
	}

	$good_data = array_diff_key($unverified_form, $bad_data);

	$result = array('issues' =&gt; $issues, 'bad_data' =&gt; $bad_data, 'good_data' =&gt; $good_data);

	return ($result);
}
?&gt;
</pre>
<p><strong>replacers.inc.php</strong></p>
<pre class="brush: php;">
&lt;?php
//----------lista cuvintelor care inlocuiesc cheile array-ul in mesajele de eroare
$replacers = array('name'          =&gt; 'name',
				   'phone_number'  =&gt; 'phone number',
				   'email'         =&gt; 'email address',
				   'website'       =&gt; 'website URL',
				   'comment'       =&gt; 'comment',
				   'message'       =&gt; 'message',
				   'username'      =&gt; 'username',
				   'password'      =&gt; 'password',
				   'security_code' =&gt; 'security code');
?&gt;
</pre>
<p><strong>filtered_urls_and_cookies.inc.php</strong></p>
<pre class="brush: php;">
&lt;?php
//-----infasor in strip_tags() si htmlentities() URL-urile obtinute dinamic, http_user_agent-ul si cookie-urile ca sa ma asigur ca nu contin cod malitios
$php_self = htmlentities(strip_tags($_SERVER['PHP_SELF']), ENT_QUOTES, 'utf-8');
$referer = (isset($_SERVER['HTTP_REFERER'])) ? htmlentities(strip_tags($_SERVER['HTTP_REFERER']), ENT_QUOTES, 'utf-8') : NULL;
$browser_os = htmlentities(strip_tags($_SERVER['HTTP_USER_AGENT']), ENT_QUOTES, 'utf-8');
$cookie = (isset($_COOKIE)) ? filter_it($_COOKIE, array('strip_tags', 'htmlentities')) : NULL;
?&gt;
</pre>
<p><strong>process_form.inc.php</strong></p>
<pre class="brush: php;">
&lt;?php
//-----incarc din lista generala de validatori validatorii pentru campurile formularului meu
$get_my_fields = array_intersect_key($_POST, $validators);
//-----infasor datele in trim() si stripslashes() deoarece urmeaza sa incep procesul de validare
$get_my_fields = filter_it($get_my_fields, array('trim', 'stripslashes'));
//-----rezultatul procesului de validare va fi o lista de erori, o lista cu datele nevalide, o lista cu datele valide
$processed_form = validate_form($get_my_fields, $validators);
?&gt;
</pre>
<p>Am reusit sa aduc codul la acest nivel datorita lui <a title="OriginalCopy" href="http://originalcopy-on.blogspot.com/" target="_blank">OriginalCopy</a>. Chiar daca el ar fi dorit sa arate muuuult mai compact. Dar el e un programator foarte bun, de multi ani in aceasta meserie, iar eu sunt doar un anonim care a inceput sa cocheteze cu aceste limbaje de programare web acum circa 2 ani in urma.</p>
<p>Sper ca la versiunea 3 a formularului sa implementez validare client-side cu jQuery, sa adaug un camp in care utilizatorul poate atasa si un fisier la email si sa rescriu codul PHP de asa natura incat sa fie mai compact si mai aproape de conceptul de <strong>cod procedural reutilizabil</strong>.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+formular+de+contact%3F+%28versiunea+2%29+http://fidgg.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+formular+de+contact%3F+%28versiunea+2%29+http://fidgg.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de comentarii? (versiunea 2)'>Cum fac un formular de comentarii? (versiunea 2)</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/web/cum-fac-un-formular-de-inregistrare-a-utilizatorilor-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de inregistrare a utilizatorilor? (versiunea 2)'>Cum fac un formular de inregistrare a utilizatorilor? (versiunea 2)</a></li>
<li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-contact/' rel='bookmark' title='Permanent Link: Cum fac un formular de contact?'>Cum fac un formular de contact?</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-contact-versiunea-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cum fac un meniu de navigare in PHP, CSS, HTML?</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-meniu-de-navigare-in-php-css-html/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-meniu-de-navigare-in-php-css-html/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 16:52:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=378</guid>
		<description><![CDATA[Nu o sa zic nimic despre acest meniu de navigare in interiorul unui site decat ca designul este realizat de Dr. Freak iar programarea PHP si redactarea HTML/CSS de mine. Enjoy studying the code!  
index.php, about.php, gallery.php, offerts.php, hotels.php, contact.php

&#60;?php
$php_self = htmlentities(strip_tags($_SERVER['PHP_SELF']), ENT_QUOTES, 'utf-8');
?&#62;
&#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&#62;
&#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&#62;
&#60;head&#62;
&#60;title&#62;Travel agency&#60;/title&#62;
&#60;meta http-equiv=&#34;Content-Type&#34; [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de comentarii? (versiunea 2)'>Cum fac un formular de comentarii? (versiunea 2)</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Nu o sa zic nimic despre acest <a title="Cum fac un meniu de navigare in PHP, CSS, HTML?" href="http://accesinterzis.ro/myportofolio/nav-menu/index.php" target="_blank">meniu de navigare</a> in interiorul unui site decat ca designul este realizat de <a title="Dr. Freak" href="http://freakdr.deviantart.com" target="_blank">Dr. Freak</a> iar programarea PHP si redactarea HTML/CSS de mine. Enjoy studying the code! <img src='http://www.accesinterzis.ro/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>index.php, about.php, gallery.php, offerts.php, hotels.php, contact.php</strong></p>
<pre class="brush: php;">
&lt;?php
$php_self = htmlentities(strip_tags($_SERVER['PHP_SELF']), ENT_QUOTES, 'utf-8');
?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;title&gt;Travel agency&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;Travel agency&quot; /&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;travel,agency&quot; /&gt;
&lt;meta name=&quot;abstract&quot; content=&quot;Travel agency&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;copyright&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;noindex,nofollow&quot; /&gt;
&lt;meta name=&quot;revisit-after&quot; content=&quot;7 days&quot; /&gt;

&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/nav-menu.css.php&quot; media=&quot;screen&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/load-images.js.php&quot;&gt;&lt;/script&gt;
&lt;/head&gt;

&lt;body onload=&quot;download_images()&quot;&gt;
&lt;?php include('includes/nav-menu.inc.php'); ?&gt;

&lt;p id=&quot;content&quot;&gt;
&lt;?php echo basename($php_self).' page is under construction.'; ?&gt;
&lt;/p&gt;

&lt;?php include('includes/footer.inc.php'); ?&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><span id="more-378"></span></p>
<p><strong>nav-menu.inc.php</strong></p>
<pre class="brush: php;">
&lt;ul id=&quot;nav_menu&quot;&gt;
	&lt;?php
	$nav_menu = array('home'    =&gt; 'index.php',
					  'about'   =&gt; 'about.php',
					  'gallery' =&gt; 'gallery.php',
					  'offerts' =&gt; 'offerts.php',
					  'hotels'  =&gt; 'hotels.php',
					  'contact' =&gt; 'contact.php');

	foreach ($nav_menu as $k =&gt; $v) {
		echo '&lt;li id=&quot;'.$k.'-item&quot;&gt;';
		echo '&lt;a href=&quot;'.$v.'&quot; title=&quot;'.ucfirst($k).'&quot; id=&quot;'.$k.'-btn&quot;';
		echo (basename($php_self) == $v) ? ' style=&quot;background:url(\'images/'.$k.'-hover.png\') no-repeat 0 0&quot;&gt;' : '&gt;';
		echo '&lt;span&gt;'.ucfirst($k).'&lt;/span&gt;';
		echo '&lt;/a&gt;';
		echo '&lt;/li&gt;';
	}
	?&gt;
&lt;/ul&gt;
</pre>
<p><strong>nav-menu.css.php</strong></p>
<pre class="brush: css;">
&lt;?php
header(&quot;Content-type: text/css; charset=utf-8&quot;);
?&gt;
* {
	margin:0;
	padding:0;
	outline:none;
}

html {
	color:black;
	background:#00c3ff url('../images/content-repeat-x.jpg') repeat-x 0 0;
	/*background-color background-image background-repeat background-attachment background-position*/
	font: normal normal normal 12px  Verdana;
	/*font-style font-variant font-weight font-size font-family*/
}

body {
	/*
	E important ca body sa nu aiba nicio culoare de fundal deoarece daca ar avea
	nu s-ar mai vedea repeat-x-ul de pe fundalul html-ului.
	*/
	background:url('../images/header-travel-agency.jpg') no-repeat top;
	height:567px;
}

/***********begin - navigation menu***********/

ul#nav_menu {
	width:816px;
	margin:0 auto;
	list-style-type:none;
	overflow:hidden;
	padding-top:360px;
}

ul#nav_menu li {
	float:left;
	margin-right:30px;
}

ul#nav_menu li#contact-item {
	margin-right:0;
}

ul#nav_menu a {
	display:block;
	width:111px;
	height:56px;
}

ul#nav_menu li a span {
	display:none;
}

&lt;?php
$btns = array('home', 'about', 'gallery', 'offerts', 'hotels', 'contact');

foreach ($btns as $item) {
	echo 'ul#nav_menu a#'.$item.'-btn {
		background:url(\'../images/'.$item.'.png\') no-repeat 0 0;
	}

	ul#nav_menu a#'.$item.'-btn:hover {
		background:url(\'../images/'.$item.'-hover.png\') no-repeat 0 0;
	}';
}
?&gt;

/***********end - navigation menu***********/

p#content {
	color:white;
	text-align:center;
	font-size:32px;
	margin-top:150px;
}

p#footer {
	width:100%;
	position:absolute;
	bottom:5px;
	text-align:center;
	font-size:10px;
}

p#footer  a {
	color:white;
	text-decoration:none;
}

p#footer  a:hover {
	text-decoration:underline;
}
</pre>
<p><strong>load-images.js.php</strong></p>
<pre class="brush: php;">
&lt;?php
header(&quot;content-type: application/x-javascript&quot;);

function load_images($folder) {
	$result = 'objImage = new Image();'.&quot;\r\n&quot;;

	$result .= 'function download_images(){'.&quot;\r\n&quot;;
	$allowed_extensions = array ('.jpg', '.jpeg', '.png', '.gif');
	$open = opendir ($folder);	

	$i = 0;
	while ($filename = readdir($open)) {
		if ($filename != '.' &amp;&amp; $filename != '..') {
			$extension = substr($filename, strrpos($filename,'.'),100);
			$extension = strtolower($extension);

			if (in_array($extension, $allowed_extensions)) {
				$result .= 'objImage'.$i.'.src=&quot;'.$folder.'/'.$filename.'&quot;'.&quot;\r\n&quot;;
				$i++;
			}
		}
	}
	$result .= '}';

	return($result);
}

echo load_images('../images');
?&gt;
</pre>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+meniu+de+navigare+in+PHP%2C+CSS%2C+HTML%3F+http://fon88.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+meniu+de+navigare+in+PHP%2C+CSS%2C+HTML%3F+http://fon88.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-comentarii-versiunea-2/' rel='bookmark' title='Permanent Link: Cum fac un formular de comentarii? (versiunea 2)'>Cum fac un formular de comentarii? (versiunea 2)</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-meniu-de-navigare-in-php-css-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cum fac un formular de upload in PHP?</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-upload-in-php/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-upload-in-php/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 19:42:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=369</guid>
		<description><![CDATA[Scriptul PHP din spatele acestui formular de upload:

rezolva problema spatiilor goale din numele imaginii
restrictioneaza numarul maxim de caractere al numelui imaginii  si ce tip de caractere poate sa contina numele imaginii
permite utilizatorului sa uploadeze doar imagini (celelalte tipuri de fisiere, posibil malitioase, cum ar fi fisiere executabile, fisiere .php, fisiere .js nu pot fi urcate)
specifica ce tipuri [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-extrag-extensia-unui-fisier/' rel='bookmark' title='Permanent Link: Cum extrag extensia unui fisier?'>Cum extrag extensia unui fisier?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Scriptul PHP din spatele acestui formular de upload:</p>
<ul>
<li>rezolva problema spatiilor goale din numele imaginii</li>
<li>restrictioneaza numarul maxim de caractere al numelui imaginii  si ce tip de caractere poate sa contina numele imaginii</li>
<li>permite utilizatorului sa uploadeze doar imagini (celelalte tipuri de fisiere, posibil malitioase, cum ar fi fisiere executabile, fisiere .php, fisiere .js nu pot fi urcate)</li>
<li>specifica ce tipuri de imagini pot fi uploadate (.jpg, .jpeg, .gif, .png)</li>
<li>restrictioneaza marimea maxima a imaginii</li>
<li>restrictioneaza latimea pe care o poate avea imaginea</li>
<li>restrictioneaza inaltimea pe care o poate avea imaginea</li>
<li>verifica daca folderul <strong>images</strong> exista pe server (daca nu exista il creaza)</li>
<li>verifica daca mai exista in folderul <strong>images</strong> inca o imagine cu acelasi nume</li>
<li>numeroteaza <strong>dinamic</strong> fiecare imagine uploadata (trebuie sa dam permisiile <span style="color: #ff0000;"><strong>0777</strong></span> folderului <strong>images</strong> ca scriptul PHP sa il poata citi)</li>
<li>schimba numele imaginii uploadate pe server</li>
</ul>
<p><span id="more-369"></span><br />
<strong>uf-v.1.0.php</strong></p>
<pre class="brush: php;">
&lt;?php
/*
Titlu: Cum fac un formular de upload in PHP?
Autor: Marian Barbu aka AccesInterzis
Website: http://www.accesinterzis.ro
2010 (c) Toate drepturile rezervate
*/

#1
if (isset($_POST['upload'])) {
	/*
	Rezolv problema spatiilor goale din numele imaginii.
	*/
	#2
	$filename = trim($_FILES['userfile']['name']);
	$filename = str_replace(' ', '_', $filename);

	#3
	if (empty($filename)) {
		$error_message = 'You didn\'t enter any file.';
	} else {
		#3.1
		if (strlen($filename) &gt; 30) {
			$error_message = 'The filename must have up to 30 characters.';
		} else {
			#3.2
			if (!preg_match('/^[a-z0-9._-]+\.[a-z]{2,4}$/i', $filename)) {
				$error_message = 'The filename isn\'t valid.';
			} else {
				/*
				Verific daca fisierul este o imagine. Content-type-ul unei imaginii este o
				valoare de genul image/jpeg, image/pjpeg, image/gif, image/png.
				*/
				#3.3
				if (!preg_match('/^image\//', $_FILES['userfile']['type'])) {
					$error_message = 'You are allowed to upload only images.';
				} else {
					/*
					Functia PHP getimagesize() ma asigura 100% ca ceea ce urca utilizatorul
					e o imagine si nimic altceva.
					*/
					#3.4
					$properties = getimagesize($_FILES['userfile']['tmp_name']);
					if ($properties == false) {
						$error_message = 'The file isn\'t an image.';
					} else {
						/*
						Specific tipurile de imagini care pot fi urcate pe server.
						*/
						$allowed_extensions = array('.jpg', '.jpeg', '.gif', '.png');

						$extension = substr($filename, strrpos($filename,'.'), 100);
						$extension = strtolower($extension);

						#3.5
						if (!in_array($extension, $allowed_extensions)) {
							$error_message = 'You aren\'t allowed to upload &lt;strong&gt;'.$extension.'&lt;/strong&gt; files.';
						} else {
							/***/
							/*
							Imaginea poate avea maxim 100 kb.
							*/
							#3.6
							if (($_FILES['userfile']['size']/1024) &gt; 100) {
								$error_message = 'The file can have up to &lt;strong&gt;100 kb&lt;/strong&gt;.';
							} else {
								/*
								Restrictionez latimea pe care imaginea o poate avea.
								*/
								#3.7
								if ($properties[0] &gt; 100) {
									$error_message = 'The width must be up to 100px.';
								} else {
									/*
									Restrictionez inaltimea pe care imaginea o poate avea.
									*/
									#3.8
									if ($properties[1] &gt; 100) {
										$error_message = 'The height must be up to 100px.';
									} else {
										/*
										Daca folderul &quot;images&quot; nu exista pe server atunci il creez.
										*/
										#3.9
										if (!is_dir('images')) {
											mkdir('images', 0777);
										}

										#3.10
										if (file_exists('images/'.$filename)) {
											$error_message = 'The file &lt;strong&gt;'.$filename.'&lt;/strong&gt; already exists.';
										} else {
											/*
											Acum ca m-am asigurat ca ceea ce vrea utilizatorul sa urce este o imagine si nu altceva
											si acea imagine nu exista deja pe server, pot urca linistit imaginea de pe PC-ul utilizatorului
											pe serverul de hosting. Din motive de securitate schimb numele initial al imaginii utilizatorului.
											Noul nume este generat aleatoriu.
											*/
											#3.11
											$alphabet = 'abcdefghijklmnoprqstuvxyz';
											$new_fn = '';
											for ($i = 0; $i &lt; 10; $i++) {
												$new_fn .= substr($alphabet, rand(0,strlen($alphabet) - 1), 1);
											}

											#3.12
											if (substr(sprintf('%o', fileperms('images')), -4) != 777) {
												$error_message = 'The folder has not the right permissions to read it.';
											} else {
												$count = 0;

												$open = opendir ('images');

												while ($image_name = readdir($open)) {
													//. reprezinta folderul curent iar .. reprezinta folderul anterior
													if ($image_name != '.' &amp;&amp; $image_name != '..') {
														$image_extension = substr($image_name, strpos($image_name,'.'),100);
														$image_extension = strtolower($image_extension);

														if (in_array($image_extension,$allowed_extensions)) {
															$count++;
														}
													}
												}

												#3.13
												if (move_uploaded_file($_FILES['userfile']['tmp_name'], 'images/'.($count + 1).'_'.$new_fn.$extension)) {
													$confirmation = 'The file &lt;strong&gt;'.$filename.'&lt;/strong&gt; was succesfully uploaded.';
												} else {
													$confirmation = 'Something is wrong with the server.';
												}
											}
										}
									}
								}
							}
							/***/
						}
					}
				}
			}
		}
	}
}
?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;How do I make a upload form?&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;How do I make a upload form?&quot; /&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;upload,form,php,script,image,file&quot; /&gt;
&lt;meta name=&quot;abstract&quot; content=&quot;How do I make a upload form?&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;copyright&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;index,follow&quot; /&gt;
&lt;meta name=&quot;revisit-after&quot; content=&quot;7 days&quot; /&gt;

&lt;link href=&quot;http://www.accesinterzis.ro/myportofolio/css/reset.css&quot; type=&quot;text/css&quot; rel=&quot;stylesheet&quot; media=&quot;all&quot; /&gt;
&lt;style type=&quot;text/css&quot;&gt;
/*INCEPUT - LINIILE CSS CARE CREEAZA SKINUL FORMULARULUI DE UPLOAD*/

form#upload_form {
	width:240px;
	margin:10px auto;
}

form#upload_form div {
	margin:0 0 5px 0;
}

form#upload_form input#upload {
	width:auto;
	color:#FFF;
	background-color:#333;
	border:1px #000 solid !important;
	cursor:pointer;
}

form#upload_form input#upload:hover {
	color:#333;
	background-color:#fff;
	border:1px #333 solid;
}

/*Inceput - stilurile erorilor*/
form#upload_form p {
	color:#c00;
	padding:0 0 5px 0;
	font-size:10px;
	text-align:left;
}
/*Sfarsit - stilurile erorilor*/

/*SFARSIT - LINIILE CSS CARE CREEAZA SKINUL FORMULARULUI DE UPLOAD*/
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;form action=&quot;&lt;?php echo htmlentities(strip_tags('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']), ENT_QUOTES, 'utf-8'); ?&gt;&quot; method=&quot;post&quot; id=&quot;upload_form&quot; enctype=&quot;multipart/form-data&quot;&gt;

	&lt;?php if ($confirmation) echo '&lt;p&gt;'.$confirmation.'&lt;/p&gt;'; ?&gt;
	&lt;?php if ($error_message) echo '&lt;p&gt;'.$error_message.'&lt;/p&gt;'; ?&gt;

	&lt;div&gt;
		&lt;input name=&quot;userfile&quot; type=&quot;file&quot; value=&quot;ABC&quot; id=&quot;userfile&quot; /&gt;
	&lt;/div&gt;

	&lt;div&gt;
		&lt;input name=&quot;upload&quot; type=&quot;submit&quot; id=&quot;upload&quot; value=&quot;upload&quot; /&gt;
	&lt;/div&gt;
&lt;/form&gt;
&lt;?php echo $count.' sadf safsa'; ?&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Pentru o mai buna organizare a codului este indicat ca scriptul PHP de deasupra DOCTYPE-ului, care verifica daca fisierul este o imagine (valida) si urca imaginea de pe PC-ul utilizatorului pe server, sa se bage intr-un fisier include si sa fie apelat prin functia PHP include().</p>
<pre class="brush: php;">
&lt;?php @include('includes/upload_file.inc.php'); ?&gt;
</pre>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+formular+de+upload+in+PHP%3F+http://ciim6.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Cum+fac+un+formular+de+upload+in+PHP%3F+http://ciim6.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-extrag-extensia-unui-fisier/' rel='bookmark' title='Permanent Link: Cum extrag extensia unui fisier?'>Cum extrag extensia unui fisier?</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-upload-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cum afisez continutul unui site in mai multe limbi folosind PHP?</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-afisez-continutul-unui-site-in-mai-multe-limbi-folosind-php/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-afisez-continutul-unui-site-in-mai-multe-limbi-folosind-php/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:53:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=363</guid>
		<description><![CDATA[Am vazut pe net multe siteuri cu continutul prezentat in mai multe limbi. Ceea ce este un lucru bun si imbucarator. Gresita, sau cel putin grosiera, era modalitatea de realiza acest lucru si anume se crea pentru fiecare limba in parte un folder nou in care se stocau fisierele ce alcatuiesc websiteul. Acest lucru are [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-restrictionez-accesul-la-continutul-paginii-mele-web-phpinfo-php/' rel='bookmark' title='Permanent Link: Cum restrictionez accesul la continutul paginii mele web phpinfo.php?'>Cum restrictionez accesul la continutul paginii mele web phpinfo.php?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Am vazut pe net multe siteuri cu continutul prezentat in mai multe limbi. Ceea ce este un lucru bun si imbucarator. Gresita, sau cel putin grosiera, era modalitatea de realiza acest lucru si anume se crea pentru fiecare limba in parte un folder nou in care se stocau fisierele ce alcatuiesc websiteul. Acest lucru are multiple dezavantaje:</p>
<ul>
<li>se ocupa inutil spatiu pe server</li>
<li>se pierde timp mult atunci cand clientul cere o modificare sau un update</li>
<li>iti dai cu firma in cap daca codezi in stilul asta websiteurile</li>
</ul>
<p>De aceea voi prezenta mai jos <a title="Cum afisez continutul unui website in mai multe limbi?" href="http://www.accesinterzis.ro/myportofolio/mlwebsite/mlwebsite.php" target="_blank">o tehnica de a genera continutul unui website</a> mult mai elegant folosindu-ma de limbajul de scripting server-side PHP.</p>
<p>Folosind aceasta tehnica websiteul este indexat de catre motoarele de cautare (Google, Yahoo, Bing, Ask.com) in toate limbile in care este afisat continutul (engleza, romana, franceza, germana, italiana, spaniola etc.). Scriptul PHP genereaza in toate limbile pana si titlul si metadatele paginii.</p>
<p><span id="more-363"></span></p>
<p><strong>mlwebsite.php</strong> &#8211; pagina principala a websiteului</p>
<pre class="brush: php;">
&lt;?php
#1
@include('includes/choose_lang.inc.php');

#2
@include('langs/'.$lang.'.php');
?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;?php echo $home_seo['title']; ?&gt;&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;meta name=&quot;description&quot; content=&quot;&lt;?php echo $home_seo['description']; ?&gt;&quot; /&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;&lt;?php echo $home_seo['keywords']; ?&gt;&quot; /&gt;
&lt;meta name=&quot;abstract&quot; content=&quot;&lt;?php echo $home_seo['abstract']; ?&gt;&quot; /&gt;
&lt;meta name=&quot;author&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;copyright&quot; content=&quot;AccesInterzis&quot; /&gt;
&lt;meta name=&quot;robots&quot; content=&quot;index,follow&quot; /&gt;
&lt;meta name=&quot;revisit-after&quot; content=&quot;7 days&quot; /&gt;

&lt;link href=&quot;http://www.accesinterzis.ro/myportofolio/css/reset.css&quot; type=&quot;text/css&quot; rel=&quot;stylesheet&quot; media=&quot;all&quot; /&gt;
&lt;link href=&quot;css/mlwebsite.css&quot; type=&quot;text/css&quot; rel=&quot;stylesheet&quot; media=&quot;all&quot; /&gt;

&lt;/head&gt;

&lt;body&gt;
&lt;?php include('includes/langs_menu.inc.php'); ?&gt;

&lt;div id=&quot;main&quot;&gt;
	&lt;?php include('includes/header.inc.php'); ?&gt;

	&lt;ul id=&quot;left_side&quot;&gt;
		&lt;li&gt;
			&lt;h2&gt;&lt;?php echo $home_content['html_title']; ?&gt;&lt;/h2&gt;
			&lt;p&gt;&lt;?php echo $home_content['html_description']; ?&gt;&lt;/p&gt;
		&lt;/li&gt;

		&lt;li&gt;
			&lt;h2&gt;&lt;?php echo $home_content['css_title']; ?&gt;&lt;/h2&gt;
			&lt;p&gt;&lt;?php echo $home_content['css_description']; ?&gt;&lt;/p&gt;
		&lt;/li&gt;

		&lt;li&gt;
			&lt;h2&gt;&lt;?php echo $home_content['js_title']; ?&gt;&lt;/h2&gt;
			&lt;p&gt;&lt;?php echo $home_content['js_description']; ?&gt;&lt;/p&gt;
		&lt;/li&gt;
	&lt;/ul&gt;

	&lt;ul id=&quot;right_side&quot;&gt;
		&lt;li&gt;
			&lt;h2&gt;&lt;?php echo $home_content['php_title']; ?&gt;&lt;/h2&gt;
			&lt;p&gt;&lt;?php echo $home_content['php_description']; ?&gt;&lt;/p&gt;
		&lt;/li&gt;

		&lt;li&gt;
			&lt;h2&gt;&lt;?php echo $home_content['mysql_title']; ?&gt;&lt;/h2&gt;
			&lt;p&gt;&lt;?php echo $home_content['mysql_description']; ?&gt;&lt;/p&gt;
		&lt;/li&gt;

		&lt;li&gt;
			&lt;h2&gt;&lt;?php echo $home_content['xml_title']; ?&gt;&lt;/h2&gt;
			&lt;p&gt;&lt;?php echo $home_content['xml_description']; ?&gt;&lt;/p&gt;
		&lt;/li&gt;
	&lt;/ul&gt;

	&lt;?php include('includes/footer.inc.php'); ?&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Am apelat in fisier cateva surse externe:<br />
<strong>choose_lang.inc.php</strong> &#8211; fisierul care stabileste in ce limba se va afisa continutul siteului</p>
<pre class="brush: php;">
&lt;?php
/*
Specific limba default in care va fi afisat continutul websiteului.
*/
if (!isset($_GET['lang'])) {
	$lang = 'en';
} else {
	#1.1
	/*
	Si validez valorile ce se transmit prin URL. Valoarea trebuie sa contina 2 litere.
	Daca nu se indeplineste aceasta conditie inseamna ca ceva e dubios si afisam continutul
	in limba default adica limba engleza.
	*/
	$lang = trim($_GET['lang']);

	if (!preg_match('/^[a-z]{2}$/', $lang)) {
		$lang = 'en';
	}
}
?&gt;
</pre>
<p><strong>ro.php</strong> &#8211; fisierul in care se afla continutul siteului in limba romana. Fisierul <strong>en.php</strong> este identic cu <strong>ro.php</strong>. Doar traducerea continutului difera. <strong><span style="color: #cc0000;">Atentie!</span></strong> Cheile array-urilor nu se traduc. Doar valorile se traduc. Aceste fisiere se afla in folderul <strong>langs</strong> din root-ul websiteului. Daca vrem sa adaugam inca o limba, de exemplu limba franceza, nu trebuie decat sa cream un fisier <strong>fr.php</strong> in care vom baga continutul websiteului in limba franceza.</p>
<pre class="brush: php;">
&lt;?php
$common_content = array(
'en_flag' =&gt; 'Engleza',
'ro_flag' =&gt; 'Romana',
'header' =&gt; 'Ce limbaje trebuie sa stiu ca sa dezvolt aplicatii web?',
'copyright' =&gt; 'Site dezvoltat de &lt;a href=&quot;http://www.accesinterzis.ro&quot;
				title=&quot;Programare | Web development | Web design | securitate IT | SEO&quot;
				target=&quot;_blank&quot;&gt;www.accesinterzis.ro&lt;/a&gt; &amp;copy; 2010. Toate drepturile rezervate.'
);

if (basename($_SERVER['PHP_SELF']) == 'mlwebsite.php') {
	$home_seo = array(
		'title' =&gt; 'Cum fac un website multilingvistic?',
		'description' =&gt; 'Acest script PHP prezinta continutul unui website in mai multe limbi.',
		'keywords' =&gt; 'limbi,php,website,romana,engleza,italiana',
		'abstract' =&gt; 'Acest script PHP prezinta continutul unui website in mai multe limbi.'
	);

	$home_content = array (
	'html_title' =&gt; '&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;Limbaj de marcaj a hypertextului&quot;&gt;HTML&lt;/a&gt;',
	'html_description' =&gt; 'HTML este o forma de marcare orientata catre prezentarea documentelor text pe o singura pagina, utilizand
					   un software de redare specializat, numit agent utilizator HTML, cel mai bun exemplu de astfel de software
					   fiind browserul web. HTML furnizeaza mijloacele prin care continutul unui document poate fi adnotat cu diverse
					   tipuri de metadate si indicatii de redare. Indicatiile de redare pot varia de la decoratiuni minore ale textului,
					   cum ar fi specificarea faptului ca un anumit cuvant trebuie subliniat sau ca o imagine trebuie introdusa, pana la
					   scripturi sofisticate....
					   &lt;br /&gt;&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;mai mult&quot;&gt;[mai mult]&lt;/a&gt;',

	'css_title' =&gt; '&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;Foi de stil in cascada&quot;&gt;CSS&lt;/a&gt;',
	'css_description' =&gt; 'CSS este destinat in primul rand pentru a permite separarea continutului documentului (scrise in HTML sau un limbaj
					  de markup similare) de la prezentarea document, inclusiv elemente, cum ar fi structura, culori si fonturi.
					  Aceasta separare se poate imbunatati continutul de accesibilitate, sa asigure o mai mare flexibilitate si de control
					  in caietul de sarcini al caracteristicilor de prezentare, permite mai multe paginila formatarea parts, si de a reduce
					  complexitatea si repetitia in continutul structurale...
					  &lt;br /&gt;&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;mai mult&quot;&gt;[mai mult]&lt;/a&gt;',

	'js_title' =&gt; '&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;Limbaj de scripting client-side&quot;&gt;Javascript&lt;/a&gt;',
	'js_description' =&gt; 'JavaScript este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Este folosit mai ales
					 pentru introducerea unor functionalitati in paginile web, codul Javascript din aceste pagini fiind rulat de catre browser.
					 Limbajul este binecunoscut pentru folosirea sa in construirea siturilor web, dar este folosit si pentru acesul la obiecte
					 incastrate (embedded objects) in alte aplicatii. A fost dezvoltat initial de catre Brendan Eich de la Netscape
					 Communications Corporation sub numele de Mocha, apoi LiveScript, si denumit in final JavaScript...
					 &lt;br /&gt;&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;mai mult&quot;&gt;[mai mult]&lt;/a&gt;',

	'php_title' =&gt; '&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;Limbaj de scripting server-side&quot;&gt;PHP&lt;/a&gt;',
	'php_description' =&gt; 'PHP este un limbaj de programare. Numele PHP provine din limba engleza si este un acronim recursiv :
					  Php: Hypertext Preprocessor. Folosit initial pentru a produce pagini web dinamice, este folosit pe scara larga
					  in dezvoltarea paginilor si aplicatiilor web. Se foloseste in principal inglobat in codul HTML, dar incepand de
					  la versiunea 4.3.0 se poate folosi si in mod &quot;linie de comanda&quot; (CLI)...
					  &lt;br /&gt;&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;mai mult&quot;&gt;[mai mult]&lt;/a&gt;',

	'mysql_title' =&gt; '&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;Limbaj de interogare a bazelor de date&quot;&gt;MySQL&lt;/a&gt;',
	'mysql_description' =&gt; 'Desi este folosit foarte des impreuna cu limbajul de programare PHP, cu MySQL se pot construi aplicatii in orice
						limbaj major. Exista multe scheme API disponibile pentru MySQL ce permit scrierea aplicatiilor in numeroase
						limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Java, Perl, PHP,
						Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic API. O interfata de tip ODBC denumita
						MyODBC permite altor limbaje de programare ce folosesc aceasta interfata, sa interactioneze cu bazele de date
						MySQL cum ar fi ASP sau Visual Basic...
						&lt;br /&gt;&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;mai mult&quot;&gt;[mai mult]&lt;/a&gt;',

	'xml_title' =&gt; '&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;Limbaj extensibil de marcaj&quot;&gt;XML&lt;/a&gt;',
	'xml_description' =&gt; 'eXtensible Markup Language(XML) este un meta-limbaj de marcare recomandat de Consortiul Web pentru crearea de alte
					  limbaje de marcare, cum ar fi XHTML, RDF, RSS, MathML, SVG, OWL etc. Aceste limbaje formeaza familia de limbaje XML.
					  Meta-limbajul XML este o simplificare a limbajului SGML (din care se trage si HTML) si a fost proiectat in scopul
					  transferului de date intre aplicatii pe internet, descriere structura date. XML este acum si un model de stocare a
					  datelor nestructurate si semi-structurate in cadrul bazelor de date native XML....
					  &lt;br /&gt;&lt;a href=&quot;mlwebsite.php?lang='.$lang.'&quot; title=&quot;mai mult&quot;&gt;[mai mult]&lt;/a&gt;'
	);
}
?&gt;
</pre>
<p><strong>langs_menu.inc.php</strong> &#8211; fisierul care genereaza meniul de limbi</p>
<pre class="brush: php;">
&lt;ul id=&quot;langs&quot;&gt;
	&lt;?php
	$langs = array('ro', 'en');

	foreach ($langs as $item) {
		echo '&lt;li&gt;';
		echo '&lt;a href=&quot;http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?lang='.$item.'&quot; title=&quot;'.$common_content[$item.'_flag'].'&quot;&gt;';
		echo '&lt;img src=&quot;images/'.$item.'.gif&quot; alt=&quot;'.$item.'&quot; title=&quot;'.$common_content[$item.'_flag'].'&quot; /&gt;';
		echo '&lt;/a&gt;';
		echo '&lt;/li&gt;';
	}
	?&gt;
&lt;/ul&gt;
</pre>
<p><strong>header.inc.php</strong> &#8211; fisierul care contine headerul websiteului</p>
<pre class="brush: php;">
&lt;div id=&quot;header&quot;&gt;
	&lt;h1&gt;
		&lt;a href=&quot;mlwebsite.php?lang=&lt;?php echo $lang; ?&gt;&quot; title=&quot;&lt;?php echo $common_content['header']; ?&gt;&quot;&gt;&lt;?php echo $common_content['header']; ?&gt;&lt;/a&gt;
	&lt;/h1&gt;
&lt;/div&gt;
</pre>
<p><strong>footer.inc.php</strong> &#8211; fisierul care contine footerul websiteului</p>
<pre class="brush: php;">
&lt;div id=&quot;footer&quot;&gt;
	&lt;?php echo $common_content['copyright']; ?&gt;
&lt;/div&gt;
</pre>
<p>Toate fisierele apelate cu <strong>functia PHP include()</strong> contin bucati de cod comune tuturor paginilor. Astfel, editand un fisier include modificarea se face automat in toate paginile websiteului casting timp.</p>
<p>Descrierile limbajelor sunt luate de pe <a title="Wikipedia" href="http://ro.wikipedia.org/wiki/Pagina_principal%C4%83" target="_blank">Wikipedia</a>.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+afisez+continutul+unui+site+in+mai+multe+limbi+folosind+PHP%3F+http://9knys.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Cum+afisez+continutul+unui+site+in+mai+multe+limbi+folosind+PHP%3F+http://9knys.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-restrictionez-accesul-la-continutul-paginii-mele-web-phpinfo-php/' rel='bookmark' title='Permanent Link: Cum restrictionez accesul la continutul paginii mele web phpinfo.php?'>Cum restrictionez accesul la continutul paginii mele web phpinfo.php?</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/cum-afisez-continutul-unui-site-in-mai-multe-limbi-folosind-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cum restrictionez accesul la continutul paginii mele web phpinfo.php?</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-restrictionez-accesul-la-continutul-paginii-mele-web-phpinfo-php/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-restrictionez-accesul-la-continutul-paginii-mele-web-phpinfo-php/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 11:25:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programare]]></category>
		<category><![CDATA[securitate IT]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.accesinterzis.ro/?p=364</guid>
		<description><![CDATA[De multe ori am avut nevoie sa rulez functia PHP phpinfo() ca sa aflu niste detalii legate de serverul web ce imi gazduieste fisierele. De aceea am facut o pagina phpinfo.php pe care o deschid oridecateori am nevoie sa aflu cate ceva despre setarile serverului.

&#60;?php
phpinfo();
?&#62;

Problema e ca accesul la continutul paginii nu este restrictionat. Oricine [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-afisez-continutul-unui-site-in-mai-multe-limbi-folosind-php/' rel='bookmark' title='Permanent Link: Cum afisez continutul unui site in mai multe limbi folosind PHP?'>Cum afisez continutul unui site in mai multe limbi folosind PHP?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>De multe ori am avut nevoie sa rulez functia PHP phpinfo() ca sa aflu niste detalii legate de serverul web ce imi gazduieste fisierele. De aceea am facut o pagina <a title="Cum restrictionez accesul la o pagina web?" href="http://www.accesinterzis.ro/myportofolio/phpinfo.php" target="_blank">phpinfo.php</a> pe care o deschid oridecateori am nevoie sa aflu cate ceva despre setarile serverului.</p>
<pre class="brush: php;">
&lt;?php
phpinfo();
?&gt;
</pre>
<p>Problema e ca accesul la continutul paginii nu este restrictionat. Oricine de pe intreg mapamond care are un PC conectat la Internet poate vedea continutul paginii mele. Ceea ce nu este prea indicat. Asadar, trebuie sa creez un sistem de autentificare care sa permita doar persoanelor autorizate sa vada continutul paginii. Acest sistem de autentificare este destul de simplu. Nu necesita un formular de login sau o baza de date. Ma folosesc doar de array-ul superglobal $_GET.</p>
<p><span id="more-364"></span></p>
<pre class="brush: php;">
&lt;?php
if ($_GET['pw'] != 'primavarapeinserate') {
	echo 'You are NOT allowed to view this page.';
	exit();
}

phpinfo();
?&gt;
</pre>
<p>Ca sa pot accesa continutul paginii trebuie sa scriu URL-ul astfel: <strong>http://www.accesinterzis.ro/myportofolio/phpinfo.php<span style="color: #cc0000;">?pw=primavarapeinserate</span></strong>.</p>
<p>Scriptul are doua mici dezavantaje:</p>
<ul>
<li>cel mai important dezavantaj e ca, desi am deschis pagina si pot vedea continutul,  parola ramane in URL si este vizibila (deci cineva din camera unde ma aflu o poate vedea)</li>
<li>al doilea dezavantaj e ca parola nu este validata cu toate ca nu prea e necesar acest lucru in acest context dar este un obicei bun de programare sa validam intotdeauna datele primite de la utilizator</li>
</ul>
<p>Deci, trebuie sa rescriu scriptul. Sa il imbunatatesc.</p>
<pre class="brush: php;">
&lt;?php
/*
Titlu: Cum restrictionez accesul la continutul paginii mele web phpinfo.php?
Autor: Marian Barbu aka AccesInterzis
Website: http://www.accesinterzis.ro
2010 (c) Toate drepturile rezervate
*/

#1
session_start();

$php_self = htmlentities(strip_tags($_SERVER['PHP_SELF']), ENT_QUOTES, 'utf-8');

#2
if (!isset($_GET['pw'])) {
		#2.1
		if (!isset($_SESSION['pw']) || $_SESSION['pw'] != sha1('primavarapeinserate')) {
			echo 'You are NOT allowed to view the content of this page.';
			exit();
		} else {
			#2.2
			if (isset($_GET['action'])) {
				$action = trim($_GET['action']);

				if (!preg_match('/^[a-z]{6}$/', $action)) {
					echo 'Your action is wrong.';
					exit();
				} else {
					if ($action == 'logout') {
						$_SESSION = array();
						if (session_destroy() &amp;&amp; setcookie('PHPSESSID', '', time()-300, '/', '', 0)) {
							header('Location:http://'.$_SERVER['HTTP_HOST'].$php_self);
							exit();
						}
					}
				}
			}
		}
} else {
	#2.3
	$pw = trim($_GET['pw']);

	if (!preg_match('/^[a-zA-Z0-9]{5,30}$/', $pw)) {
		echo 'Your password is NOT valid.';
		exit();
	} else {
		if ($pw != 'primavarapeinserate') {
			echo 'Your password is wrong.';
			exit();
		} else {
			$_SESSION['pw'] = sha1($pw);
			header('Location:http://'.$_SERVER['HTTP_HOST'].$php_self);
		}
	}
}

#3
phpinfo();
?&gt;
</pre>
<p>Acum nu mai ramane decat sa punem scriptul de mai sus deasupra DOCTYPE-ului fiecarei paginii web pe care vrem sa o protejam de ochii curiosi. Am adaugat in script si functia de logout. Nu trebuie decat sa scriem URL-ul astfel: <strong>http://www.accesinterzis.ro/myportofolio/phpinfo.php<span style="color: #cc0000;">?action=logout</span></strong>.</p>
<p>Scriptul poate fi dezvoltat si mai mult si poate fi folosit ca <a title="Cum fac un formular de autentificare a utilizatorilor unei sectiunii de administrare?" href="http://www.accesinterzis.ro/index.php/programare/cum-fac-un-formular-de-autentificare-a-utilizatorilor/" target="_blank">sistem de autentificare a utilizatorilor unei sectiuni de administrare</a>. Diferenta dintre sistemul de login ce foloseste un formular HTML si acesta este ca in loc sa preiau datele de logare din array-ul superglobal $_POST, le preiau din array-ul superglobal $_GET.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+restrictionez+accesul+la+continutul+paginii+mele+web+phpinfo.php%3F+http://gm5w9.th8.us" title="Publica acest articol pe Twitter"><img class="nothumb" src="http://www.accesinterzis.ro/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Cum+restrictionez+accesul+la+continutul+paginii+mele+web+phpinfo.php%3F+http://gm5w9.th8.us" title="Publica acest articol pe Twitter">Publica acest articol pe Twitter</a></p>

<p><strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-afisez-continutul-unui-site-in-mai-multe-limbi-folosind-php/' rel='bookmark' title='Permanent Link: Cum afisez continutul unui site in mai multe limbi folosind PHP?'>Cum afisez continutul unui site in mai multe limbi folosind PHP?</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.accesinterzis.ro/index.php/programare/cum-restrictionez-accesul-la-continutul-paginii-mele-web-phpinfo-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
