Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-10-2005
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Activar register_globals para formularios POST

Estoy practicando con el tema de pasar variables de un formulario a otro, cuando me doy de morros con que, despues de tropotocientos intentos, creyendo que era problema de sintaxis
Código:
  <HTML>
  <HEAD>
  <TITLE>formulario.html</TITLE>
  </HEAD>
  <BODY>
  <FORM METHOD="POST" ACTION="destino2.php">
  Nombre<br>
  <INPUT TYPE="TEXT" NAME="nombre"><br>
  Apellidos<br>
  <INPUT TYPE="TEXT" NAME="apellidos"><br>
  <INPUT TYPE="SUBMIT">
  </FORM>
  </BODY>
  </HTML>
Ya veis, un codigo basico para ver si me va lo del POST o no

El formulario receptor es el siguiente
Código PHP:
  <HTML>
  <HEAD>
  <TITLE>destino2.php</TITLE>
  </HEAD>
  <BODY>
  <?
  
echo "Variable \$nombre: $nombre <br>\n";
  echo 
"Variable \$apellidos: $apellidos <br>\n"
  
?>
  </BODY>
  </HTML>
Pero el unico resultado que me da es el siguiente

Variable $nombre:
Variable $apellidos:

He trasteado en c:\windows\php.ini
He activado la opcion de register_globals=on

Aun asi sigo con el mismo resultado.
¿Alguna idea de que es lo que me falla o falta?
¿Como tengo que activar exactamente eso?

Yo, mientras espero alguna respuesta, seguire indagando, que no me quedo quieto.

Gracias a los que lo leais

Un abrazo desde morpheo.

Papulo.

Última edición por papulo fecha: 26-10-2005 a las 17:29:24. Razón: Fallo en las etiquetas XD
Responder Con Cita
  #2  
Antiguo 26-10-2005
[maeyanes] maeyanes is online now
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Te falta poner:

Código PHP:
<HTML>
  <HEAD>
  <TITLE>destino2.php</TITLE>
  </HEAD>
  <BODY>
  <?
  
echo "Variable \$nombre: $_POST['nombre'] <br>\n";
  echo 
"Variable \$apellidos: $_POST['apellidos'] <br>\n"
  
?>
  </BODY>
  </HTML>
Ya que estás enviando los valores mediante el método POST del formulario, es necesario que uses el arreglo $_POST.

Del manual de PHP:

Cita:
Empezado por Manual PHP
Variables HTTP POST: $_POST
Nota: Introducidas en 4.1.0. En versiones anteriores, use $HTTP_POST_VARS.

Una matriz asociativa de variables pasadas al script actual a través del método HTTP POST. Global automáticamente en cualquier contexto.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo de un script. No necesita hacer global $_POST; para acceder a ella dentro de funciones o métodos, como lo hace con $HTTP_POST_VARS.

$HTTP_POST_VARS contiene la misma información inicial, pero no es autoglobal. (Note que $HTTP_POST_VARS y $_POST son variables diferentes y que PHP las trata como tal)

Si la directiva register_globals está definida, entonces éstas variables también estarán disponibles en el contexto global del script; i.e., por separado de las matrices $_POST y $HTTP_POST_VARS. Para información relacionada, consulte el capítulo de seguridad titulado Uso de Registros Globales. Estas globales individuales no son autoglobales.

Saludos...
Responder Con Cita
  #3  
Antiguo 26-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por maeyanes
Ya que estás enviando los valores mediante el método POST del formulario, es necesario que uses el arreglo $_POST.
Pues es curioso: yo probé el código tal cual en el servidor del ClubDelphi porque pensaba que el problema estaba en la sintaxis utilizada en la función "echo", pero, para mi sorpresa la cosa funcionó tal como espera papulo. O sea, que acaso no vaya por mal camino buscando algo en la configuración de PHP... no sé qué decir...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 26-10-2005
[maeyanes] maeyanes is online now
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Pues no se como le hayas hecho... :P

La verdad en PHP no soy gurú ni mucho menos, lo que si es que cada vez que uso formularios, en el script receptor siempre uso el arreglo $_POST para recibir los valores enviados mediante el método POST.

Puede ser, y esto basándome en el resultado de tus pruebas, que también en la forma que indicas y que trató de usar papulo orginalmente, se pueda lograr, pero no se si sea la correcta y la más segura.



Saludos...
Responder Con Cita
  #5  
Antiguo 26-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por maeyanes
Pues no se como le hayas hecho... :P
No hize nada. Bueno, copiar y pegar el código de más arriba, pero, nada más.


Cita:
Empezado por maeyanes
La verdad en PHP no soy gurú ni mucho menos (...)
Y yo mucho menos aún. Seguro.


Cita:
Empezado por maeyanes
Puede ser, y esto basándome en el resultado de tus pruebas, que también en la forma que indicas y que trató de usar papulo orginalmente, se pueda lograr, pero no se si sea la correcta y la más segura.
Eso no seré yo quien lo ponga en duda. Muy bien puede ser como dices.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 26-10-2005
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Uiiisss!!!!

Con la "correccion" me ha salido esto:
Código:
   Parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE,
  expecting T_STRING or T_VARIABLE or T_NUM_STRING in
  c:\wamp\www\pruebas\destino2.php on line 7
  
Por otra parte, como comenta el compañero DEC, el ejemplo es tan sumamente basico, que el hecho de que no me vaya, es porque hay algo de la configuracion que no esta bien configurado.
Apelo a la experiencia de la gente para que me ayude a resolverlo mientras yo trasteo el php.ini y lo que haga falta.

PD: gracias por responder tan rapido.

Un abrazo de formulario a formulario.

Papulo.
Responder Con Cita
  #7  
Antiguo 26-10-2005
[maeyanes] maeyanes is online now
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
El error que te sale con la corrección que te puse es por la forma en que se referencia al arreglo $_POST, la forma correcta sería:

Código PHP:
<HTML> 
  <HEAD> 
  <TITLE>destino2.php</TITLE> 
  </HEAD> 
  <BODY> 
  <? 
  
echo "Variable \$nombre: {$_POST['nombre']} <br>\n"
  echo 
"Variable \$apellidos: {$_POST['apellidos']} <br>\n" 
  
// También puedes usar:
  
echo "Variable \$nombre: " $_POST['nombre'] . " <br>\n"
  echo 
"Variable \$apellidos: " $_POST['apellidos'] . " <br>\n"
  
?> 
  </BODY> 
  </HTML>

Saludos...
Responder Con Cita
  #8  
Antiguo 27-10-2005
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Voy a realizar un pequeño resumen de como tratar las variables que se pasan por el metodo POST.

Basicamente existen dos formas de pasar estas variables que dependen del estado de "register_globals" dentro de PHP.INI:
- Si esta en "on" puedes acceder a las variables directamente por su nombre. Si no me equivoco hay que reiniciar el servidor una vez se a cambiado este valor.
- Si esta en "off" solo puedes acceder a traves de array $_POST o $HTTP_POST_VARS (depende de la version de PHP que uses). Estos arrays tambien se pueden usar si "register_globals" esta en "on".

Ahora pasamos a como mostrar esta información dentro de una cadena de texto, que como siempre depende de la versión de PHP que uses:
- Si trabajas directament con el nombre de la variable no hay ningun problema.
Código PHP:
  echo "mi variable es $miVariable";  // Con dobles comillas
   
echo "mi variable es "$miVariable// Con dobles o simples comillas 
- Si trabajamos con los arrays:
Código PHP:
  echo "mi variable es "$_POST["miVariable"]; // Para cualquier version de PHP
   
echo "mi variable es $_POST[miVariable]"// Para la versión 4 (no lo he probado en la 3)
   
echo "mi variable es {$_POST[miVariable][1]}"// Arrays de varias dimensiones, para la version 4 
Espero que te sirva de algo.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #9  
Antiguo 27-10-2005
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
De las 3 formas que muestras, ¿cual es la que recomiendas tu?.

PD: Asias por la info

Un abrazo cansadito.

Papulo.
Responder Con Cita
  #10  
Antiguo 27-10-2005
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Por claridad te aconsejo que trabajes con el array $_POST, y que a la hora de mostrar el contenido de una valor lo hagas asin:
Código PHP:
echo "mi variable es "$_POST["miVariable"]; 
Al menos yo lo veo más claro, saves a primera vista que parte es texto y que parte es variable y de donde sale y como han mandado esa variable.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #11  
Antiguo 27-10-2005
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Eso me pensaba, es el unico que resalta claramente que trabajo con $_POST y la variable a la que pertenece.

Un abrazo de despues de la siesta.

Papulo.
Responder Con Cita
  #12  
Antiguo 27-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Excelente resumen de Kayetano.

Hay otra forma- sucia podría decirse - de acceder a las variables del post directamente aún teniendo register_globals en OFF:

Código PHP:
extract($_POST);

// aquí ya pueden accederse a las variables 
Supongo que no es recomendable por la misma razón que no se recomeinda poner register_globals en ON, aunque la verdad no me queda claro el porqué. Quizá el compañero Kayetano nos pueda aclarar el punto.

Lo que sí, es que en ocasiones, cuando se debe trabajar con un código que se escribió sin hacer uso de $_POST y no tenemos tiempo de cambiar todas las referencias, extract nos puede ayudar temporalmente mientras corregimos el resto.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:55:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi