elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Doble accion de formulario Php
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Doble accion de formulario Php  (Leído 6,632 veces)
iDrokerGeek_

Desconectado Desconectado

Mensajes: 55


Don't be Windows, Be Free


Ver Perfil
Doble accion de formulario Php
« en: 4 Octubre 2010, 19:27 pm »

Hola. Mi problema es sencillo. Hay un formulario en html, vale? pues quiero que ese formulario se envie a un archivo php y despues o a la vez se envie a otra pagina, todo directo sin intervenciones aparte del usuario. Como lo hago?


En línea

"Stay hungry, stay Foolish"
-Steve Jobs
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Doble accion de formulario Php
« Respuesta #1 en: 4 Octubre 2010, 19:45 pm »

metodo get o post ?




Saludos


En línea

iDrokerGeek_

Desconectado Desconectado

Mensajes: 55


Don't be Windows, Be Free


Ver Perfil
Re: Doble accion de formulario Php
« Respuesta #2 en: 4 Octubre 2010, 19:47 pm »

metodo get o post ?




Saludos

Pues puse en el formulario Post
Que diferencia hay, por cierto? no es Post para enviar? Si es así, ¿cuando se usa get?
Siento el off-topic y se que se ha tocado esto muchas veces
saludos
En línea

"Stay hungry, stay Foolish"
-Steve Jobs
iDrokerGeek_

Desconectado Desconectado

Mensajes: 55


Don't be Windows, Be Free


Ver Perfil
Re: Doble accion de formulario Php
« Respuesta #3 en: 4 Octubre 2010, 20:18 pm »

Vale, ya no hace falta que me expliquéis los dos métodos, los comprendo xD
Ahora solo me hace falta lo que pedi en un principio, y otra cosa: restringir que se vea el codigo fuente
es posible hacer que solo tenga acceso al archivo el html del formulario?
En línea

"Stay hungry, stay Foolish"
-Steve Jobs
iDrokerGeek_

Desconectado Desconectado

Mensajes: 55


Don't be Windows, Be Free


Ver Perfil
Re: Doble accion de formulario Php
« Respuesta #4 en: 4 Octubre 2010, 20:37 pm »

Ok, voy progresando (siento las multiples respuestas). Ahora tengo un Php que realiza la tarea y ademas redirecciona a otra pagina web. Además, si se accede desde otra página que no sea el HTML con el formulario, tengo este código:

Código:
<?php
$referer = $_SERVER['HTTP_REFERER'];
if($referer=='X/X.html'){
Código PHP
}else{
echo "Acceso denegado";
}
?>


Funciona. xD  (aunque si le doi a ver source solo me sale Acceso denegado escrito, tengo mis dudas sobre si hay alguna forma de descargar el código... Respondedme a esto, porfavor)
Y ahora el problema es que NO quiero que solo se redirija a otra página, sino reenviar los datos al formulario de otra pagina, ok?
Así que mis dudas es si se puede descargar de alguna forma el código (y solucionarlo), y el reenviar datos del formulario a otro formulario igual.
Gracias y saludos
En línea

"Stay hungry, stay Foolish"
-Steve Jobs
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Doble accion de formulario Php
« Respuesta #5 en: 4 Octubre 2010, 20:49 pm »

Mediante GET seria facil.

En el primer PHP procesa los datos y mediante
Código
  1. header('Location: http://www.ejemplo.com/pagina2.php?'.$_GET['variable']);
enviarlo a la otra pagina.

Mediante POST. La unica forma que conozco es haciendolo con la funcion curl (que no todos los servidores tienen habilitada).
Código
  1. <?php
  2.  
  3. $ch = curl_init();
  4. curl_setopt($ch, CURLOPT_URL, "http://www.ejemplo.com/pagina2.php");
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($ch, CURLOPT_POST, true);
  7.  
  8. $data = array(
  9.    'variable1' => $_POST['variable1'],
  10.    'variable2' => $_POST['variable2'],
  11.    'variable3' => $_POST['variable3']
  12. );
  13.  
  14. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  15. $output = curl_exec($ch);
  16. $info = curl_getinfo($ch);
  17.  
notese que es un copy/paste de (www.electrictoolbox.com/php-curl-form-post/) no estoy seguro de que funcione.
para mas informacion sobre curl aquí el manual: http://php.net/manual/es/book.curl.php.
Tambien podrias hacerlo mediante javascript que autoenvie el formulario pero es muy friki XD.


Sobre tu segunda pregunta. No lo he entenido del todo. Queires ocultar el codigo HTML o el PHP ? el HTML ocultar ocultar no tiene mucho sentido y podrias encriptarlo (algun metodo sencillo) pero realmente no tiene sentido. El php ya de por si no se muestra puesto que es el servidor el unico que lo procesa.
Si deseas aceder a tu archivo php solo desde el formulario podrias poner un input oculto (hidden) y comprobar que los valores estan en el php y si no tirar un error.

Respecto tu ultima pregunta.
El referer es un buen metodo pero cualquier usuario puede editarlo y acceder igualmente. El codigo PHP no es visible y a no ser que tu servidor o tu codigo tenga algun fallo de seguridad es imposible ver el codigo.


Saludos
En línea

iDrokerGeek_

Desconectado Desconectado

Mensajes: 55


Don't be Windows, Be Free


Ver Perfil
Re: Doble accion de formulario Php
« Respuesta #6 en: 4 Octubre 2010, 21:08 pm »

Hay un problema. El ultimo html ha de recibir por POST sí o sí.
Que puedo hacer?
He pensado en esto:

html primero (el usuario mete los datos) -> php que procesa datos -> html que obtiene las variables de alguna forma del php primero, y luego los envia por action?? a otro html -> HTML final (method=POST)

