Foros del Web » Programando para Internet » PHP »

enviar cadena de parametros como texto plano

Estas en el tema de enviar cadena de parametros como texto plano en el foro de PHP en Foros del Web. Hola a todos, Soy bastante nuevo en esto de la programacion y ademas lo que se es de forma autodidacta. Se me presenta un problema ...
  #1 (permalink)  
Antiguo 22/01/2014, 10:00
 
Fecha de Ingreso: enero-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 10 años, 2 meses
Puntos: 0
enviar cadena de parametros como texto plano

Hola a todos,

Soy bastante nuevo en esto de la programacion y ademas lo que se es de forma autodidacta. Se me presenta un problema y no se como abordarlo.

necesito hacer un programa que envia a una url un par de parametros por POST. Hasta aqui sin problemas:

Código PHP:
<form action="{$url}" method="post" id="formulario" class="hidden" >    
       <
input type="hidden" name="valor1"       value="{$valor1}" />
       <
input type="hidden" name="valor2"       value="{$valor2}" />
       <
input type="hidden" name="valor3"       value="{$valor3}" />
    
</
form

La url de destino, me devuelve por GET

Código PHP:
$valor2  $_GET["valor2"];
$valor3  $_GET["valor3"]; 

y aqui viene el problema:

1º.- Como confirmo que el "valor2" recibido sea igual que el enviado?
2º.- en el caso de que el valor sea confirmado, tengo que devolver una cadena de parametros como texto plano.

seria asi?

Código PHP:
 echo "valor1=".$valor1&"valor2="$valor2&........."valor8=".$valor8

Muchas gracias
  #2 (permalink)  
Antiguo 22/01/2014, 10:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: enviar cadena de parametros como texto plano

Si estás enviando los datos a través del método POST, debes recibirlos por el mismo método.

Código PHP:
Ver original
  1. $valor2  = $_POST["valor2"];
  2. $valor3  = $_POST["valor3"];

Por otro lado, no es necesario que corrobores que el dato que se recibió, sea igual al que se envió, puesto que no hay forma (o al menos no la conozco) de modificar un dato enviado antes de recibirlo. Lo que sí puedes comprobar es si la variable está definida, mediante la función isset.

Código PHP:
Ver original
  1. if (isset($_POST["valor2"]){
  2.     $valor2 = $_POST["valor2"];
  3. }
  4. else{
  5.     $valor2 = "La variable no está definida";
  6. }
  7.  
  8. echo $valor2; //Imprime el valor de $_POST["valor2"] o el mensaje si no está definida

Más información acerca de la manera de recibir valores por el método POST:
- http://php.net/manual/es/reserved.variables.post.php

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 25/01/2014, 12:19
 
Fecha de Ingreso: enero-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: enviar cadena de parametros como texto plano

Lo primero Alexis88 es agradecerte la respuesta.

Pues es que me piden que yo pase a una url lo datos por POST y despues esa url me los devuelve por GET

Lo de verificarlo es porque puede que la url me envie esas 2 variables y pertenezcan a otro formulario. No se si me explico. Es como si yo tengo una base de datos con piezas del coche. Le mando por POST a la url el modelo y matricula del coche. El me devuelve por GET modelo y matricula. y yo confirmo en mi base de datos ese modelo y matricula. Y ahora una vez confirmado le envio color, llantas, motor, extras, .... no se si me explico.

PD: de todas maneras le voy a echar un ojo a la info que me has pasado. Todo viene bien ;)

Gracias
  #4 (permalink)  
Antiguo 26/01/2014, 17:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: enviar cadena de parametros como texto plano

Cuando envías datos a través de la URL, lo estás haciendo mediante el método GET, no es posible hacerlo mediante POST pues no trabaja de esa manera.

POR GET:
Código HTML:
Ver original
  1. <a href = "ejemplo.php?nombre=Juan&apellido=Perez"> ENLACE </a>
Código PHP:
Ver original
  1. echo $_GET["nombre"]; //Imprime Juan
  2. echo $_GET["apellido"]; //Imprime Perez

POR POST:
Código HTML:
Ver original
  1. <form action = "ejemplo.php" method = "post">
  2.     Nombre: <input type = "text" name = "nombre" value = "Juan" />
  3.     Apellido: <input type = "text" name = "apellido" value = "Perez" />
  4.     <input type = "submit" value = "Enviar" />
  5. </form>
Código PHP:
Ver original
  1. echo $_POST["nombre"]; //Imprime Juan
  2. echo $_POST["apellido"]; //Imprime Perez

Teniendo claro esto, la consulta a la BD la realizarías enviando los datos por cualquiera de estos dos métodos, con la diferencia de que a través del método GET, verás en la URL los valores que envías, además, para realizar consultas, se recomienda utilizar el método GET que es de tipo constructor (para consultar datos en la BD), a diferencia del método POST, que es de tipo destructor (para modificar datos en la BD).

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 27/01/2014, 05:47
 
Fecha de Ingreso: enero-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: enviar cadena de parametros como texto plano

Hola Alexis88,

No es que yo envie datos a través de una URL, si no que los envio a una URL por el metodo POST.
Tengo que hacer una llamada a un servidor mediante la URL http://www.xxxxxx. pasandole los parametros descritos en el 1º post mediante el metodo POST.
A su vez, dicho servidor, realizara una llamada a una URL de mi web, por el metodo GET, pasandome los valores descritos mas arriba.
y por ultimo yo debo devolver a la URL una cadena de paramentros con el formato descrito mas arriba.
Código PHP:
echo "valor1=".$valor1&"valor2="$valor2&........."valor8=".$valor8
  #6 (permalink)  
Antiguo 27/01/2014, 08:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: enviar cadena de parametros como texto plano

Los datos no se envían a una URL, se envían a un archivo que los procesará, la URL es una secuencia de caracteres que identifican al archivo o página.

¿Podrías mostrarnos el código con el que haces ese retorno de valores? y ¿por qué tienes que consultar a un segundo archivo?, ¿no puedes hacer la consulta a un solo archivo?. Como haces consultas que devuelven una respuesta al archivo que generó la consulta, puedes usar Ajax y si no deseas trabajar de manera asíncrona, usa una sesión para que recojas los datos en cualquier archivo en donde inicies o mantengas la sesión.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 27/01/2014, 08:41
 
Fecha de Ingreso: enero-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: enviar cadena de parametros como texto plano

Te explico, es para hacer el "modulo de pago de un TPV".
El banco me ha dado las siguientes pautas y es lo que yo he interpretado:

1º- Una vez pulsado el boton de pago, este deberá llamar al servidor mediante la URL https://www.xxxxx/cgi-bin/tpv/ServletTPVM y pasarle 3 parametros por POST.
2º- Este servidor(banco), llamará a una URL de verificacion (en mi web) pasando por metodo GET 2 de los 3 parametros anteriores.
3º- El programa residente en el servidor del comercio deberá devolver una cadena de parametros con el siguiente formato(texto plano):
Código PHP:
echo "valor1=".$valor1&"valor2="$valor2&........."valor8=".$valor8
Esto es basicamente lo que me pide el banco y lo que yo hasta ahora e interpretado en los post anteriores.


Sinceramente gracias por tu ayuda.

PD: No busco que nadie me de el codigo masticado, solo pido un poco de orientacion.
  #8 (permalink)  
Antiguo 27/01/2014, 09:04
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: enviar cadena de parametros como texto plano

Ya va quedando más claro el tema. Para empezar, esa cadena no está bien formada, debería ser así:

Código PHP:
Ver original
  1. echo "valor1=$valor1&valor2=$valor2&valor3=$valor3";

Para que no tengas problemas con los nombres de las variables, utiliza nombre únicos, por ejemplo, para este módulo, utiliza nombres que no usarás en ningún otro archivo de tu página, así tendrás la seguridad de que $_GET['valor1'] es un valor recibido de la página del banco.

Recuerda que cuando usas las comillas dobles, se toma el valor de las variables. Ahora bien, no sé cómo haces el retorno de esa cadena, pero se me ocurre que lo puedas hacer mediante la función header y ahí le concatenas la cadena.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 29/01/2014, 04:31
 
