Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/04/2011, 02:38
Avatar de Rankxerox1984
Rankxerox1984
 
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: Hacer un login_box como el de forosdelweb

Hola Nero:

Te paso como lo tengo hecho yo por si te sirve. Funciona con sesiones. Asumo que tienes todo el tema de registro de usuario creado. Al principio de la página declaras "session_start"
En cada página que desees tener el login añadess esto:

Código PHP:
   
        <!--Usuario registrado-->
        
        <div id="UserREG"><?php
            
            $_SESSION
['usuario']=$usuario;
            echo 
$usuario;
            
        
?></div>    
 
        <!--Logout-->
        
        <div id="LOGIN">
            <?php

                
include('login/ComandBTNLogout.php');

            
?>
        </div>    
        
          <!--Login-->
        <div id="LOGIN">
            <?php

                
include('login/ComandBTNLogin.php');

            
?>
        </div>
El código de login (ComandBTNLogin.php) es:

Código PHP:
<a href="login/main_login.php" onClick="window.open(this.href, this.target, 'top='+parseInt(((screen.height) / 2) - 100)+',left='+parseInt(((screen.width) / 2) - 175)+',width=350,height=200,resizable=no,scrollbars=no,titlebar=no,status=no,toolbar=no,location=no,directories=no,menubar=no');return false;window.close();exit">Login</a
Que lleva a la página "login/main_login.php" que contien el form del login y cuyo código es:

Código PHP:
<?php session_start();
//Compruebo errores
error_reporting(E_ALL & ~E_NOTICE); 
ini_set("display_errors"1); 

?><html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">

    <?php        

    
//Detectammos el idioma del explorador

       
$Lengua substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);

    
?>

<head>

   <meta http-equiv="Content-Type"content=" text/html;charset=utf-8">

 <!--Aquí se indica donde está la hoja de estilos CSS -->

 <?php

    
include('../phpBits/estilo_css.php');

        
?>

   <!--Aquí se indican los estilos CSS particulares de esta hoja CSS -->
<style></style>

</head >

<body>

<div id="popup">

    <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
        <tr>
        <form name="form1" method="post" action="checklogin.php">    
            <td>
            <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
                <tr>
                    <td colspan="3"><center><strong>Acceso</strong></center></td>
                </tr>
                
                <tr>
                    <td width="78">Usuario</td>
                    <td width="6">:</td>
                    <td width="294"><input name="usuario" type="text" id="usuario"></td>
                </tr>

                <tr>
                    <td>Clave</td>
                    <td>:</td>
                    <td><input name="clave" type="password" id="clave"></td>
                </tr>
                
                <tr>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                    <td><input type="submit" name="Submit" value="Login"></td>
                </tr>
                <tr>
                    <td colspan="3">
                    <center><a href="#" onclick="getUsuario()">Si has olvidado tu clave pincha aquí</a></center></td>
                                
                    <script language=javascript> 
                    function getUsuario()
                    {var usuario;usuario = document.form1.usuario.value; 
                    window.location="../login/RescateClave.php?usuario="+usuario;  }
                    </script>
                
                </tr>
            </table>
        </form>
    </div>
        <script language=javascript> 
    onclick="self.close()";
    </script>
    </table>
</body>
</html>
El usuario se verifica con:

Código PHP:
<?php session_start ();
//Compruebo errores
error_reporting(E_ALL & ~E_NOTICE); 
ini_set("display_errors"1); 

// Llamo las variables de conexión a DB

        
require_once ('../recor/LoginDB.php');
         
// Nombre de la tabla
    
        
$tbl_name="usuarios";  

// Defino $usuario y $clave 
        
$usuario=$_POST['usuario']; 
        if (empty (
$_POST['usuario'])) {echo "<script type=\"text/javascript\">alert(\"ERROR: Pon un usuario\");  
                    window.history.back();  
                    </script>"
;
                exit;
                };  
        
$clave=$_POST['clave'];
        if (empty (
$_POST['clave'])) {echo "<script type=\"text/javascript\">alert(\"ERROR: Pon la clave\");  
                    window.history.back();  
                    </script>"
;
                exit;
                };  

// Protejo frente a MYSQL injection
        
$usuario stripslashes($usuario);
        
$clave stripslashes($clave);

// Abro conexión y selecciono la base de datos
        
$connection mysql_connect($host$user$pass) or die ("Unable to connect!"); 
        
mysql_select_db($db) or die ("Unable to select database!"); 
        
//Elimino los usuarios inactivos más antiguos de diez dias

$SelFAKEUSER =mysql_query ("delete from usuarios WHERE datediff(CURDATE(),fecha)>10 and activo='0'");
        
//Construyo la select
        
$sql="SELECT * FROM $tbl_name WHERE usuario='$usuario' and clave='$clave' and`activo`=1";
        
$result=mysql_query($sql);

// Cuento las filas de la tabla 
        
$count=mysql_num_rows($result); 
        
// Si $usuario y $clave coinciden, y Activo es igual a 1, tiene que haber una fila

        
if($count==1){

// Registro $usuario, $clave y redirijo a la página de destino 
        
    
$_SESSION['usuario'] = $usuario
    
$_SESSION['clave'] = $clave
    
    
//abro la ventana de destino    
?> 
<script language=javascript> 

self.close();
opener.location.reload(); 

 </script>
<?php


else { 
    echo 
"<script type=\"text/javascript\">alert(\"ERROR usuario o clave. Si has olvidado tu contraseña Pincha aquí para recuperarla. Si te has registrado con anterioridad busca en tu correo electrónico el mensaje de activación y sigue sus instrucciones. Si no te has registrado, por favor, debes hacerlo \");  
                    window.history.back();  
                    </script>"
;
                exit;
}  

?>
El código de logout (ComandBTNLout.php) es:

Código PHP:
<a href="login/main_logout.php" onClick="window.open(this.href, this.target, 'top='+parseInt(((screen.height) / 2) - 100)+',left='+parseInt(((screen.width) / 2) - 175)+',width=350,height=125,resizable=no,scrollbars=no,titlebar=no,status=no,toolbar=no,location=no,directories=no,menubar=no');return false;window.close();exit">Logout</a
Que lleva a la página "login/main_logout.php" cuyo código es:

Código PHP:
<?php session_start();
//Compruebo errores
error_reporting(E_ALL & ~E_NOTICE); 
ini_set("display_errors"1); 

?><html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">

    <?php        

    
//Detectammos el idioma del explorador

       
$Lengua substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);

    
//Detectamos la pagina en que estamos y convertimos a minúsculas para evitar problemas al teclear la página sin saber

              
$site $_SERVER['PHP_SELF']; 
           
$pagina strtolower($site);

    
?>

<head>

   <meta http-equiv="Content-Type"content=" text/html;charset=utf-8">

 <!--Aquí se indica donde está la hoja de estilos CSS -->

 <?php

    
include('../phpBits/estilo_css.php');

        
?>

   <!--Aquí se indican los estilos CSS particulares de esta hoja CSS -->
<style></style>

</head >

<body>

<div id="popup">

    <p></center>¿Estas seguro de que quieres salir?</center></p>

    <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" >
        <tr>
        <form name="form1" method="post" action="logout.php">
            <td>
                <table width="100%" border="0" cellpadding="3" cellspacing="1">
                <tr>
                <td><center><input type="submit" name="Submit" value="Logout"></center></td>
                </tr>
                </table>
            </td>
        </form>
        </tr>
    </table>
    <script language=javascript> 
     onclick="self.close()";
    </script>
</div>
</body>
</html>
que destruye las sesiones con este codigo (logout.php):

Código PHP:
<?php
//destruyo la sesión
session_start();
session_destroy();
?>
<script language=javascript> 
self.close();
opener.location.reload(); 
 </script
>


Los estilos de CSS son:

Código HTML:
/*Saludo usuario*/

	#UserREG{float:left;z-index:10;font-weight: bold; color:FireBrick;height:auto;width:auto;padding:0.25%; margin:0.1em;}
	

/*login/Logout/Cambio de Clave*/

	#LOGIN {float:right;z-index:10;font-weight: bold;height:auto;width:auto;padding:0.25%; margin:0.1em;}
	#LOGIN a:link { text-decoration: none; }
	#LOGIN a:visited { text-decoration: none; color: #666 }
	#LOGIN a:hover {color: blue }
	
	/*PopUp login/Logout/Cambio de Clave/actualizaciones de perfil y popup's en general*/
	
	#popup body {color:purple;background-color:#d8da3d;}
	#popup {background:#e9e9e9;z-index:5;color:#ffffff;left:auto;padding:10px;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;}
	#popup {text-decoration:none;font-family:Helvetica,Geneva,Arial,SunSans-Regular,sans-serif;color:FireBrick;}
	#popup table{background:#e9e9e9;font-family:Helvetica,Geneva,Arial,SunSans-Regular,sans-serif;color:DarkRed;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px; }
	#popup label {text-decoration:none;font-family:Helvetica,Geneva,Arial,SunSans-Regular,sans-serif;color:FireBrick;}
	#popup legend {text-decoration: none;font-family:Helvetica,Geneva,Arial,SunSans-Regular,sans-serif;color:DarkRed;}
	#popup radio {text-decoration: none;font-family:Helvetica,Geneva,Arial,SunSans-Regular,sans-serif;color:FireBrick;}
Creo que está todo, a mi me funciona. Te lo he puesto según lo tengo yo, lo tendrás que adpatar a tus necesidades.
Si necesitas algo más o tienes alguna duda, estoy por aquí.

Un saludo,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)