Foros del Web » Programando para Internet » PHP »

Repostear a la página de origen con PHP

Estas en el tema de Repostear a la página de origen con PHP en el foro de PHP en Foros del Web. Una pregunta muy rara, tal vez, pero que no encuentro en algun otro sitio. Me pidieron que hiciera un validador de una forma que se ...
  #1 (permalink)  
Antiguo 19/12/2011, 19:03
Avatar de WingzemonX  
Fecha de Ingreso: noviembre-2010
Mensajes: 75
Antigüedad: 13 años, 5 meses
Puntos: 3
Pregunta Repostear a la página de origen con PHP

Una pregunta muy rara, tal vez, pero que no encuentro en algun otro sitio. Me pidieron que hiciera un validador de una forma que se conforma de varios pasos, en puro PHP por si a caso el usuario tuviera deshabilitado el JavaScript (hay que tener previsto todo supongo).

Pues bueno, supongamos que tengo página1.php y pagina2.php. pagina1.php tiene la forma del paso 1, y va a mandar sus datos por POST a pagina2.php. Yo tengo en pagina1.php toda una validación detallada en JS de los campos de la forma, pero como andamos suponiendo que si el usuario tiene deshabilitado el JS, esa validación no servira de nada, entonces agregue otra validación al mero inicio de pagina2.php con puro PHP, de tal forma de que checa uno por uno los campos recibidos, para determinar si uno se llenó de forma incorrecta (o no se lleno).

Bueno, esa parte funciona, detecta si algo esta mal escrito y demás. Lo que quiero hacer ahora es que, si un campo esta mal, te mande de regreso a la forma anterior (pagina1.php) y te diga que algo esta mal (y que está mal) para que el usuario lo corrija. Mi problema es como regresarle de vuelta todos los datos que el usuario llenó con anterioridad, porque si lo mando de regreso a la forma anterior, y ésta está toda vacía, muy posiblemente le dará flojera volver a llenar todo de nuevo.

Había empezado a hacer con hiddens, pero a la hora de la hora caí en cuenta de que necesitaba JS para hacerles submit asi que volvi al inicio Lo que quiero saber y si habra uns forma de hacerlo directamente con PHP sin meterme con HTML y JS, sino que con puro PHP enviar de nuevo los mismos datos por POST a la paǵina anterior. No sé si me explique bien

Saludos y gracias!
  #2 (permalink)  
Antiguo 19/12/2011, 19:11
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Repostear a la página de origen con PHP

Te comviene hacer que el formulario se envíe hacia la misma página, osea pagina1 . Se envia a si mismo.
entonces en los values de los campos de texto le ponés
if(isset($_POST['algo'])){echo $_POST['algo'];}
con esto te ahorrás muchos dolores de cabeza, ya que si el form no fue completado correctamente, se vuelve a mostrar con los POST que recibió, y si fue correctamente completado lo anvias a pagina2
__________________
la la la
  #3 (permalink)  
Antiguo 20/12/2011, 09:24
Avatar de WingzemonX  
Fecha de Ingreso: noviembre-2010
Mensajes: 75
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Repostear a la página de origen con PHP

Cita:
Iniciado por truman_truman Ver Mensaje
Te comviene hacer que el formulario se envíe hacia la misma página, osea pagina1 . Se envia a si mismo.
entonces en los values de los campos de texto le ponés
if(isset($_POST['algo'])){echo $_POST['algo'];}
con esto te ahorrás muchos dolores de cabeza, ya que si el form no fue completado correctamente, se vuelve a mostrar con los POST que recibió, y si fue correctamente completado lo anvias a pagina2
Mmmm... Puede ser, pero también en un determinado caso necesitaria algun metodo por PHP el que pudiera enviar los datos a pagina2 luego de checar que todo estan bien, asi que igual me hace falta una forma de hacer submit por PHP >.>u Aunque posiblemente la mejor solución sea como dices y hacer todo en una sola página
  #4 (permalink)  
Antiguo 20/12/2011, 09:40
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Repostear a la página de origen con PHP

Si es la mejor, te ahorrás dolores de cabeza, entonces ponés tu código php arriba del formulario, con un if que condicione,
Código PHP:
if(isset($_POST['boton']))//si fue presionado el botón del form
{

    if(
si está todo OK)
    {
       
hacer acción
    
}else{

       
sino volver a mostrar el formulario

    
}





__________________
la la la
  #5 (permalink)  
Antiguo 22/12/2011, 10:09
Avatar de WingzemonX  
Fecha de Ingreso: noviembre-2010
Mensajes: 75
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Repostear a la página de origen con PHP

Bueno, no sé que tan "Bueno" sea la manera en que lo hice, pero funcionó para lo que queria hacer. Al final hice el post por CURL. Por si alguien quiere saber como, básicamente hice lo siguiente:

Pagina1.php
Ésta postea normalmente, lo único que agregue fue, como dijo truman_truman, un if en los campos para que mostrara el valor en post si había (ya más adelante lo usaré pues se reposteará a ésta).
Código PHP:
<input type="text" name="textfield id="textfield" class="styled" <?php if(isset($_POST["textfield"])){ echo "value=\"".$_POST["textfield"]."\""; } ?>  />
Pagina2.php
Aqui puse al mero inicio de la página toda la validación de cada campo y demás, he hice el "post" a pagina1.php por CURL:
Código PHP:
<?php
$bOk 
true;
//Toda la validación, si hay algo mal $bOk = false;

if($bOk)
{
?>
       <!---PAGINA2.PHP---->
<?php
}
else
{
       
$sFields "";
        foreach(
$_POST as $sKey=>$sValue)
        {
           
$sFields .= $sKey."=".$sValue."&"
        }
        
        
$ch curl_init("http://sitio.dominio/pagina1.php");
        
curl_setopt($chCURLOPT_MUTE1);
        
curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
        
curl_setopt($chCURLOPT_POST1);
        
curl_setopt($chCURLOPT_POSTFIELDS$sFields);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
        
$htmlResult curl_exec($ch);
        
curl_close($ch);
        
        echo 
$htmlResult;
}
?>
Basicamente, si todo esta bien, pasa a mostrar la pagina2.php. Si algo esta mal, pasa a mostrar la pagina1.php, pero tecnicamente seguimos estando parados en pagina2.php, solo que te imprime el codigo HTML de pagina1.php, y en la barra de direccion dira pagina2.php, pero en esencia funcionó como quería :)
  #6 (permalink)  
Antiguo 22/12/2011, 10:19
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Repostear a la página de origen con PHP

Nunca vi algo así, ni tampoco lo entendí muy bien, estará bien hecho?
__________________
la la la
  #7 (permalink)  
Antiguo 22/12/2011, 16:08
Avatar de WingzemonX  
Fecha de Ingreso: noviembre-2010
Mensajes: 75
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Repostear a la página de origen con PHP

Lol, pues si hacia lo que debia de hacer, pero ya mi Lider me dijo que me dejara de cosas y si a esas vamos, mejor usara simplemente un "include_once", que tenia el mismo resultado que el CURL y ocupaba mucho menos recursos:

Pagina2.php
Código PHP:
<?php
$bOk 
true;
//Toda la validación, si hay algo mal $bOk = false;

if($bOk)
{
?>
       <!---PAGINA2.PHP---->
<?php
}
else
{
       include_once 
"pagina1.php";
}
?>
El efecto es el mismo, estamos en pagina2.php, pero si surge un error, que te imprima pagina1.php... ahora me siento un poco tonto pro no haberlo pensado antes xDu...

Etiquetas: html, javascript, post
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 07:47.