Fecha de Ingreso: enero-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: enviar cadena de parametros como texto plano

Gracias de nuevo,

el problema de las variables, es que el banco me ha dado un listado de las variables que debo usar. Tanto para yo pasarle los datos, como para recibirlos. Sus nombres, la sintaxis y su longitud....y de ahí no me puedo mover.
  #10 (permalink)  
Antiguo 29/01/2014, 09:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: enviar cadena de parametros como texto plano

Si es así, entonces no uses en otros archivos los nombres de las variables que te dieron, así evitarás conflictos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 31/01/2014, 06:57
 
Fecha de Ingreso: enero-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: enviar cadena de parametros como texto plano

Hola Alexis88,

Asi lo haré.


Me puedes indicar un manual o algo donde leer y sacar la info que ando buscando o guiarme un poco?.
  #12 (permalink)  
Antiguo 31/01/2014, 07:13
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 15 años, 11 meses
Puntos: 326
Respuesta: enviar cadena de parametros como texto plano

Siento meterme en la conversación... pero hay algo con lo q no estoy de acuerdo..

Cita:
Iniciado por Alexis88 Ver Mensaje
...Por otro lado, no es necesario que corrobores que el dato que se recibió, sea igual al que se envió, puesto que no hay forma (o al menos no la conozco) de modificar un dato enviado antes de recibirlo...
Sí se puede. Es factible, y posible, hacerlo. En este caso, imagino que el formulario se envia via JS... pero.. ¿Y si lo he desactivado?

Con chrome mismo, sin instalar nada, puedo "inspeccionar el dom", buscar el input hidden, que no veo, si.. y modificar su valor.

Y después enviar el formulario.

Asiq, sí, se puede modificar. ¿Que lo hará cualquiera? NO. Pero modificarse se puede.
__________________
>> Eleazan's Source
>> @Eleazan
  #13 (permalink)  
Antiguo 31/01/2014, 18:35
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: enviar cadena de parametros como texto plano

Cita:
Iniciado por Eleazan Ver Mensaje
Siento meterme en la conversación... pero hay algo con lo q no estoy de acuerdo..
Cita:
Iniciado por Alexis88 Ver Mensaje
Por otro lado, no es necesario que corrobores que el dato que se recibió, sea igual al que se envió, puesto que no hay forma (o al menos no la conozco) de modificar un dato enviado antes de recibirlo.
¿Estás en desacuerdo con que no conozca una manera de modificar un dato enviado antes de recibirlo?

Cita:
Iniciado por Eleazan Ver Mensaje
Sí se puede.
¿Cómo?

Última edición por Alexis88; 31/01/2014 a las 20:27
  #14 (permalink)  
Antiguo 04/02/2014, 05:08
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 15 años, 11 meses
Puntos: 326
Respuesta: enviar cadena de parametros como texto plano

Cita:
Iniciado por Alexis88 Ver Mensaje
¿Estás en desacuerdo con que no conozca una manera de modificar un dato enviado antes de recibirlo?
No. Estoy en desacuerdo de que no se pueda... no en que no lo conozcas ;)

Cita:
Iniciado por Alexis88
¿Cómo?
Es fácil. ¿Tienes chrome?

Haz un formulario simplón, con un campo "Hidden", y que pase las variables por post...

Algo así deberia servirte:
Código HTML:
<html>
    <body>
        <form method="POST" action="prueba.php">
            <input type="hidden" name="Variable" value="tres">
            <input type="submit">
        </form>
    </body>
</html> 
Y en prueba.php algo sencillote:
Código PHP:
<?php
echo '<pre>';
print_r($_POST);
echo 
'</pre>';
?>
Como ves, no es algo complicado, es sólo una prueba de concepto.

Ahora, abre el html con google chrome. Busca el boton submit, dale al segundo boton del raton, y click en "Inspeccionar Elemento". Busca el input hidden, que tiene q salir cerca del boton, y dale doble click sobre value. Modificalo al gusto, y dale al boton.

Como ves, has cambiado el valor.

Conclusión: Sin instalar nada en el ordenador, has sido capaz de cambiar un valor hidden. No es algo 100% seguro de q un usuario `avanzado` pueda cambiarlo. No nos hemos metido con temas de cURL o de envios de formularios desde otro sitio (que tb se puede xD).

Sólo era un apunte de que se podía, simplemente :)

PD: He estado algo ausente, siento haber tardado en contestar :P
__________________
>> Eleazan's Source
>> @Eleazan
  #15 (permalink)  
Antiguo 04/02/2014, 10:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: enviar cadena de parametros como texto plano

Cita:
Iniciado por Eleazan Ver Mensaje
No. Estoy en desacuerdo de que no se pueda... no en que no lo conozcas ;)
¿De casualidad leíste la parte en la que dije:
Cita:
Iniciado por Alexis88 Ver Mensaje
puesto que no hay forma (o al menos no la conozco)
Si la viste, te darás cuenta que no estoy afirmando algo, sino que lo supongo y por ende, pongo en duda, pues, como lo indico, no conozco una forma de modificar un dato luego de haber sido enviado. Lo que me muestras no es a lo que me refiero, ¿me crees tan noob como para no saber modificar el valor de un elemento del DOM antes de enviarlo? . Date cuenta, no es lo mismo, porque yo hago referencia a cuando el o los datos YA FUERON ENVIADOS, es decir, cuando ya empredieron el camino hacia el lado del servidor, tú los estás editando del lado del cliente antes de enviarlos.

Probablemente no interpretaste bien lo que dije o te haga falta practicar comprensión de lectura (lo digo en buena onda, no por ofender, a todos siempre nos faltará practicar algo), pero lo que expones, no es a lo que me refería.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #16 (permalink)  
Antiguo 04/02/2014, 10:41
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 15 años, 11 meses
Puntos: 326
Respuesta: enviar cadena de parametros como texto plano

Cita:
Iniciado por Alexis88 Ver Mensaje
¿De casualidad leíste la parte en la que dije:


Si la viste, te darás cuenta que no estoy afirmando algo, sino que lo supongo y por ende, pongo en duda, pues, como lo indico, no conozco una forma de modificar un dato luego de haber sido enviado. Lo que me muestras no es a lo que me refiero, ¿me crees tan noob como para no saber modificar el valor de un elemento del DOM antes de enviarlo? . Date cuenta, no es lo mismo, porque yo hago referencia a cuando el o los datos YA FUERON ENVIADOS, es decir, cuando ya empredieron el camino hacia el lado del servidor, tú los estás editando del lado del cliente antes de enviarlos.

Probablemente no interpretaste bien lo que dije o te haga falta practicar comprensión de lectura (lo digo en buena onda, no por ofender, a todos siempre nos faltará practicar algo), pero lo que expones, no es a lo que me refería.

Saludos
AS u want.

Realmente, creo que el usuario preguntaba por si se podia modificar el valor que el servia en el input en php entre que lo sirve, y que le llega al servidor la respuesta. No sólo entre que envias el proceso, y lo recibes.

Sino, no se entiende el ejemplo con hidden, daria igual que fueran normales... pero, en fin, da igual...
__________________
>> Eleazan's Source
>> @Eleazan
  #17 (permalink)  
Antiguo 04/02/2014, 10:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: enviar cadena de parametros como texto plano

Si te fijas bien en lo que durdi expuso, tiene el temor de que se produzca un conflicto con otros datos que lleguen en variables con los mismos nombres que el banco le asignó:

Cita:
Iniciado por durdi Ver Mensaje
Lo de verificarlo es porque puede que la url me envie esas 2 variables y pertenezcan a otro formulario
Por eso es que menciona lo de la verificación, para comprobar que, por ejemplo, el $_POST["ejemplo"] que recibe es de lo que le envía el banco y no de otro formulario en el que usa los mismos nombres para los campos, por eso fue que le recomendé que en los demás formularios, asigne otros nombres para los campos que contengan.

En síntesis, él tiene miedo de que ocurra un conflicto entre las variables que recibe, no de que alguien pueda modificar los datos antes de enviarlos.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 04/02/2014 a las 23:05

Etiquetas: cadena, formulario, parametros, plano
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:57.