Diferencias de utilizar $_POST o la variable directamente

Hay alguna diferencia entre tomar una variable directamente o del array desde donde nos llega. Ejemplo: ¿tomar $var es lo mismo que tomar...

La FAQ Diferencias de utilizar $_POST o la variable directamente tiene

Pertenece a la categoría:

Pregunta
Hay alguna diferencia entre tomar una variable directamente o del array desde donde nos llega.


Ejemplo: ¿tomar $var es lo mismo que tomar $_POST[“var”]?



Respuesta de Eduardo Martínez
La diferencia está en q si tomas la variable directamente, y el servidor, no tiene activado el register_globals, no te funcionará. por el contrario, si usas los arrays, te funcionará tanto con register_globals activado o no, por tanto es más recomendable lo segundo si piensas hacerlo en varios servidores.


También es más seguro usar los arrays, ya que te aseguras de q los datos vienen por el método que tú querías.

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios
Fueron enviados 6 comentarios a la faq
6 comentarios revisados:
Por: Fco Díaz {{<< /> /\ |< (-) ..>¨ >>}}
29/12/05
100% recomendado usar los arreglos $_POST,$_GET y $_SESSION en lugar de las variables directas, ademas si usas los arreglos incluso al ser mas seguro puedes enviar variables dobles... por ejemplo puedo tener una finta con el campo var que en la direcion url le voy a pasar
index.php?var=esta%20variable
y en un form dentro de un formulario que envie por post puedo poner la misma variable entoces puedo recibir una $var por post y una por get.. ademas de que si usas la variable directa esto ten por seguro que te va a dar muchos problemas cuando mudes de servidor, y con los arreglos estas 100% seguro que funcionaran... si lo que te da flojera es teclerear $_POST[var], te doy los siguente cosejos
puesdes copiar el arreglo a otro con un nombre mas corto x ejemplo
$P=$_POST
así hago una referencia a el arreglo $_POST desde la variable $P así en lugar de escribir

-------------------------------------
$_POST['var'];
escribo
$P['var'];
----------------------------------------

otro consejo es no usar las ' si no lo requerimos
un arreglo puede usar una cadena como indice, esta si no tiene espacio puede ser una costante, el uso de cadenas es para que sea pueda recuperar direciones del arreglo de forma dinamica pero si no estamos haciendo esto podemos ahoranolas
ejmplo
$P=$_POST;
$P[var];

así me he arado escribir _POST y un par de comillas

si el idice lleva espacio este deve de ir entre comillas forzosamente... ha tambie con esto evitamos en la cocatenacion de cadenas tener que abrir y cerrar las comillas
ejemplo
con comillas sencillas
echo "La que sigue es una variable".$_POST['var']."<br>";
si comillas no ahoramos el punto y las dos ".
echo "La que sigue es una variable $_POST[var]";
en resumen con esto en lugar de escribir
$_POST['var'];
solo escribo
$P[var];
pero recuerden que deven de hacer la referencia
$P=$_POST;

Fco Díaz
Romita Gto. Mex.
Por: Viktor Manuel Freire Parada
15/2/06
Es muy cierto que activando el register_globals=ON en el php.ini funciona el paso directo de varibles de una pagina a otra, o por lo menos eso he leido en varios foros, mas a mi no me funciona, yo tengo instalada la version 5 de php con las versiones 5 de mysql y 2 de apache y el paso de variable no se lleva a cabo; en la pagina 1 hago <a href="2.php?$cod=<php echo $campos[cod_categoria]; ?>">pag 2 </a> y en la pagina 2 hago un <?php echo $cod; ?> y no me muestra el valor de la variable.
si tienen una sugerencia o solucion a mi problema se los agradezco, mi msn es vion_v@hotmail.com
Por: Eduardo Mendoza
11/5/06
Como puedo recuperar la informacion y ponerla dentro del codigo fuente es decir algo asi:


<?
$tunombre=$_POST['nombre'];
$tuemail=$_POST['email'];
$asunto = "Felicidades";
$master = $_post["miemail"];
$receptor = $_post["emailamigo"];
$texto1='<html> <head>
<title> $titulo </title>
<link rel="stylesheet" type="text/css" href="http://www38.websamba.com/elmasternet/sddm.css" /
<link rel="stylesheet" href="http://www38.websamba.com/elmasternet/style1.css" type="text/css" media="screen">
</head><Body bgcolor="black" text="ffffff">
<bgsound src=http://www38.websamba.com/elmasternet/direccion.wav loop=1>
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td align="center" valign="top">
<table width="750" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><img src="http://www38.websamba.com/elmasternet/images/temp2_01.jpg" width="120" height="49"></td>
<td><img src="http://www38.websamba.com/elmasternet/images/temp2_02.jpg" width="125" height="49"></td>
<td><img src="http://www38.websamba.com/elmasternet/images/temp2_03.jpg" width="150" height="49"></td>
<td><img src="http://www38.websamba.com/elmasternet/images/temp2_04.jpg" width="150" height="49"></td>
<td><img src="http://www38.websamba.com/elmasternet/images/temp2_05.jpg" width="205" height="49"></td>
</tr><tr>
<td><img src="http://www38.websamba.com/elmasternet/images/temp2_06.jpg" width="120" height="45"></td>
<td><img src="http://www38.websamba.com/elmasternet/images/temp2_07.jpg" width="125" height="45"></td>
<td colspan="3" background="http://www38.websamba.com/elmasternet/images/menu-bg.jpg" width="505" height="45">
</td>
</tr>
</table>
<br></center>
<font color="ffffff">Hola el mail enviado a este mail fue: $_post["emailamigo"]
</body>
</html>';

/* Para enviar correso HTML se debe especificar el Content-type header. */
$headers = "MIME-Version: 1.0 ";
$headers .= "Content-type: text/html; charset=iso-8859-1 ";

mail($master, $asunto, $texto1, $headers);


?>
Sin embarho aparece asi en el mail:
Hola el mail enviado a este mail fue: $_post["emailamigo"]

pero debe aparecer:
Hola el mail enviado a este mail fue: fulanito@mail.com
********************************************
o si hay algun metodo porfavor diganme
Por: vaLar
10/11/06
Recuerda que para colocar un valor entre una cadena se emplea el operador (punto) .
Por ejemplo
$texto = "hola " . $nombre . "mucho gusto";
o bien:
$texto = 'Adios' . $nombre . 'gracias por la visita';
Por: Ana
27/7/07
Respuesta para Edmundo:

Pasa que estás programando en PHP sin habaerte leído el manual. Para controlar los ficheros subidos NO SE USA el array superglobal $_POST, sino el $_FILES. Léete el manual de PHP antes de programar en él.
Por: antonio
13/11/07
ojala me ayuden no puedo caprurra las variables q envio de una pagina a otra utilizo el metodo get peor nada mi archivo php.ini y alo modifique poniendole on o off a eso de registrer_global pero nada si alguien me pueede ayudar..ahh y ya verifique todo el codigo y me deberia funcionar ....aparte provee insertardo en mi base de datos sin pasar variables y esta todo ok ..el unico problmea es q con el $_get o $_post o $request no me funca nada

Volver al árbol de categoríasVolver al árbol de categorías
Alojados en el grupo