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 offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
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 offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
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 offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
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 26-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
register_globals=on hace que puedas acceder a los elementos de arreglos como $_POST como si fueran variables, es decir, puedes usar $nombre, en lugar de $_POST['nombre']. Si aun poniendo esa opción no te funcionó entonces te preguntaría: ¿reiniciaste el servidor después del cambio?

De cualquier forma, el uso de register_globals = on no se recomiendo así que mejor trabaja directamente con $_POST.

// Saludos
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
Va de fabula con la opcion corregida de maeyanes, asi que gracias a todos.

PD: Con malicia...
Cita:
Empezado por Roman
De cualquier forma, el uso de register_globals = on no se recomiendo así que mejor trabaja directamente con $_POST.
¿Eins? ¿Ezo que tiempo verba ez?

Jejeje.

Un {$_POST['Abrazo']}
Responder Con Cita
  #10  
Antiguo 27-10-2005
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
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
  #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
De las 3 formas que muestras, ¿cual es la que recomiendas tu?.

PD: Asias por la info

Un abrazo cansadito.

Papulo.
Responder Con Cita
  #12  
Antiguo 27-10-2005
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
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
  #13  
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
  #14  
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
  #15  
Antiguo 28-10-2005
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Pues nada rizaremos el rizo
Código PHP:
    if( !ini_get('register_globals') ) import_request_variables("PGC"); 
Si tenemos "register_globals" a off podemos crear variables a partir de los arrays $_POST, $_GET y/o $_COOKIE. Esta funcion nos permite además añadir un prefijo para evitar solapamientos de nombres.

El porque de utilizar los arrays y no las variables son temas de seguridad, por poner un ejemplo:
Supongamos que alguien quiere trastear nuestra página modificando alguna variable de sesion, lo mas facil es que intente meter o modificar variables por metodo GET (o POST):
Código PHP:
mipagina.php?usuario=...&clave=... 
Pero si trabajamos con los arrays que crea PHP para diferenciar la procedencia y ambito de las variables, en este caso con el array $_SESSION evitamos que alguien pueda modificar valores almacenados en estos arrays.
Hay que tener en cuenta que si tenemos "register_globals" a ON todas las variables se hacen globales con el problema que exite de que se machaquen unas a otras, con lo que un usuario podría manipular facilmente nuestra web.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #16  
Antiguo 28-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
Cita:
Empezado por kayetano
Pues nada rizaremos el rizo
Sigamos con el peinado

Hasta donde yo recuerdo (en cuanto pueda hará la prueba), en el modo antiguo, cuando no se usaba register_globals = OFF, una vez que registrabas una variable de sesión, ésta no podía modificarse con valores provenientes del GET o POST.

// Saludos
Responder Con Cita
  #17  
Antiguo 16-12-2005
ctronx ctronx is offline
Miembro
 
Registrado: jun 2004
Posts: 214
Poder: 20
ctronx Va por buen camino
Unhappy

en lugar de hacer un nuevo hilo creo que lo correcto es seguir con este ya que tengo en mismo problema he seguido todo lo explicado en este hilo con el ejemplo sencillo planteado desde el inicio y No me funciona Ni me manda ningun error, simplemente al presionar el boton y al esperar ver el contenido de las variables solo me aparace una pagina en blanco y No me muestra el valor de las variables.

Ya verifique y copie directamente el codigo de este ejemplo para no tener errores de sintaxis, si alguien me puede ayudar de antemano muchas gracias.
Responder Con Cita
  #18  
Antiguo 16-12-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 ctronx
(...) si alguien me puede ayudar de antemano muchas gracias.
¿Lo siguiente te va bien?


Código PHP:
<html>
 <head>
  <title>
   ClubDelphi.com
  </title>
 </head>
 <body>
  <?php if(!isset($_POST['nombre_usuario'])) { ?>
   <form id="frmejemplo" action="ejemplo.php" method="post">
    <input type="text" name="nombre_usuario">
    <input type="submit" value="Enviar">
   </form>
   <?php } else { ?>
    <p>
     <!--
       La variable "nombre_usuario" está establecida:
       entendemos que ya se envió el formulario, pues.
     -->
     Dices que tu nombre es: <?php echo $_POST['nombre_usuario']; ?>
   </p>
  <?php ?>
 </body>
</html>
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #19  
Antiguo 16-12-2005
ctronx ctronx is offline
Miembro
 
Registrado: jun 2004
Posts: 214
Poder: 20
ctronx Va por buen camino
Thumbs up

Gracias ya resolvi el problema, el tonto de mi tengia un error de sintaxis.
Responder Con Cita
  #20  
Antiguo 16-12-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
Cita:
Empezado por ctronx
tengia un error de sintaxis.
¿Y por qué te aparecía la página en blanco? Posiblemente tengas la directiva display_errors apagada. Eso está bien para la versión en producción, pero para desarrollo te evita horas de saber qué pasa.

// 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 12:20:27.


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