Menu

$_POST si $_GET

In PHP avem nevoie foarte mult sa prelucram date trimise din formulare sau sa folosim master page despre care am vorbit in lectia instructiunea switch ei bine acestea doua si multe alte probleme care nu-mi vin acum in minte au ca rezolvare $_POST si $_GET.

In primul rand REQUEST-urile normale la pagini se fac prin doua metode:

Dar mai sunt si alte tipuri mai rar folosite ca: In exemple voi incerca sa te familializez si cu tipurile de REQUEST: POST si GET

1. $_GET

$_GET este un array in PHP. $_GET in unele cazuri exceptionale care tin de vizitator poate fi si un array multidimensional, aveti grija la tipul unei valori din array deoarece puteti intampina vurnerabilitatea Path Disclousure care este foarte periculoasa in caz ca atacatorul are si un SQLi in site de exemplu, o buna evitare pentru asta poate fi insa oprirea afisarii erorilor cand site-ul nu mai este in contructie.

Creati un fisier numit test.php pe server si adaugati urmatorul cod in el:

<?php  
// folosim htmlspecialchars pentru a filtra variabila.
// Folosirea htmlspecialchars pe un parametru luat de la vizitator este OBLIGATORIE
// folosim scurtatura pentru if pentru a nu intampina eroarea cand $_GET['var'] nu este definit
$var = htmlspecialchars( isset($_GET['var']) ? $_GET['var'] : '' );
echo $var;
?>
Acuma accesati test.php?var=orice-vreti-voi . O sa va apara ceva asemanator cu:

Dupa cum vedeti cu $_GET am putut prelua un parametru din url.

Acum vom incerca acelasi lucru si cu formular HTML. Creeaza un fisier test-get.php si adauga in el:

<?php 
if( isset($_GET['nume']) ):
	echo 'Salut <b>'.htmlspecialchars($_GET['nume']).'</b>! <br/>';
	echo '<a href="?">Vreau sa testez din nou</a>';
else:
	echo '<form>';
		echo '<input type="text" name="nume" placeholder="Numele tau"/>';
		echo '<input type="submit" value="Apasa aici"/>';
	echo '</form>';	
endif;
?>
Puteti testa urmatorul script mai jos:

Folosim htmlspecialchars() pentru a converti toate caracterele care ne pot face rau aplicatiilor din punct de vedere al securitatii. Despre XSS voi vorbii intr-o lectie viitoare, nu uitati sa filtrati tot ce primiti de la vizitator.

Diferentele dintre POST si GET sunt:

1. $_POST

$_POST este asemanator $_GET din punct de vedere al folosirii lui in php. Creati fisierul test-post.php si adaugati in el urmatorul cod:
<?php 
/* Atata timp cat nu salvam sau afisam valoarea primita de la vizitator
 nu este necesar sa o si filtram. Insa este RECOMANDAT!*/
if( isset($_POST['limbaj']) ):
	$_POST['limbaj'] = htmlspecialchars($_POST['limbaj']);
	# folosim $_SERVER['REQUEST_METHOD'] pentru a afla metoda de reuqest folosita
	if($_SERVER['REQUEST_METHOD'] == 'POST'):
		switch ($_POST['limbaj']):
			case 'PHP':
				echo 'Si mie imi place acest limbaj de programare.'
				break;
			
			case 'ASP':
				echo 'Eu urasc acest limbaj de programare.'
				break;

			default:
				echo 'Nu cunosc acest limbaj de programare.'
				break;
		endswitch;
	else:
		echo 'Esti sigur ca metoda folosita pentru REQUEST este cea buna?';
	endif;
else:
	echo '<form method="post">';
		echo '<input type="text" name="nume" placeholder="Limbajul de programare preferat"/>';
		echo '<input type="submit" value="Apasa aici"/>';
	echo '</form>';	
	echo '<hr/>';
	echo '<form method="get">';
		echo '<input type="submit" value="Testeaza si cu metoda GET"/>';
	echo '</form>';	
endif;
?>
Poti testa scriptul mai jos:

Ti-a placut articolul? Asigura-te ca-ti dam de veste cand publicam altele noi.


Tags: Curs Php

Comments Nota 0 din 0