Foros del Web » Programando para Internet » PHP »

Ejecutar acción de formulario PHP automáticamente

Estas en el tema de Ejecutar acción de formulario PHP automáticamente en el foro de PHP en Foros del Web. Buenas a todos, primero decir que no sé si este mensaje debería ir aquí o en el foro de PHP. Soy webmaster totalmente amateur de ...
  #1 (permalink)  
Antiguo 17/01/2014, 10:00
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 9 años
Puntos: 0
Ejecutar acción de formulario PHP automáticamente

Buenas a todos, primero decir que no sé si este mensaje debería ir aquí o en el foro de PHP.
Soy webmaster totalmente amateur de una página web en la que tengo un formulario PHP el cual necesito que realice varias acciones.
Primero necesito que se valide de dos formas distintas según la información introducida por el usuario, una vez validado necesito que se manden los datos a una base de datos y que me lleguen por correo electrónico, y por último, y aquí tengo el "problema" que se conecte a un TPV (pasarela de pagos virtual).

Bien, lo tengo todo implementado correctamente, pero el código base del TPV requiere de un segundo formulario con un botón submit propio para hacer la conexión con el TPV, y quiero que la acción que realiza este botón submit se realice automáticamente cuando se carga este segundo formulario.

El código del botón por defecto es el siguiente:

echo "<input type=hidden name=Ds_Merchant_MerchantSignature value='$signature'>
</td></tr>
<center><a href='javascript:calc()'><img src='/tpvirtual.jpg' border=0 ALT='TPV Virtual'></a></center>
</form>
</body>

Buscando por internet he encontrado la función de jquery "setTimeout (function(),tiempo)" que permite ejecutar la acción function pasado un tiempo.
Entonces he modificado el código de esta forma:

echo "<input type=hidden name=Ds_Merchant_MerchantSignature value='$signature'>
</td></tr>
<script languange=JavaScript>
setTimeout (calc(),1);
</script>
</form>
</body>

con lo que debería llamarse a la función "calc()" al cabo de 1ms, pero eso no ocurre. No ocurre nada.
Tengo jQuery implementado en el HEAD de la página, la función "calc()" está definida previamente con un script javascript y funciona correctamente ejecutandola con el botón, pero al modificar el botón por el script no funciona.

Espero haber explicado bien mi situación y que alguien pueda ayudarme.
Obviamente si hay sugerencias de otras formas de conseguirlo serán más que bienvenidas!!

Gracias de antemano!
  #2 (permalink)  
Antiguo 17/01/2014, 10:01
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 9 años
Puntos: 0
Respuesta: Ejecutar acción de formulario PHP automáticamente

Este es el código completo de conexión al TPV.

<?PHP


function ShowError () {
echo "<html><head><title>Results</title></head><body><table width=100% height=50%><tr><td><p><h2><center>Compruebe que todos los datos del formulario son correctos!!</center></h2></p></td></tr></table></body></html>\n";
} # End of function ShowError

function ShowForm ($amount,$currency,$producto) {
// Posted data
global $HTTP_POST_VARS;

// Valores constantes del comercio
$url_tpvv='https://sis-t.redsys.es:25443/sis/realizarPago';
$clave='XXXXXXXXXXXXXXX';
$name='XXXXXXXXXXXXXX';
$code='XXXXXXXXXXXXXX';
$terminal='1';
$order=date('ymdHis');
$amount= $_POST["cantidad"]*100;
$currency='978';
$transactionType='0';
$urlMerchant='';
$producto='Donacion';

// Now, print the HTML script
echo "
<script language=JavaScript>
function calc() {
vent=window.open('','tpv','width=725,height=600,sc rollbars=no,resizable=yes,status=yes,menubar=no,lo cation=no');
document.forms[0].submit();}
</script>
<body bgcolor=white >
<style>
a{text-decoration:none}
</style>
<form name=compra action=$url_tpvv method=post target=tpv>
";

echo "</td>
</tr><tr><td>
<input type=hidden name=Ds_Merchant_Amount value='$amount'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Currency value='$currency'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Order value='$order'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_MerchantCode value='$code'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Terminal value='$terminal'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_TransactionType value='$transactionType'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_MerchantURL value='$urlMerchant'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_UrlOK value='$urlOK'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_UrlKO value='$urlKO'>
</td></tr><tr><td>";

// Compute hash to sign form data
// $signature=sha1_hex($amount,$order,$code,$currency ,$clave);
$message = $amount.$order.$code.$currency.$transactionType.$u rlMerchant.$clave;
$signature = strtoupper(sha1($message));

echo "<input type=hidden name=Ds_Merchant_MerchantSignature value='$signature'>
</td></tr>
<script languange=JavaScript>
setTimeout(calc,1000);
</script>
</form>
</body>

";
} # End of function ShowForm

?>
  #3 (permalink)  
Antiguo 17/01/2014, 12:59
 
Fecha de Ingreso: enero-2014
Mensajes: 75
Antigüedad: 9 años
Puntos: 11
Respuesta: Ejecutar acción de formulario PHP automáticamente

Lo que quieres hacer se hace con javascript, se puede hacer con php, pero la forma correcta es con javascript, pregunta en ese foro.

Saludos.
  #4 (permalink)  
Antiguo 23/01/2014, 06:31
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 9 años
Puntos: 0
Respuesta: Ejecutar acción de formulario PHP automáticamente

Después de mucho darle vueltas y probar siempre con el mismo sistema y navegador (Safari en Mac), pensé que a lo mejor eso me daba problemas. Probado en Windows con Firefox y funciona como la seda...¡perdón por las molestias!

Ahora viene mi nuevo problema...Safari por defecto bloquea las ventanas de aparición automática, con lo que deshabilitando esta opción funciona bién.
¿Hay alguna forma de que, al enviar el formulario, éste compruebe si el usuario tiene habilitado algun bloqueador de pop-ups o ventanas automáticas, y se lo notifique para que lo deshabilite? O, mejor aún, ¿Se puede evitar que la ventana automática se bloquee?

Gracias de nuevo!
  #5 (permalink)  
Antiguo 24/01/2014, 13:49
 
Fecha de Ingreso: enero-2014
Mensajes: 75
Antigüedad: 9 años
Puntos: 11
Respuesta: Ejecutar acción de formulario PHP automáticamente

Pues creo que se puede, pero no tengo ni idea de como hacerlo, lo siento.

Etiquetas: automaticamente, formulario, function, settimeout
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 00:12.