Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Cambiar un div por otro (http://www.forosdelweb.com/f18/cambiar-div-por-otro-614945/)

maqjav 13/08/2008 11:20

Cambiar un div por otro
 
Muy buenas.

Acabo de hacer el tipico formulario de registro de usuarios en mi pagina y queria hacer lo siguiente.
Cuando un usuario se ha logueado en mi pagina, le redirijo a la pagina principal "index.php", donde como ahora esta logueado, lo que antes era el formulario para loguearte, ahora tendria que ser algo como "Bienvenido fulanito, url_desconectate".

Bien, la idea que se me ha ocurrido es la de comprobar si se ha logueado algun usuario y en caso de haberlo hecho cambiar el div donde se situa el formulario de logueo, por el texto de bienvenida.

El codigo que estoy utilizando hasta el momento es el siguiente.

Código HTML:

<script type="text/javascript">
function changeLogin(){
    if (document.getElementById('usuarios').value=='TRUE') {
    var content = '<p align="center">&iexcl;Bienvenido <?php echo $row_Usuarios['Usuario']; ?>!<br/><a href="<?php echo $logoutAction ?>">logout</a></p>';
    document.getElementById('usuarios').innerHTML = content;
}
</script>

<body onload="changeLogin()">

<div id="usuarios" value="<?php isset($loginUsername); ?>" >
<form ACTION="<?php echo $loginFormAction; ?>" id="login" name="login" method="POST">
    <label>Usuario<input name="User" type="text" id="User" maxlength="8" /></label><br />
    <label>Contraseña<input name="Password" type="password" id="Password" maxlength="8" /></label><br />
    <a href="registro.php" target="contenedor" onClick="window.parent.scroll(0,300)">Registrarse</a>
<input type="submit" name="Send" id="Send" value="Enviar" />     
</form>
</div>

De tal modo que al div que quiero cambiar le asigno el id "usuarios" y le doy el valor que devuelve isset, siendo TRUE en caso de haberse conectado alguien.

En el script compruebo si el id "usuarios" vale TRUE y en caso de hacerlo, cambio el codigo con innerHTML (esto es lo que no estoy seguro de si esta bien).

Por ultimo, cada vez que alguien se desconecta le vuelvo a redirigir index.php, que al ejecutarse la funcion al cargar la pagina, comprobara que no hay nadie conectado y mostrar el formulario de logueo.


¿Alguna idea de porque no puede funcionar?, ¿otras posibilidades para hacer lo mismo de otro modo?

David 13/08/2008 11:30

Respuesta: Cambiar un div por otro
 
Creo que en este caso lo mejor es usar directamente PHP para devolver un contenido u otro, ya que usando Javascript como siempre habrá un problema de Accesibilidad.

Es fácil, solo en vez de colocar el FORM directamente crealo con echo y con un if si alguien está logueado envias el otro contenido.

Adler 13/08/2008 11:45

Respuesta: Cambiar un div por otro
 
Hola, como te dice David, es mejor se uses php. Yo vengo de asp pero para el caso es lo mismo.

+ En un include, montas ambas opciones (formulario y datos del usuario). Con una condicional que verifique si se creo la sesión. Si se creo muestra los datos del usuario, sino el formulario. Este include has de incluirlo en todas las páginas.

+ En la página que recibe los datos del form creas una session

session("usuario") = los recibido del ataque a la bd

te redirecciona a la página index.php. Si todo fue bien la condicional del include mostrará los datos del usuario.

Suerte

maqjav 13/08/2008 12:06

Respuesta: Cambiar un div por otro
 
Muy buenas, gracias por la respuesta tan rapida.
Estoy probando lo que me comentas, pero se vuelve loco con los codigos php que tengo dentro del formulario.

Esto es lo que he hecho, espero haberte entendido bien:

Código PHP:

<?php 
                
if (!isset($loginUsername)) {
                 echo 
'<form ACTION="<?php echo $loginFormAction; ?>" id="login" name="login" method="POST">';
                 echo 
'<label>Usuario<input name="User" type="text" id="User" maxlength="8" /></label><br />';
                 echo 
'<label>Contraseña<input name="Password" type="password" id="Password" maxlength="8" /></label><br />';
                 echo 
'<a href="registro.php" target="contenedor" onClick="window.parent.scroll(0,300)">Registrarse</a>';
                 echo 
'<input type="submit" name="Send" id="Send" value="Enviar" /> ';
                 echo 
'</form>';
                }
                else {
                 echo 
'<p align="center">&iexcl;Bienvenido !<br/>';
                 echo 
'<a href="<?php echo $logoutAction ?>">logout</a></p>';
                }
?>

Cargar la pagina la carga perfectamente, pero el problema viene cuando me logueo, que al intentar cargar la pagina index.php, en la linea de direcciones me aparece... "localhost/%3C?php%20echo%20$loginFormAction;%20?>"
Como ves esta metiendo el codigo php de la accion del formulario de por medio.

Surge el mismo problema en el otro caso con el codigo de logout.

JavierB 13/08/2008 12:12

Respuesta: Cambiar un div por otro
 
Hola maqjav

En el foro de PHP podrán orientarte mejor.

Mensaje movido al foro de PHP desde Javascript.

Saludos, :adios:

Avatar810 13/08/2008 12:32

Respuesta: Cambiar un div por otro
 
de hecho no es necesario que muestres todo con echo puedes hacer lo siguiente


<body>

<?php if (!isset($loginUsername)) { ?>

<div id="usuarios" value="<?php isset($loginUsername); ?>" >
<form ACTION="<?php echo $loginFormAction; ?>" id="login" name="login" method="POST">
<label>Usuario<input name="User" type="text" id="User" maxlength="8" /></label><br />
<label>Contraseña<input name="Password" type="password" id="Password" maxlength="8" /></label><br />
<a href="registro.php" target="contenedor" onClick="window.parent.scroll(0,300)">Registrarse</a>
<input type="submit" name="Send" id="Send" value="Enviar" />
</form>
</div>

<?php } else { ?>

<div> Bienvenido XXXXXXXXXXXXXXXXXXXXXX </div>

<?php } ?>


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

La razon por la que te parecen esos simbolos es pq tratas de meter codigo PHP desntro de lo que ya es PHP

echo '<form ACTION="<?php echo $loginFormAction; ?>" id="login" name="login" method="POST">';

la linea quedaria algo asi

echo '<form ACTION="'.$loginFormAction.'" id="login" name="login" method="POST">';

maqjav 13/08/2008 12:46

Respuesta: Cambiar un div por otro
 
Hay que ver lo que sabeis.

Ha funcionado perfectamente tal cual has dicho Avatar810:

Código PHP:

<?php if (isset($_SESSION['MM_Username'])) { ?>
<p align="center">&iexcl;Bienvenido <?php echo $row_Usuarios['Usuario']; ?>!<br/> 
<a href="<?php echo $logoutAction ?>">desconectar</a></p>
<?php 
else { 
?>
<form ACTION="<?php echo $loginFormAction?>" id="login" name="login" method="POST">
<label>Usuario<input name="User" type="text" id="User" maxlength="8" /></label><br />
<label>Contraseña<input name="Password" type="password" id="Password" maxlength="8" /></label><br /> 
<a href="registro.php" target="contenedor" onclick="window.parent.scroll(0,300)">Registrarse</a>
<input type="submit" name="Send" id="Send" value="Enviar" />
</form>
<?php ?>

Una gran idea lo de hacerlo directamente con PHP.

Muchas gracias a todos por vuestra ayuda, parece que no, pero este modo de programar con PHP me va a permitir hacer muchas cosas que tenia mis dudas de como hacerlas.


La zona horaria es GMT -6. Ahora son las 12:33.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.