Autor Tema: Tutorial sobre la variable $_GET (Dirigido para Ferdi342)  (Leído 2124 veces)

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Tutorial sobre la variable $_GET (Dirigido para Ferdi342)
« en: 30 de Julio de 2010, 13:40:53 pm »
Hola PHPeros, ayer ferdi me mandó un mensaje privado indicándome que si le podría ayudar con esta variable global y claro, evidentemente le dije
que sí y aquí estoy. La verdad es que es muy fácil su uso. Te explicaré como funciona $_GET y como protegerte de ataques SQL malintencionados.

- Un resumen en dibujo para $_POST[]


- Un resumen en dibujo para $_GET[]



La explocación de $_POST creerás que no viene al cuento pero si importa para diferenciar el uso de $_GET y $_POST. Si has entendido el dibujo,
sigue leyendo lo que viene ahora despues si no, no sigas leyendo hasta que hayas entendido los dibujos.

- El uso de GET
Tal y como te expliqué en el dibujo, $_GET[''] recoge los valores de la barra de direcciones del navegador pero hay que tener mucho cuidado con
el uso que le das ya que te podrían hacer ataques maliciosos. Bueno, aquí un ejemplo del uso de $_GET[''];


<?php
// Imaginemos que la URL es: http://mipaginaweb.com/index.php?usuario=Siquillote&nombre=AngelSamuel
$cadena_uno $_GET[&#39;usuario&#39;]; // Esto recogería Siquillote
$cadena_dos $_GET[&#39;nombre&#39;]; // Esto recogería AngelSamuel.

$texto = &#39;Su nick es &#39;.$cadena_uno.&#39; y su nombre real es &#39;.$cadena_dos.&#39;&#39;;
echo $texto// Devolvería: Su nick es Siquillote y su nombre real es AngelSamuel
?>


Si vas a usar el método GET para hacer consultas a tu base de datos, lo mejor es proteger este metodo con algunas funciones como htmlentities() o htmlspecialchars(). ¿Que hacen estas funciones?. Lo que hacen es pasar una cadena de texto que contenga caracteres html a caracteres como & o &ap o algo así.

Imaginate que en la URL, pusieramos <script>alert('Hola')</script>
 en el navegador no saldría un texto idicando como
 <script>alert('Hola')</script>si no que saldría una alerta diciendo
Hola. Mira la imagen que es lo que saldría:



Por eso siempre hay que proteger las variebles $_POST[] y $_GET[]
con las funciones que te indique antes




- Protegerse de ataques maliciosos sobre $_GET[]
Para evitar lo anterior y posibles SQL injectiones, vamos a poner en practica las funciones para pasar esos caracteres a invalidos para que no nos
puedan hacer nada. Voy a publicar las 2 funciones con 2 ejemplos en el mismo codigo. Mira:

limpiar.php

<?php
<?php
function Limpiar($cadena){
   
$limpiar_uno htmlentities($cadena);
   
$limpiar_dos htmlspecialchars($cadena);
   
$texto = &#39;Con htmlentities: &#39;.$limpiar_uno.&#39;<br> Con htmlspecialchars: &#39;.$limpiar_dos.&#39;&#39;;
        
echo $texto;
}

Limpiar($_GET[&#39;texto&#39;]);
// Prueba a ejecutar este archivo en la siguiente URL: limpiar.php?texto=Loquetedelarealgana. XDD
?>



Bueno, ferdi, pues esto es todo lo que he podido enseñarte, espero que lo hayas entendido a la perfección.
« Última modificación: 30 de Julio de 2010, 13:50:21 pm por Siquillote »

#Fdo. Physlet

Comunidad PHPeros

Tutorial sobre la variable $_GET (Dirigido para Ferdi342)
« en: 30 de Julio de 2010, 13:40:53 pm »

Desconectado ferdi342

  • PHPero Experto
  • *****
  • Mensajes: 734
  • Karma: 8
  • Sexo: Masculino
  • Gúgol
    • Ver Perfil
    • Google - La solución a todo
Re:Tutorial sobre la variable $_GET (Dirigido para Ferdi342)
« Respuesta #1 en: 30 de Julio de 2010, 14:22:41 pm »
Muchas gracias Siquillote :) ¡Lo he entenido perfectamente!

Pero tengo una dudilla.
Haber, la variable $_GET lo que hace es almacenar el valor de $_POST en la barra de direcciónes ¿no es así?.
Bien, pues como hago para que en la barra de direcciónes salga index.php?name=x&apellido=x, los valores no importan a lo que me refiero es a esto:


<?php
// Imaginemos que la URL es: http://mipaginaweb.com/index.php?usuario=Siquillote&nombre=AngelSamuel
$cadena_uno $_GET[&#39;usuario&#39;]; // Esto recogería Siquillote
$cadena_dos $_GET[&#39;nombre&#39;]; // Esto recogería AngelSamuel.

$texto = &#39;Su nick es &#39;.$cadena_uno.&#39; y su nombre real es &#39;.$cadena_dos.&#39;&#39;;
echo $texto// Devolvería: Su nick es Siquillote y su nombre real es AngelSamuel
?>



claro porque diría yo que con solo hacer eso en la barra de direcciónes no saldría ya directamente "http://mipaginaweb.com/index.php?usuario=Siquillote&nombre=AngelSamuel
" ¿o sí? :S


-EDITO-

(PD: En un formulario, si voy a usar "$_GET", ¿debo cambiar esto method="post" por esto method="get"?)
« Última modificación: 30 de Julio de 2010, 14:25:23 pm por ferdi342 »
A veces hay que dejar terminar cosas buenas para que empiecen mejores, How I Met Your Mother

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Tutorial sobre la variable $_GET (Dirigido para Ferdi342)
« Respuesta #2 en: 30 de Julio de 2010, 14:28:20 pm »
No ferdi, la cosa trata de que eso lo hagas tu, cogete el archivo y llamalo por ejemplo get.php, luego vas a tu archivo subido a internet, get.php?usuario=Siquillote&nombre=aaaaa.

Y lo del form, si quieres, hazlo.

#Fdo. Physlet

Desconectado ferdi342

  • PHPero Experto
  • *****
  • Mensajes: 734
  • Karma: 8
  • Sexo: Masculino
  • Gúgol
    • Ver Perfil
    • Google - La solución a todo
Re:Tutorial sobre la variable $_GET (Dirigido para Ferdi342)
« Respuesta #3 en: 30 de Julio de 2010, 14:30:19 pm »
No ferdi, la cosa trata de que eso lo hagas tu, cogete el archivo y llamalo por ejemplo get.php, luego vas a tu archivo subido a internet, get.php?usuario=Siquillote&nombre=aaaaa.

Y lo del form, si quieres, hazlo.

Vale, voy a poner en práctica tu tutorial ;)

Ahh k+, por supuesto ;)
A veces hay que dejar terminar cosas buenas para que empiecen mejores, How I Met Your Mother

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Tutorial sobre la variable $_GET (Dirigido para Ferdi342)
« Respuesta #4 en: 30 de Julio de 2010, 14:30:53 pm »

Gracias ;).

#Fdo. Physlet

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Tutorial sobre la variable $_GET (Dirigido para Ferdi342)
« Respuesta #5 en: 03 de Agosto de 2010, 16:31:09 pm »
Muchas gracias Siquillote :) ¡Lo he entenido perfectamente!

Pero tengo una dudilla.
Haber, la variable $_GET lo que hace es almacenar el valor de $_POST en la barra de direcciónes ¿no es así?.
Bien, pues como hago para que en la barra de direcciónes salga index.php?name=x&apellido=x, los valores no importan a lo que me refiero es a esto:


<?php
// Imaginemos que la URL es: http://mipaginaweb.com/index.php?usuario=Siquillote&nombre=AngelSamuel
$cadena_uno $_GET[&#39;usuario&#39;]; // Esto recogería Siquillote
$cadena_dos $_GET[&#39;nombre&#39;]; // Esto recogería AngelSamuel.

$texto = &#39;Su nick es &#39;.$cadena_uno.&#39; y su nombre real es &#39;.$cadena_dos.&#39;&#39;;
echo $texto// Devolvería: Su nick es Siquillote y su nombre real es AngelSamuel
?>



claro porque diría yo que con solo hacer eso en la barra de direcciónes no saldría ya directamente "http://mipaginaweb.com/index.php?usuario=Siquillote&nombre=AngelSamuel
" ¿o sí? :S


-EDITO-

(PD: En un formulario, si voy a usar "$_GET", ¿debo cambiar esto method="post" por esto method="get"?)
Si quieres que los datos del formulario se procesen por GET, debes cambiar el metodo que usaras en el formulario.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Revancha

  • PHPero Avanzado
  • ****
  • Mensajes: 375
  • Karma: 22
  • Sexo: Masculino
    • Ver Perfil
Re:Tutorial sobre la variable $_GET (Dirigido para Ferdi342)
« Respuesta #6 en: 03 de Agosto de 2010, 20:14:25 pm »
La mejor solución para evitar ataques xss, es utilizar
htmlspecialchars($variableENT_QUOTES);

Simplemente porque el atributo ENT_QUOTES permite escapar cualquier caracter especial a htmlentities.

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Tutorial sobre la variable $_GET (Dirigido para Ferdi342)
« Respuesta #7 en: 06 de Agosto de 2010, 12:27:41 pm »
La mejor solución para evitar ataques xss, es utilizar
htmlspecialchars($variableENT_QUOTES);

Simplemente porque el atributo ENT_QUOTES permite escapar cualquier caracter especial a htmlentities.

No sabía yo eso...., voy a probarlo a ver.

#Fdo. Physlet