publicar mercadolibre apis php post redirect header

php - apis - api mercadolibre publicar



PHP abre otra página web con datos POST (8)

Soy nuevo en PHP y estoy tratando de hacer algo que puede ser una mala práctica y puede ser imposible. Básicamente estoy pirateando algo para probar mi conocimiento y ver lo que PHP puede hacer.

Tengo una página web con un formulario que recopila datos. Esto se envía a un script PHP que procesa un montón de cosas, pero en realidad no muestra nada importante. Lo que quiero es que una vez que el procesamiento haya finalizado, la secuencia de comandos le indique al navegador que abra otra página, donde se muestran los resultados.

Sé que puedo usar el encabezado (''Ubicación: page.php''); pero no puedo averiguar cómo proporcionar datos POST con esto. ¿Cómo puedo hacer eso? Alternativamente, ¿hay alguna otra manera de decirle al navegador que abra otra página?

EDITAR: Lo que estoy tomando de las respuestas es que es posible hacerlo utilizando varios hacks, pero sería mejor que solo tuviera el procesamiento y el código de visualización en un solo archivo. Estoy feliz con eso; esto fue un experimento más que nada.


Este problema me ha molestado por un tiempo. Mi CMS personalizado realiza un procesamiento, carga y manipulación bastante complejos, por lo que a veces muestra errores bastante largos y mensajes de información, que no son adecuados para convertir a datos GET, y siempre he querido evitar el problema de recarga en los datos INSERT, pero aún no se ha encontrado una solución adecuada.

Creo que la forma correcta de hacerlo es crear matrices de mensajes para cada estado posible; cada mensaje o error que desee mostrar, y luego solo debe enviar números de error / mensaje que son mucho más fáciles de manejar que los largos. cadenas de datos, pero es algo de lo que siempre he rehuido personalmente ya que me resulta un poco tedioso y engorroso. Francamente, esto es probablemente solo pereza de mi parte.

Me gusta bastante la solución de almacenamiento variable SESSION, pero esto plantea la pregunta de cómo se asegura que los datos de SESSION se destruyan adecuadamente. Siempre que se asegure de que solo está enviando información (mensajes / errores) y no de datos que deberían / ​​podrían almacenarse (y por lo tanto serían potencialmente sensibles), esto debería ser un problema evitable.


AFAIK esto generalmente se hace como un proceso de dos pasos:

  1. En form.php, envía los datos a script process.php
  2. El script process.php procesa los datos pero nunca muestra nada en sí mismo, siempre llama al encabezado ("Ubicación: asdasd") para redirigir a una página de success.php o failure.php (si corresponde)

Espero tener tu pregunta correcta. Puede intentar esto:

  1. Ajuste su formulario para que se vea así:

forma method = "POST" action = "process_data.php"

2. Luego creas el archivo process_data.php, que sorprendentemente procesa los datos.
Y en este archivo usa encabezado:
Por ejemplo:

$ head = sprintf ("page.php? data1 =% d? data2 =% d", $ data1, $ data2);
encabezado ($ cabeza);

Espero que pueda ayudar.


No hay forma de redirigir el navegador del usuario a una página arbitraria y enviar una solicitud POST. Eso supondría un riesgo para la seguridad, ya que cualquier enlace podría hacer que envíe un formulario a un sitio arbitrario sin que usted tenga ningún tipo de pista sobre lo que iba a suceder.

En resumen, no es posible


Podría usar JavaScript como una solución sucia:

<form id="redirect_form" method="post" action="http://someserver.com/somepage.php"> <input type="hidden" name="field_1" value="<?php echo htmlentities($value_1); ?>"> <input type="hidden" name="field_2" value="<?php echo htmlentities($value_2); ?>"> <input type="hidden" name="field_3" value="<?php echo htmlentities($value_3); ?>"> </form> <script type="text/javascript"> document.getElementById(''redirect_form'').submit(); </script>

(el script debe estar debajo del formulario)


¿Es realmente necesario llamar a otra página después de que se haya terminado el procesamiento? Probablemente haga lo siguiente:

<form method="post" action="display.php"> ... </form>

display.php:

if ($_POST) { require_once(process.php); process($_POST); display_results; }

con process.php que contiene el código necesario para procesar la solicitud posterior.

Alternativamente, puede usar algo como la biblioteca cURL para pasar los resultados del procesamiento a una página especificada por usted mismo. No sé si eso es lo que realmente buscas.


Hazlo todo en una secuencia de comandos y solo muestra diferentes HTML para los resultados.

<?php if($doingForm) { ?> html for form here <?php } else { ?> html for results <? } ?>


Puede almacenar esos datos en la sesión, por ejemplo, en el primer archivo que maneja la publicación

session_start(); $_SESSION[''formdata''] = $_POST; //or whatever

entonces puedes leerlo en la siguiente página como

session_start(); print_r($_SESSION[''formdata'']);

o podría pasarlo por GET: (pero según los comentarios esta es una mala idea)

header(''Location: page.php?'' . http_build_query($_POST));

Si lo hace, asegúrese de realizar un proceso / validación adicional en page.php ya que un usuario malintencionado podría cambiar las variables. también es posible que no necesite toda la publicación transmitida a la página siguiente

Editar

Debo dejar en claro que creo que la segunda opción es posiblemente peor, ya que está limitado por el tamaño de los datos que puede enviar a través de get y es posiblemente menos seguro ya que los usuarios pueden manipular los datos con mayor claridad.