Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/05/2013, 14:05
juanmandi
 
Fecha de Ingreso: septiembre-2004
Ubicación: Maracay Edo. Aragua
Mensajes: 45
Antigüedad: 20 años, 4 meses
Puntos: 0
Pregunta Autenticacion de usuarios

Hola amigos, posteo este tema en este foro ya que estoy seguro que me ayudaran a resolver el problema. este codigo fue tomado de otro foro pero no me dan respuesta y necesito ayuda.

Este es un sistema de usuarios con protección de pagina.

El problema es que el sistema de registro me funciona bien inserta los datos en la tabla de usuarios perfectamente pero cuando intento entrar con el formulario users_Login.php no me deja acceder siempre me manda para la pagina de error......

Pego el codigo tal cual esta para que me ayuden

::::::::Insertamos nuestra tabla de datos en PHPMyAdmin::::::::::::::::

CREATE TABLE `usuarios` (
`id` int(10) NOT NULL auto_increment,
`usuario` varchar(99) NOT NULL default '',
`password` varchar(99) NOT NULL default '',
`fname` varchar(99) NOT NULL default '',
`lname` varchar(99) NOT NULL default '',
`email` varchar(99) NOT NULL default '',
`imagen_perfil` varchar(99) NOT NULL default '',
PRIMARY KEY (`id`))

::::::::::::::::Creamos el archivo de conexión a la Base de Datos.:::::::::

db.php

Código PHP:
<?php
   $dbHost 
"localhost";        //Ubicación de la DB, usualmente es localhost
    
$dbUser "xxxx";            //Usuario de la DB
    
$dbPass "xxxxxx";            //Password de la DB
    
$dbDatabase "db_name";    //Nombre de la DB
     
    
$db mysql_connect($dbHost,$dbUser,$dbPass)or die("Un error ha ocurrido mientras se intento conectar a la Base de Datos.");
    
//Conexión hacia la Base de Datos
    
mysql_select_db($dbDatabase$db)or die("No se pudo seleccionar la Base de Datos."); 
    
//Selecciona la DB
 
?>
::::::Hacemos nuestro lugar de inicio de sesión, para que se puedan logear los usuarios.:::::::

users_Login.php

Código PHP:
<link rel="stylesheet" href="css/d13.css">
<
div class="fnews">
<
form action="users_Verify.php" method="post">
   
Por favorescriba los datos necesarios para iniciar sesi&oacute;n:
<
br>
<
br>

Nombre de Usuario
<
input name="usuario" type="text" id="usuario" size=25>
Contraseña
<
input type="password" name="password" size=25>
<
input name="submit" type="submit" class="m" id="submit" value="Iniciar Sesión">
</
form><br><br>
<
strong>¿No tienes una cuentaRegistrate gratis</strong> <class="sm" href="users_Register.php"><strong>aquí</strong></a></div
::::::::::::Ahora, creamos el registro para los nuevos usuarios.::::::::::::::::::

users_Register.php

Código PHP:
<?php 
session_start
();
include(
"db.php"); 
?>
<link rel="stylesheet" href="css/d13.css">
<H1>Crear una nueva cuenta</H1><br>
<?php 
if(isset($_POST['submit'])){ 
    
$query sprintf("SELECT * FROM usuarios WHERE usuario='%s' LIMIT 1",mysql_real_escape_string($_POST['usuario']));
    
$sql mysql_query($query); 
    
$row mysql_fetch_array($sql); 
    if(
$row||empty($_POST['usuario'])|| empty($_POST['fname'])||empty($_POST['lname'])|| empty($_POST['email'])||empty($_POST['password'])|| empty($_POST['re_password'])||$_POST['password']!=$_POST['re_password']){ 
        
# si se deja un campo vacío va a tirar un error.
        
$error '<p>'
        if(empty(
$_POST['usuario'])){ 
            
$error .= 'El campo "Nombre de Usuario" se ha dejado vacío.<br>'
        } 
        if(empty(
$_POST['fname'])){ 
            
$error .= 'El campo "Nombre" se ha dejado vacío.<br>'
        } 
        if(empty(
$_POST['lname'])){ 
            
$error .= 'El campo "Apellido" se ha dejado vacío.<br>'
        } 
        if(empty(
$_POST['email'])){ 
            
$error .= 'El campo "Email" se ha dejado vacío.<br>'
        } 
        if(empty(
$_POST['password'])){ 
            
$error .= 'El campo "Contraseña" se ha dejado vacío.<br>'
        } 
        if(empty(
$_POST['re_password'])){ 
            
$error .= 'Debes repetir la contraseña<br>'
        } 
        if(
$_POST['password']!=$_POST['re_password']){ 
            
$error .= 'Las contraseñas no concuerdan.<br>'
        } 
        if(
$row){ 
            
$error .= 'El nombre de usuario que has escojido ya existe en la Base de Datos.<br>'
        } 
        
$error .= '</p>'
    }else{ 
        
$query sprintf("INSERT INTO usuarios(`usuario`,`fname`,`lname`,`email`,`password`)
            VALUES('%s','%s','%s','%s',PASSWORD('%s'))"

            
mysql_real_escape_string($_POST['usuario']), 
            
mysql_real_escape_string($_POST['fname']), 
            
mysql_real_escape_string($_POST['lname']), 
            
mysql_real_escape_string($_POST['email']), 
            
mysql_real_escape_string($_POST['password']))or die(mysql_error());
        
$sql mysql_query($query); 
        
# Redireccion a la página de logueo despues del registro.
        
header("Location: users_Login.php"); 
        exit; 
    } 

if(isset(
$error)){ 
    echo 
$error
    unset(
$error); 

?>  
<!-- Start your HTML/CSS/JavaScript here --> 
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<div align=center>
  <h3>Datos principales: </h3>
    <TABLE class="gp">

    <TR>
      <TD CLASS="slim">Usuario:</TD>
      <TD colspan=2><input name="usuario" type="text" id="usuario" size="20" <? if(!$row){echo 'value="'.$_POST['usuario'].'"';} ?>/></TD></TR>
    <TR>
      <TD CLASS="slim">Correo electrónico:</TD>
      <TD><input name="email" type="text" size="20" <? echo 'value="'.$_POST['email'].'"'?>/></td><td>
</TD></TR>
    <TR>
      <TD CLASS="slim">Contraseña:</TD>
      <TD><input name="password" type="password" size="20" /></TD></TR>
    <TR>
      <TD CLASS="slim">Repite Contraseña:</TD>
      <TD><input name="re_password" type="password" size="20" /></TD></TR>
</TABLE><br>
    <h3>Datos personales: </h3>
    <TABLE class="gp">

    <TR>
      <TD CLASS="slim">Nombre:</TD>
      <TD colspan=2><input name="fname" type="text" size="20" <? echo 'value="'.$_POST['fname'].'"'?>/></TD></TR>
    <TR>
      <TD CLASS="slim">Apellido:</TD>
      <TD><input name="lname" type="text" size="20" <? echo 'value="'.$_POST['lname'].'"'?>/></td><td>
</TD></TR>
</TABLE><br>
  PHP Snippets - Sistema de Usuarios BETA<br>
  <br> 
  </p>


  <INPUT name="submit" TYPE=submit CLASS="sum" id="submit" VALUE="¡Registrar cuenta!">

</div>
</form>
:::::::::::Ahora que tenemos todo lo esencial, creamos el archivo de verificación de logueo.:::::

users_Verify.php

Código PHP:
<?php 
include("db.php");
if(isset(
$_POST['submit'])){ 
    
$usr mysql_real_escape_string($_POST['usuario']); 
    
$pas hash('sha256'mysql_real_escape_string($_POST['password'])); 
    
$sql mysql_query("SELECT * FROM usuarios  
        WHERE usuario='$usr' AND 
        password='$pas' 
        LIMIT 1"
); 
    if(
mysql_num_rows($sql) == 1){ 
        
$row mysql_fetch_array($sql); 
        
session_start(); 
        
$_SESSION['usuario'] = $row['usuario']; 
        
$_SESSION['fname'] = $row['fname']; 
        
$_SESSION['lname'] = $row['lname']; 
        
$_SESSION['logged'] = TRUE
        
header("Location: users_PageVip.php"); // Puedes modificar la pagina a la cual te guste que valla despues del inicio de sesión
        
exit; 
    }else{ 
        
header("Location: users_Login.php"); 
        exit; 
    } 
}else{ 
    
header("Location: index.php");     
    exit; 

?>
::::Por ultimo, para concretar este tutorial, haremos la página privada que solo el usuario registrado puede ver::::::

users_PageVip.php

Código PHP:
<link rel="stylesheet" href="css/d13.css">
<?php 
session_start
(); 
include(
"db.php"); 
?>
<?
if($_SESSION['logged']==TRUE){ ?>

<H1>Página privada de usuarios</H1><br>
<div class="fnews">
   ¡Hola, <? echo("$_SESSION[usuario]");?>! Eres un usuario registrado, por lo tanto, puedes ver esta página. 
</div>

<? }
else echo(
"Lo sentimos, pero solo usuarios registrados pueden ver esto.");
?>

::::::Proteger las paginas para que no accedan por links:::::::

Código PHP:
<?php 
session_start
(); 
include(
"db.php"); 
?>
<?
if($_SESSION['logged']==TRUE){ ?>

EL CONTENIDO AQUI!!!!!!!  :D

<? }
else echo(
"Lo sentimos, pero solo usuarios registrados pueden ver esto.");
?>


OJO ESTO NO ES UN ROBO DE DATOS SOLO QUE NO ME DAN RESPUESTA EN EL OTRO FORO Y ESTOY SEGURO QUE EN ESTE ME AYUDARAN... Y TAMBIEN LE SERVIRA A ALGUIEN QUE LO NECESITE..

FUENTE: http://www.phperos.net/foro/index.php?topic=8421.0