Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   cómo llamar diferentes páginas si entró la clave correcta (https://www.clubdelphi.com/foros/showthread.php?t=47199)

maximo_nashir 21-08-2007 18:54:06

cómo llamar diferentes páginas si entró la clave correcta
 
Hola a todos, lo que sucede es lo siguiente: tengo tres botones los cuales deben llamar diferentes páginas. Pero cuando accesen a esas páginas, dichas páginas deben verificar que el usuario haya entrado una clave, si la ingresó pues entonces las páginas permiten que interactuen con ellas, si no ingresó la clave entonces dichas páginas deben devolver al usuario a la página principal que es donde están los tres botones y el cuadro de texto de la contraseña. Entonces, mi problema consiste en que al parecer al yo darle clik a cualquiera de los botones solo se está ejecutando el OnClick del último botón o no se si es que php está leyendo el OnClick de los tres y por ende el que queda ejecutandose o asignando el valor es el del último botón.

Bueno, aquí está el código que tal vez es más claro que yo:

Código PHP:

       <td rowspan="6"><img name="int_control_r4_c1" src="img/int_control_r4_c1.jpg" width="9" height="434" border="0" id="int_control_r4_c1" alt="" /></td>
       <td colspan="3"><img name="int_control_r4_c2" src="img/int_control_r4_c2.jpg" width="304" height="108" border="0" id="int_control_r4_c2" alt="" onclick="<?php $Accion 'Pagina1.php' ?> document.formVerificacion.submit()" /></td>
       <td rowspan="4" colspan="2"><img name="int_control_r4_c5" src="img/int_control_r4_c5.jpg" width="200" height="289" border="0" id="int_control_r4_c5" alt="" /></td>
       <td><img src="img/spacer.gif" width="1" height="108" border="0" alt="" /></td>
     </tr>
     <tr>
       <td colspan="3"><img name="int_control_r5_c2" src="img/int_control_r5_c2.jpg" width="304" height="113" border="0" id="int_control_r5_c2" alt="" onclick="<?php $Accion 'Pagina2.php' ?> document.formVerificacion.submit()"/></td>
       <td><img src="img/spacer.gif" width="1" height="113" border="0" alt="" /></td>
     </tr>
     <tr>
       <td colspan="3"><img name="int_control_r6_c2" src="img/int_control_r6_c2.jpg" width="304" height="122" border="0" id="int_control_r6_c2" alt="" onclick="<?php $Accion 'Pagina3.php' ?> document.formVerificacion.submit()"/></td> //al darle click a cualquier botón solo me está llamando a Pagina3.php
<td><img src="img/spacer.gif" width="1" height="122" border="0" alt="" /></td>
     </tr>
     <tr>
       <td rowspan="3"><img name="int_control_r7_c2" src="img/int_control_r7_c2.jpg" width="262" height="91" border="0" id="int_control_r7_c2" alt="" /></td>
          <form name='formVerificacion' method='POST' action="<?php echo $Accion ?>">
          <td><input type="password" name="ClaveAdmin" /></td>
          </form>


roman 21-08-2007 20:00:20

Verás, tienes algunos conceptos equivocados en cuanto al uso de php y javascript. Debes recordar que el código php se ejecuta en el servidor mientras que javascript se ejecuta en el navegador.

Cuando pones:

Código:

<img ... onclick='<?php $Accion = 'Pagina1.php'?> document.formVerificacion.submit()'
el código php

Código PHP:

$Accion 'Pagina1.php' 

se ejecuta en el servidor cuando el navegador le pide la página, y lo que llega a éste es el html resultante. Como esa sentencia no da ninguna salida, el resultado es una cadena vacía, de manera que al navegador le llega esto:

Código:

<img ... onclick=' document.formVerificacion.submit()'>
de manera que lo único que se ejecuta cuando se hace clic en ese botón es el código javascript:

Código:

document.formVerificacion.submit()
Y lo mismo sucede con los tres botones. Es decir, los tres botones ejecutan lo mismo, que es el submit del formulario.

Por tanto, el formulario se enviará a cualquier cosa que valga su atributo action. Pero resulta que este atributo está dado por

Código:

<form ... action='<?php echo $Accion ?>'>
y como $Accion es una variable cuyo valor se resuelve en el servidor, no queda claro que valor tendrá para cuando la página llegue al navegador. En todo caso, no será el que corresponda al botón oprimido.

-------------------------------------------------

Hay varias maneras de hacer lo que quieres.

Una que se me ocurre es estableciendo el atributo action del formulario mediante javascript:

Código:

<img ... onclick=' document.formVerificacion.action="pagina1.php"; document.formVerificacion.submit();'>
Otra manera podría ser mandar a la misma página con los tres botones, pero cada botón establece un campo hidden:

Código:

<input type='hidden' name='boton'>

...

<img ... onclick=' document.formVerificacion.boton.value=1; document.formVerificacion.submit()'>

La página que recibe, dispone entonces del valor $_POST['botón '] para determinar a qué pagina redirigir:

Código PHP:

header('location: 'pagina' . $_POST['boton'] . '.php'); 

Aunque en este caso, tendrías que reenviar los demas valores del formulario por otros métodos, ya sea en la misma llamada al header, o mediante alguna variable de sesión.

// Saludos

maximo_nashir 21-08-2007 21:06:15

Gracias roman, muy practica tu ayuda, me funcionó de mil maravillas


La franja horaria es GMT +2. Ahora son las 00:47:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi