<?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; Javascript</title>
	<atom:link href="http://www.accesinterzis.ro/index.php/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.accesinterzis.ro</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Thu, 14 Oct 2010 01:05:26 +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 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 extrag adrese de email de pe o pagina web?</title>
		<link>http://www.accesinterzis.ro/index.php/programare/cum-extrag-adrese-de-email-de-pe-o-pagina-web/</link>
		<comments>http://www.accesinterzis.ro/index.php/programare/cum-extrag-adrese-de-email-de-pe-o-pagina-web/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 17:41:54 +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=11</guid>
		<description><![CDATA[Scriptul PHP de mai jos extrage adrese de email de pe o pagina web.

&#60;?php
$url = &#34;http:/www.genericwebsite.com/contact.php&#34;;
//getting the source-code of the web page
$sc = file_get_contents($url);
$sc = strtolower($sc);
$forbidden_symbols = array('?', '!', ',', ';', ':', '+', '=', '/', '\\', '&#34;', '\'', '`', '’', '“', '”', '#', '$', '%', '^', '&#38;amp;', '*', '(', ')', '[', ']', '{', '}', '&#124;', [...]


<strong>Articole asemanatoare:<ul><li><a href='http://www.accesinterzis.ro/index.php/programare/cum-floodez-o-adresa-de-email/' rel='bookmark' title='Permanent Link: Cum floodez o adresa de email?'>Cum floodez o adresa de email?</a></li>
<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 de mai jos extrage adrese de email de pe o pagina web.</p>
<pre class="brush: php;">
&lt;?php
$url = &quot;http:/www.genericwebsite.com/contact.php&quot;;
//getting the source-code of the web page
$sc = file_get_contents($url);
$sc = strtolower($sc);
$forbidden_symbols = array('?', '!', ',', ';', ':', '+', '=', '/', '\\', '&quot;', '\'', '`', '’', '“', '”', '#', '$', '%', '^', '&amp;amp;', '*', '(', ')', '[', ']', '{', '}', '|', '&lt;', '&gt;');
//removing all symbols from the source-code less &quot;@&quot;, &quot;.&quot; and &quot;_&quot;
$sc = str_replace($forbidden_symbols, ' ', $sc);
//storing all words from the source-code into an array
$words_found = explode(' ', $sc);

//verifying each word from array if it is an email address
for ($i = 0; $i &lt; count($words_found); $i++) {
	//if the word contains the symbols &quot;@&quot; that means it is an email address
	if (strpos($words_found[$i], '@')) {
		//I make sure that the email address has no empty spaces in the beginning and in the and of it
		$email_address = trim($words_found[$i]);

		//I make sure that the email address has no symbols in the beginning and in the and of it
		//I apply all these cleaning filters because the source-code can be pretty messy
		$first_char = substr($email_address, 0, 1);
		while (!ctype_alpha($first_char)) {
			$email_address = substr($email_address, 1, strlen($email_address));
			$first_char = substr($email_address, 0, 1);
		}

		$last_char = substr($email_address, strlen($email_address) - 1, 1);
		while (!ctype_alpha($last_char)) {
			$email_address = substr($email_address, 0, strlen($email_address) - 1);
			$last_char = substr($email_address, strlen($email_address) - 1, 1);
		}

		//I make sure that the extracted string is really an email address
		if (eregi(&quot;^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$&quot;, $email_address)) {
			echo $email_address.'&lt;br /&gt;';
		}
	}
}
?&gt;
</pre>
<p><span id="more-11"></span></pre>
<p>O caracteristica importanta a scriptului este ca poate rula foarte bine  pe un server local ca EasyPHP sau XAMPP. Nu trebuie sa ruleze neaparat  pe un server de hosting care poate sa fi restrictionat utilizarea  functiei PHP file_get_contents(). Aceasta restrictie se face editand  fisierul php.ini al serverului Apache. Mai exact, urmatoare linie de  cod: allow_url_fopen = Off.</p>
<p>Incepand de la acest script pot fi dezvoltate aplicatii web mult mai  complexe cu multe campuri de formulare, tot felul de scripturi jQuery si  o baza de date unde sa fie stocate adresele de email. Deci, simte-te  liber sa iti dezvolti propria aplicatie bazata pe propriile interese. Eu  doar am prezentat idea de baza. Am aratat cum se poate obtine  codul-sursa al unei pagini web din care putem extrage ce dorim. De  exemplu, adrese de email, URL-uri, cuvinte-chie s.a.m.d.. Depinde ce  doresti.</p>
<p>Inainte sa termin articolul vreau sa mentionez ca scriptul nu are nimic  de a face cu spamming-ul. <span style="text-decoration: underline;">Spamming inseamna mesagerie electronica  nesolicitata</span>. Deci, atat timp cat scriptul nu trimite emailuri  nesolicitate cu reclame scriptul nu poate fi considerat bot de spamming.  Seamana mai mult cu crawlerele motoarelor de cautare (Yahoo, Bing si  evident maretul Google) care aduna informatii de pe Internet sapand  adanc in codul-sursa al paginilor web. Scriptul poate fi adaptat sa  adune URL-uri sau intreg textul de pe pagina web sau ce vrea mintea ta  in loc de adrese de email.</p>
<p>Privitor la adresele de email de pe paginile web, am vazut pe Internet  persoane care incearca sa isi protejeze adresele de email inlocuind "@"  cu "[at]" si "." cu "[dot]". Aceasta metosa are doua dezavantaje: primul  este ca se pot scrie scripturi care foarte usor pot sparge acest  sistem: scrptul cauta in codul-sursa "[at]" in loc de "@". Deci va  obtine adresa de email in acest format: accesinterzis[at]gmail.com.  Urmatorul pas este sa inlocuiasca "[at]" cu "@" folosind functia PHP  str_replace() si va obtine intr-un sfarsit adresa de email adevarata. Al  doilea dezavantaj al metodei este ca adresa de email arata urat.  Asadar, cea mai buna cale de a proteja o adresa de email este de a o  genera pe ecran folosind Javascript asa cum am facut eu in <a title="Contact" href="../index.php/contact/" target="_blank">pagina mea de contact</a>. Avem nevoie doar de cateva  linii de cod:</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot;&gt;
var first_half = &quot;accesinterzis&quot;;
var at = &quot;@&quot;;
var second_half = &quot;gmail.com&quot;;
document.write(first_half + at + second_half);
&lt;/script&gt;
</pre>
<p>Utilizand aceste linii de cod Javascript niciun bot nu poate  extrage adresa de email din codul-sursa al paginii web si adresa de  email arata mult mai friendly in browser. Cand lucram cu Javascript,  principala ingrijorare este ca scriptul Javascript ar putea sa nu fie  cross-browser. Dar in acest caz codul este simplu si nu trebuie sa ne  ingrijoram in aceasta privinta.</p>
<p>Astept sugestii de a imbunatati acest algoritm de extragere a adreselor  de email de pe o pagina web.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Cum+extrag+adrese+de+email+de+pe+o+pagina+web%3F+http://fgzck.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+extrag+adrese+de+email+de+pe+o+pagina+web%3F+http://fgzck.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-floodez-o-adresa-de-email/' rel='bookmark' title='Permanent Link: Cum floodez o adresa de email?'>Cum floodez o adresa de email?</a></li>
<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-extrag-adrese-de-email-de-pe-o-pagina-web/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
	</channel>
</rss>

