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.

Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

Fco Díaz {{<< /> /\ |< (-) ..>¨ >>}}

29/12/2005
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.

Viktor Manuel Freire Parada

15/2/2006
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

Eduardo Mendoza

11/5/2006
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

vaLar

10/11/2006
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';

Ana

27/7/2007
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.

antonio

13/11/2007
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
FAQ relacionadas
Volver al árbol de categoríasVolver al árbol de categorías