FORM sin navegación

Como no es el mismo tema, prefiero abrir otra pregunta:

Estoy cambiando los IFRAME por FORM para enviar los datos mediante POST, por el tema de la seguridad ... El tema es el siguiente, lo bueno que tiene el IFRAME, es que desde una función javascript le indico los parámetros y se ejecuta y se mantiene en la misma página sin alteración alguna; al cambiar el IFRAME por el FORM, al ejecutarse navega a la página que se le haya indicado como action, cosa que preferiría que no hiciera, mediante la propiedad target, ponga lo que ponga o abre una nueva ventana o modifica la actual, nada de las dos cosas me gusta ... ¿Alguna propuesta?

1 Respuesta

Respuesta
1

Puedes hacerlo con jquery o con ajax pero esto no lo he utilizado.

Otra cosa que podrías hacer es seguir manteniendo los iframe pero meter el form en un iframe por lo que al enviar los datos por post se actualizaría el iframe pero la página madre no.

No te entiendo ...

Tenia pensado hacer lo que dices, pero tengo mis dudas respecto a la seguridad ... Me explico:

Esto es una pagina cualquiera index.php:

<script ....>

function actualizar(pCodigo){

var parametros='codi=' + pCodigo;

document.getElementById("envío").src="actualizarBD.php?" + parámetros;

}

</script>

<iframe id="envío" src=""></iframe>

Cuando se llama a la función actualizar, ésta le pasa el código indicado al iframe, ejecutándose lo que haya dentro de actualizarBD.php

Lo de meter el FORM dentro del IFRAME, te refieres a poner dentro del actualizarBD.php, algo como:

Caso A:

<?php

$iCodigo=$_GET[codi];

?>

<FORM id="formulario" action="insertarEnBD.php" method="POST">

<INPUT name="_codigo" type="text" />

</FORM>

<script .... >

document.getElementByName("_codigo").value='<?php echo $iCodigo; ?>';

</script>

Caso B:

En el iframe de index.php:

<iframe id="envío" src="">

<FORM id="formulario" action="insertarEnBD.php" method="POST">
<INPUT name="_codigo" type="text" />
</FORM>

</iframe>

*************************************

*************************************

Si te refieres al Caso B, no tengo ni idea de cómo funcionaria, a menos que no fuera poniéndole al FORM el target="envío" ... No sé si te refieres a eso.

Si te refieres al Caso A, continuaría teniendo el mismo problema ya que primero has de enviar los datos mediante un GET.

El iframe muestra la página actualizarBD.php

Lo que haces es meter en la página actualizarBD.php el form también, junto con el código que actualiza.

En el acción le envías por GET una variable que se llama acción con el valor actualizar

¿

<?php

if ($_GET['acción']=="actualizar"){

//aquí el código que actualiza la base de datos

} else {

print('<form method="post" action="actualizarDB.php?acción=actualizar">

<input name="_codigo" type="text" />
</form>');

}

¿

?>

La explicación sería, cuando se envía el formulario, al poner en el acción la url y mandarle una variable por get que diga que se va a actualizar, lo que está haciendo es decirle a la página actualizarBD.php que actualize los datos y no muestre el formulario.

Si no se envía este valor, se mostrará el form

Lo que haces en la página donde tienes el index. Es poner lo siguiente

<iframe src="actualizarBD.php"...></iframe>

Creo que me he explicado :)

Hay algo que se me escapa, o tu no te explicas bien, ja ja ja:

en index.php, tengo los datos que se quieren actualizar, por ejemplo el _codigo, Según tú, en index.php, solo tengo que poner el iframe:

<iframe id="envío" src="actualizarBD.php"></iframe>

y luego en actualizarBD.php: en función del parámetro acción realizar una cosa u otra, como al ejecutarse por primera vez no se le pasa dicho parámetro visualizará el FORM, correcto ... pero, recuerda que estamos en index.php, y ahí solo está el iframe, ¿como hago para pasarle el _codigo que está en index.php, al FORM, que está dentro del iframe, no lo veo claro ...

Si el código es un id numérico que no importa que sea visible lo pasas por la url y si no se puede ver lo pasas por session

En el index pones

session_start()

$_SESSION['código']=$elcodigo;

luego en el actualizarBD lees así:

session_start();

$código=$_SESSION['código'];

Si no lo entiendes te grabo un video

Claro, yo sobreentendía, que lo leerías con un post. El tema del código era un ejemplo, hay muchos mas datos evidentemente que en principio no se podrían ver (actualmente los paso por url) ...

Pero, después de todo esto, volvemos a estar al principio, en tu último mensaje me comentas de utilizar $_SESSION['código']=$elCodigo, si claro, creo que se te pasa por alto una cosa, la variable $elCodigo, no contiene nada, me refiero a que yo puedo iniciar sesión en el index.php, pero los datos, están en un <input>, y el problema que tenia era pasarle ese valor al servidor sin que el FORM me reiniciara el index.php,...

La variable $elcodigo lo puse de ejemplo, de todas formas te recomiendo que mires el uso de ajax, es mucho más cómodo y no tienes que recargar la página

Vaya ... por lo que vuelvo a estar donde estaba al principio ...

Tú esto, que te he consultado ahora, como lo has solucionado, cómo lo haces? Porque digo yo que es lo mas normal, no? como pasas la información de todos los datos que hay en pantalla, que pueden haber 20, a php ¿mediante FORM siempre? ¿siempre recargas la página? ¿lo pones todo en cookies? ... Es que claro, si lo pongo en cookies, tendría que encriptarlo todo ¿no? ...

¿Tú cómo lo haces?

Yo no almaceno nada en cookies, los datos de acceso los guardo en Sessiones

Para pasarlo a la base de datos simplemente los paso por un form mediante post y luego cuando se introducen los datos en la base de datos recargo la página para que se liberen esos datos de la memoria

print('<script>location.href="lapagina.php"</script>');

Así también consigo que al darle a recargar manualmente, no se reenvíen los datos y por lo tanto se creen dos registros iguales o pueda saltar el error.

Pero claro, no se como será las web que has hecho, pero p.ej, en la que estoy ahora, tiene como 3 iframes, cada uno con un tipo de dato distinto, la información que visualiza uno depende de su "padre" ... por lo que si recargo la página cuando se guarda algo de uno de ellos, toda la información de pantalla se deja de visualizar, a menos que le pase por url o post, al mismo form la información necesaria para visualizar de nuevo la información en pantalla y así que el usuario pueda seguir trabajando ...

No sé, creo que sería algo incómodo tener que recargarse la página a cada momento ...

Estoy tratando de mirar algo de lo que me has dicho de ajax, pero creo que hoy ya empiezo a estar algo espeso ...

Si te puedes mirar ajax perfecto porque lo haces todo sin recargar.

Nunca he hecho una web con tanta protección de datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas