Foros del Web » Programando para Internet » PHP »

Proteger página con E-mail activado

Estas en el tema de Proteger página con E-mail activado en el foro de PHP en Foros del Web. Estimados...!!! Tengo la pagina "listado.php" con un listado de usuarios y sus correos. El listado proviene de una BD con los campos "email" y "estado". ...
  #1 (permalink)  
Antiguo 18/09/2009, 16:28
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Proteger página con E-mail activado

Estimados...!!!

Tengo la pagina "listado.php" con un listado de usuarios y sus correos. El listado proviene de una BD con los campos "email" y "estado". El campo "estado" tiene un valor "0" ó "1" dependiendo de si el usuario que se registró, activó o no su cuenta ("0" es activado).

Ahora bien, ésta pagina del listado, la quiero proteger, es decir, que sólo la puedan ver aquellos usuarios que se han registrado y activado su e-mail. Para ésto he realizado (con mis poquísimos conocimientos) un formulario "login_user.php" donde el usuario ingresa su e-mail y lo envía, lo recibe el archivo "verificar_login_user.php" donde hace el siguiente trabajo:

1.- Verifica si el campo e-mail no está en blanco.
2.- Verifica si el e-mail introducido está en la BD.
3.- Verifica si el e-mail introducido tiene el campo "estado" activado ("0")

... y ahí me quedé. No me doy cuenta como seguir para proteger la página "listado.php", es decir, que poner en listado.php para que al llamarla, primero se muestre el formulario login_user.php y si todo es correcto muestre el listado.

No se si me explñiqué bien, pero ojalá alguien me pueda ayudar!

Saludos.

Formulario: login_user.php
Código HTML:
<form method="post" action="verificar_login_user.php">
          <table>
            <tbody>
              <tr>
                <td><input class="input"  name="email" type="text" value="" /></td>
              </tr>                          
              <tr>
                <td>
                <input type="submit" value="Enviar">&nbsp;&nbsp;<input type="reset" value="Borrar"/></div>
                </td>
              </tr>
            </tbody>
          </table>
</form> 
verificar_login_user.php
Código PHP:
<?php include($_SERVER['DOCUMENT_ROOT']."Conexión"); ?>

<?php
//datos para establecer la conexion con la base mysql.
MySQL5();

function 
formVerificar(){
?>


<?php
}

// verificamos si se ha enviado la variable necesaria, la que tenemos en nuestro form.
if (isset($_POST["email"])) {
    
$email $_POST["email"];
    echo 
"<div style='text-align:center;font-weight:bold;font-size:250%;color:#005784;margin-top:200px;'>";
    echo 
$email;
    echo 
"</div>";
    
// Comprobamos si el campos E-mail esta en blanco
    
if($email==NULL) {
        echo 
"<div style='font-size:250%;text-align:center;font-weight:bold;color:#B40404;'>Debe ingresar su dirección de correo</div>";
        
formVerificar();
        }else{
            
// Comprobamos si la cuenta de correo existe
            
$checkemail mysql_query("SELECT email FROM encuentro WHERE email='$email'");
            
$email_no_existe mysql_num_rows($checkemail);
            if (
$email_no_existe==NULL) {
                echo 
"<div style='font-size:130%;text-align:center;font-weight:bold;color:#B40404;'>Su E-mail no esta registrado</div>";
                
formVerificar();
        }else{
            
// Comprobamos si la cuenta de correo esta activada
            
$checkestado mysql_query("SELECT email, estado FROM encuentro WHERE email='$email'AND estado='0'");
            
$estado_no_activado mysql_num_rows($checkestado);
            if (
$estado_no_activado==0) {
                echo 
"<div style='font-size:130%;text-align:center;font-weight:bold;color:#B40404;'>Su Email no esta activado</div>";
                
formVerificar();
        }
        }
        }
        }
        
?>
  #2 (permalink)  
Antiguo 19/09/2009, 09:38
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Proteger página con E-mail activado

En este post explican como proteger una página para que solo la puedan ver los usuarios logeados.

forosdelweb.com/f18/aporte-sistema-registro-reconocimiento-usuario-aporte-561417/

No te pude poner el link directo por no tener 30 mensajes ni 30 dias de antiguedad en el foro... lo siento.
  #3 (permalink)  
Antiguo 19/09/2009, 12:19
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Proteger página con E-mail activado

Gracias whaky por tu dato!

He implementado lo de session_start() para mi fin, de esta manera:

Código PHP:
<?php include($_SERVER['DOCUMENT_ROOT']."Conexión"); ?>

<?php
//datos para establecer la conexion con la base mysql.
MySQL5();

function 
formVerificar(){
?>


<?php
}

// verificamos si se ha enviado la variable necesaria, la que tenemos en nuestro form.
if (isset($_POST["email"])) {
    
$email $_POST["email"];
    echo 
"<div style='text-align:center;font-weight:bold;font-size:250%;color:#005784;margin-top:200px;'>";
    echo 
$email;
    echo 
"</div>";
    
// Comprobamos si el campos E-mail esta en blanco
    
if($email==NULL) {
        echo 
"<div style='font-size:250%;text-align:center;font-weight:bold;color:#B40404;'>Debe ingresar su dirección de correo</div>";
        
formVerificar();
        }else{
            
// Comprobamos si la cuenta de correo existe
            
$checkemail mysql_query("SELECT email FROM encuentro WHERE email='$email'");
            
$email_no_existe mysql_num_rows($checkemail);
            if (
$email_no_existe==NULL) {
                echo 
"<div style='font-size:130%;text-align:center;font-weight:bold;color:#B40404;'>Su E-mail no esta registrado</div>";
                
formVerificar();
        }else{
            
// Comprobamos si la cuenta de correo esta activada
            
$checkestado mysql_query("SELECT email, estado FROM encuentro WHERE email='$email'AND estado='0'");
            
$estado_no_activado mysql_num_rows($checkestado);
            if (
$estado_no_activado==0) {
                echo 
"<div style='font-size:130%;text-align:center;font-weight:bold;color:#B40404;'>Su Email no esta activado</div>";
                
formVerificar();
        }else{
            
session_start();
            
$_SESSION["email"] = $email;
                
header ("Location: listado.php"); ;
        }
        }
        }
        }
        
?>
Y en el archivo a proteger listado.php, en la cabecera antes que cualquier cosa, he puesto esto:

Código PHP:
<?php  
session_start
();
if(isset(
$_SESSION['email'])){
echo 
"OK, tienes el acceso permitido";
}
else {
echo 
"Error, no tienes permiso.";
}
?>
Ahora bien, las sesiones me las crea sin problemas y funciona, pero la página listado.php no me la está protegiendo. Es decir, en la cabecera, si ingreso sin sesión me sale: "Error, no tienes permiso.", si inicio la sesión me sale: "OK, tienes el acceso permitido".

Osea, como que session_start() no está funcionando en la protección.

Por favor, si me pueden ayudar... gracias!!!
  #4 (permalink)  
Antiguo 19/09/2009, 14:06
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: Proteger página con E-mail activado

Código PHP:
Ver original
  1. <?php  
  2. if(isset($_SESSION['email'])){
  3. ?>
  4. <form method="post" action="verificar_login_user.php">
  5.           <table>
  6.             <tbody>
  7.               <tr>
  8.                 <td><input class="input"  name="email" type="text" value="" /></td>
  9.               </tr>                          
  10.               <tr>
  11.                 <td>
  12.                 <input type="submit" value="Enviar">&nbsp;&nbsp;<input type="reset" value="Borrar"/></div>
  13.                 </td>
  14.               </tr>
  15.             </tbody>
  16.           </table>
  17. </form>
  18. <?
  19. }
  20. else {
  21. echo "Error, no tienes permiso.";
  22. }
  23. ?>
__________________
Hospedaje Web al mejor costo!
  #5 (permalink)  
Antiguo 19/09/2009, 14:10
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Proteger página con E-mail activado

Hola amigo

en caso de que la sesión no exista, debes reedireccionarlo hacia tu página de login
Código PHP:


<?php  
session_start
();
if(isset(
$_SESSION['email'])){
echo 
"OK, tienes el acceso permitido";
}
else {
header("Location:login.php");
}
?>
Saludos
  #6 (permalink)  
Antiguo 19/09/2009, 14:27
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Proteger página con E-mail activado

Hola...

Por lo menos en localhost lo he solucionado de esta forma, poniendo en la cabecera de la página a proteger (listado.php) esto, más o menos como dice KrowMx. Ahora bien, como verán, la llaves "{}" siguientes a "if(isset($_SESSION['email']))" están vacías, sin ningún "echo". Lo hice azí, por que al iniciar sesión correctamente, la página se mostraba en su cabecera con el texto: "OK, tienes el acceso permitido" y no supe hacerlo de otra manera.

Eso está bien, me traerá algún problema???

Código PHP:
<?php  
session_start
();
if(isset(
$_SESSION['email'])) {
}
else {
header("Location: login_user.php");
}
?>
  #7 (permalink)  
Antiguo 20/09/2009, 16:20
 
Fecha de Ingreso: septiembre-2009
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Proteger página con E-mail activado

Cita:
Iniciado por paulkees Ver Mensaje
Hola...

Por lo menos en localhost lo he solucionado de esta forma, poniendo en la cabecera de la página a proteger (listado.php) esto, más o menos como dice KrowMx. Ahora bien, como verán, la llaves "{}" siguientes a "if(isset($_SESSION['email']))" están vacías, sin ningún "echo". Lo hice azí, por que al iniciar sesión correctamente, la página se mostraba en su cabecera con el texto: "OK, tienes el acceso permitido" y no supe hacerlo de otra manera.

Eso está bien, me traerá algún problema???

Código PHP:
<?php  
session_start
();
if(isset(
$_SESSION['email'])) {
}
else {
header("Location: login_user.php");
}
?>
No se si te entendí bien... lo que KrowMx quiere decir es que una vez que la condicion de "logeo" se cumple, entre esas llaves que has dejado vacias debes introducir el contenido de la página que quieres mostrar. El como ejemplo puso esa frase de "Ok... etc."

Si no me explique correctamente dilo e intento cambiar las palabras a ver si nos entendemos.
Un saludo.
  #8 (permalink)  
Antiguo 20/09/2009, 16:52
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: Proteger página con E-mail activado

hazlo como te lo puse en el ejemplo de arriba ;)
__________________
Hospedaje Web al mejor costo!
  #9 (permalink)  
Antiguo 20/09/2009, 18:07
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Proteger página con E-mail activado

Ya está, lo puse de esta manera y funciona:

Código PHP:
<?php  
session_start
();
if(isset(
$_SESSION['email']));
else {
header("Location: login_user.php");
}
?>
Gracias a todos por ayudarme!!!
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 07:02.