Dicho esto, a calentar neuronas. Yo no consigo averiguar como enviar datos de formularios por PHP. Lo siento xD
En línea

"Stay hungry, stay Foolish"
-Steve Jobs
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Doble accion de formulario Php
« Respuesta #7 en: 4 Octubre 2010, 21:54 pm »

He estado jugando un rato. La verdad es que no domino perfectamente curl asi que esto es lo que he conseguido.

1º metodo XD

pagina.html
Código
  1. </head>
  2. <form action="1pagina.php" method="POST" />
  3.    usuario <br />
  4.    <input type="text" name="usuario" value="" /> <br />
  5.    e-mail <br />
  6.    <input type="text" name="email" value="" /> <br />
  7.    <input type="submit" value="enviar" />
  8. </form>
  9. </body>

1pagina.php
Código
  1. <?php
  2.  
  3. // mostrar variables antes de processar
  4. print '<b>Pagina 1</b><br />';
  5. print '<b>usuario</b>: ';
  6. print htmlentities($_POST['usuario']);
  7. print '<br />';
  8. print '<b>email</b>: ';
  9. print htmlentities($_POST['email']);
  10. print '<hr>';
  11. // ###
  12.  
  13. // procesar informacion de la siguente pagina y mostrar variables.s
  14. $ch = curl_init();
  15. curl_setopt($ch, CURLOPT_URL, "http://localhost/drvy/2pagina.php"); // pagina 2
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  18. curl_setopt($ch, CURLOPT_POST, true);
  19.  
  20. // nombre de la variable y variables
  21. $data = array(
  22.    'usuario' => $_POST['usuario'],
  23.    'email' => $_POST['email'],
  24. );
  25. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  26. $output = curl_exec($ch);
  27.  
  28. // Imprimir contenido 2pagina.php
  29. print $output;
  30.  
  31. ?>

2pagina.php
Código
  1. <?php
  2. print '<b>Pagina 2</b><br />';
  3. print '<b>usuario</b>: ';
  4. print htmlentities($_POST['usuario']);
  5. print '<br />';
  6. print '<b>email</b>: ';
  7. print htmlentities($_POST['email']);
  8. ?>

Por una parte procesa todo bien. El unico problema es que no he conseguido redirecionarla. Vamos que todo se queda en 1pagina.php y lo unico que hace el curl es recoger lo que imprime 2pagina.php.

2º metodo.

Esto lo hace con javascript. Lo que hace es recrear un form y reenviarlo automaticamente con javascript. Recuerda que si el usuario no tiene javacript no funcionara.

pagina.html
Código
  1. </head>
  2. <form action="1pagina.php" method="POST" />
  3.    usuario <br />
  4.    <input type="text" name="usuario" value="" /> <br />
  5.    e-mail <br />
  6.    <input type="text" name="email" value="" /> <br />
  7.    <input type="submit" value="enviar" />
  8. </form>
  9. </body>

1pagina.php
Código
  1. <?php
  2. // crear formulario y autoreenviarlo
  3. print '<form action="2pagina.php" name="miforum" method="POST" />';
  4. print 'usuario <br />';
  5. print '<input type="hidden" name="usuario" value="'.htmlentities($_POST['usuario']).'" /><br />';
  6. print 'e-mail <br />';
  7. print '<input type="hidden" name="email" value="'.htmlentities($_POST['email']).'" /> <br />';
  8. print '</form>';
  9. print '<script>document.miforum.submit();</script>'
  10. // ###
  11. ?>

2pagina.php
Código
  1. <?php
  2. print '<b>Pagina 2</b><br />';
  3. print '<b>usuario</b>: ';
  4. print htmlentities($_POST['usuario']);
  5. print '<br />';
  6. print '<b>email</b>: ';
  7. print htmlentities($_POST['email']);
  8. ?>


Funciona perfectamente en localhost (XD) casi ni se nota la redireccion (obviamente sera mas lento en otros :P).


Saludos
En línea

iDrokerGeek_

Desconectado Desconectado

Mensajes: 55


Don't be Windows, Be Free


Ver Perfil
Re: Doble accion de formulario Php
« Respuesta #8 en: 4 Octubre 2010, 22:20 pm »

jajaja
si se llegase a notar la redireccion en localhost, ya vamos mal xD
el problema del javascript es ese, que el usuario tenga.
En el 2pagina.php (javascript), no se reenvia a la pagina final, no? o sí?

Y el cUrl, he leido que no todos los servidores estan habilitados para hacer eso. Aparte de eso, parece que te lo has currado todo bien. Gracias.
Una cosa, el archivo pagina2.php, es la pagina final? es decir, la que yo digo que quiero reenviar. Veras, es que quiero reenviar los datos a una pagina externa, y tiene que ser por POST porque asi lo dice su codigo.. ese es el problema T.T


Mira el lado positivo, ahora lo de antes si quieres lo posteas en una recopilacion de esas de scripts PHP a tu nombre :D


Releyendo el javascript, creo que en el primer PHP lo que has echo es directamente usarlo como reenvio, no? o sea, que el php 2 es ya el objetivo final.


Wow! lo has conseguido!
Ya tengo la solucion por javascript!
Aunque es cierto eso de que no todos los navegadores tienen javascript, me has sacado de un apuro.  Muchas gracias!!!
En línea

"Stay hungry, stay Foolish"
-Steve Jobs
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Doble accion de formulario Php
« Respuesta #9 en: 4 Octubre 2010, 22:29 pm »

 :xD

Ese es el problema de curl que es una extension aparte de php.

El "2pagina.php" es el objetivo final. En el 1pagina.php (javascript) puedes hacer cualquier cosa mientras dejes al final la recreacion del formulario :P


Me alegro de que te haya servido.




Saludos
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines