CelulaWeb

[Tutorial] Sistema de Usuarios con PHP y MySQL

[Tutorial] Sistema de Usuarios con PHP y MySQL

En esta oportunidad les voy a dejar un tutorial básico para desarrollar un sistema de usuarios con PHP y MySQL, en el cual haremos uso de sesiones, trataré de ser lo más entendible posible, pero si tienen alguna duda, pueden decirla comentando en esta entrada.

Para empezar, crearemos nuestra tabla de usuarios con los siguientes campos:

CREATE TABLE `usuarios` (
    `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
    `usuario_nombre` varchar(15) NOT NULL DEFAULT '',
    `usuario_clave` varchar(32) NOT NULL DEFAULT '',
    `usuario_email` varchar(50) NOT NULL DEFAULT '',
    `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
    PRIMARY KEY (`usuario_id`)
)

Como podrán notar, el campo usuario_clave tiene una longitud de 32 caracteres, ya que la contraseña de los usuarios registrados las encriptaremos en md5(). Ahora pasamos a crear nuestro scripts PHP.

Creación de archivo de configuración de acceso a MySQL:
A este archivo lo llamaremos acceso_db.php y va a contener los datos de acceso a nuestra Base de Datos.

<?php
    $host_db 
""// Host de la BD
    
$usuario_db ""// Usuario de la BD
    
$clave_db ""// Contraseña de la BD
    
$nombre_db ""// Nombre de la BD
    
    //conectamos y seleccionamos db
    
mysql_connect($host_db$usuario_db$clave_db);
    
mysql_select_db($nombre_db);
?>

Formulario de Registro:
Ahora procederemos a crear nuestro formulario de registro, al cual llamaremos registro.php

<?php
    
include('acceso_db.php'); // incluimos el archivo de conexión a la Base de Datos
    
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
        // creamos una función que nos parmita validar el email
        
function valida_email($correo) {
            if (
eregi("^[_.0-9a-z-]+@[0-9a-z._-]+.[a-z]{2,4}$"$correo)) return true;
            else return 
false;
        }
        
// Procedemos a comprobar que los campos del formulario no estén vacíos
        
$sin_espacios count_chars($_POST['usuario_nombre'], 1);
        if(!empty(
$sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco
            
echo "El campo <em>usuario_nombre</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(empty(
$_POST['usuario_nombre'])) { // comprobamos que el campo usuario_nombre no esté vacío
            
echo "No haz ingresado tu usuario. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(empty(
$_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
            
echo "No haz ingresado contraseña. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(
$_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
            
echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(!
valida_email($_POST['usuario_email'])) { // validamos que el email ingresado sea correcto
            
echo "El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>";
        }else {
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']);
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']);
            
$usuario_email mysql_real_escape_string($_POST['usuario_email']);
            
// comprobamos que el usuario ingresado no haya sido registrado antes
            
$sql mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");
            if(
mysql_num_rows($sql) > 0) {
                echo 
"El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
            }else {
                
$usuario_clave md5($usuario_clave); // encriptamos la contraseña ingresada con md5
                // ingresamos los datos a la BD
                
$reg mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', NOW())");
                if(
$reg) {
                    echo 
"Datos ingresados correctamente.";
                }else {
                    echo 
"ha ocurrido un error y no se registraron los datos.";
                }
            }
        }
    }else {
?>
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
        <label>Usuario:</label><br />
        <input type="text" name="usuario_nombre" maxlength="15" /><br />
        <label>Contraseña:</label><br />
        <input type="password" name="usuario_clave" maxlength="15" /><br />
        <label>Confirmar Contraseña:</label><br />
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br />
        <label>Email:</label><br />
        <input type="text" name="usuario_email" maxlength="50" /><br />
        <input type="submit" name="enviar" value="Registrar" />
        <input type="reset" value="Borrar" />
    </form>
<?php
    
}
?>

Formulario de acceso:
Ahora pasaremos a crear nuestro formulario de acceso o Login, a este archivo lo llamaremos acceso.php

<?php
    session_start
();
    include(
'acceso_db.php');
    if(empty(
$_SESSION['usuario_nombre'])) { // comprobamos que las variables de sesión estén vacías        
?>
        <form action="comprobar.php" method="post">
            <label>Usuario:</label><br />
            <input type="text" name="usuario_nombre" /><br />
            <label>Contraseña:</label><br />
            <input type="password" name="usuario_clave" /><br />
            <input type="submit" name="enviar" value="Ingresar" />
        </form>                    
<?php
    
}else {
?>
        <p>Hola <strong><?=$_SESSION['usuario_nombre']?></strong> | <a href="logout.php">Salir</a></p>
<?php
    
}
?>

Este es el archivo que comprueba los datos ingresados en el formulario de login, lo llamaremos comprobar.php

<?php
    session_start
();
    include(
'acceso_db.php');
    if(isset(
$_POST['enviar'])) { // comprobamos que se hayan enviado los datos del formulario
        // comprobamos que los campos usuarios_nombre y usuario_clave no estén vacíos
        
if(empty($_POST['usuario_nombre']) || empty($_POST['usuario_clave'])) {
            echo 
"El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>";
        }else {
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']);
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']);
            
$usuario_clave md5($usuario_clave);
            
// comprobamos que los datos ingresados en el formulario coincidan con los de la BD
            
$sql mysql_query("SELECT usuario_id, usuario_nombre, usuario_clave FROM usuarios WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'");
            if(
$row mysql_fetch_array($sql)) {
                
$_SESSION['usuario_id'] = $row['usuario_id']; // creamos la sesion "usuario_id" y le asignamos como valor el campo usuario_id
                
$_SESSION['usuario_nombre'] = $row["usuario_nombre"]; // creamos la sesion "usuario_nombre" y le asignamos como valor el campo usuario_nombre
                
header("Location: acceso.php");
            }else {
?>
                Error, <a href="acceso.php">Reintentar</a>
<?php
            
}
        }
    }else {
        
header("Location: acceso.php");
    }
?>

Agregando mensaje de bienvenida con enlace hacia el perfil personal y un enlace para cerrar sesión, en cualquier página:
Ahora lo que haremos será agregar un mensaje de bienvenida al usuario logueado, además de un enlace para que éste mismo cierre su sesión:

Al inicio de todo el documento HTML de nuestras páginas agregamos lo siguiente:

<?php
    session_start
();
    include(
'acceso_db.php');
?>

Y en cualquier zona de nuestras páginas insertamos el siguiente código:

<?php
    
if(isset($_SESSION['usuario_nombre'])) {
?>
        Bienvenido: <a href="perfil.php?id=<?=$_SESSION['usuario_id']?>"><strong><?=$_SESSION['usuario_nombre']?></strong></a><br />
        <a href="logout.php">Cerrar Sesión</a>
<?php
    
}
?>

Cerrando la sesión del usuario:
Con este pequeño script cerramos la sesión del usuario, a este archivo lo llamamos logout.php

<?php
    session_start
();
    include(
'acceso_db.php'); // incluímos los datos de acceso a la BD
    // comprobamos que se haya iniciado la sesión
    
if(isset($_SESSION['usuario_nombre'])) {
        
session_destroy();
        
header("Location: index.php");
    }else {
        echo 
"Operación incorrecta.";
    }
?>

Página Personal de Usuarios:
Ahora pasaremos a crear una página personal para cada usuario registrado en el sistema, para ello, mostraremos el perfil de usuario, según su ID. Creamos un archivo llamado perfil.php

<?php
    session_start
();
    include(
'acceso_db.php');
    
$perfil mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
    if(
mysql_num_rows($perfil)) { // Comprobamos que exista el registro con la ID ingresada
        
$row mysql_fetch_array($perfil);
        
$id $row["usuario_id"];
        
$nick $row["usuario_nombre"];
        
$email $row["usuario_email"];
        
$freg $row["usuario_freg"];
?>
        <strong>Nick:</strong> <?=$nick?><br />
        <strong>Email:</strong> <?=$email?><br />
        <strong>Registrado el:</strong> <?=$freg?><br />
        <strong>URL del perfil:</strong> <a href="perfil.php?id=<?=$id?>">Click aquí</a>
<?php
    
}else {
?>
        <p>El perfil seleccionado no existe o ha sido eliminado.</p>
<?php
    
}
?>

Páginas restringidas:
Como en toda web con sistema de usuarios, siempre habrán zonas restringidas a las que sólo podrán acceder usuarios registrados, entonces para ello partimos del siguiente código:

<?php
    session_start
();
    include(
'acceso_db.php'); // incluímos los datos de acceso a la BD
    // comprobamos que se haya iniciado la sesión
    
if(isset($_SESSION['usuario_nombre'])) {
?>
        <!-- Aquí ponemos todo el código HTML de nuestra página restringida, desde <html> a </html>-->
<?php
    
}else {
        echo 
"Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
        <a href='acceso.php'>Ingresar</a> / <a href='registro.php'>Regitrarme</a>"
;
    }
?>

Recuperación de la contraseña:
Si el usuario ha olvidado su contraseña, habrá que facilitársela, para ello generaremos una nueva contraseña de forma aleatoria y se la enviaremos a su correo, a este archivo lo llamaremos recuperar_contrasena.php

<?php
    
include('acceso_db.php'); // incluímos los datos de acceso a la BD
    
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos del formulario
        
if(empty($_POST['usuario_nombre'])) {
            echo 
"No ha ingresado el usuario. <a href='javascript:history.back();'>Reintentar</a>";
        }else {
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']);
            
$usuario_nombre trim($usuario_nombre);
            
$sql mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");
            if(
mysql_num_rows($sql)) {
                
$row mysql_fetch_assoc($sql);
                
$num_caracteres "10"// asignamos el número de caracteres que va a tener la nueva contraseña
                
$nueva_clave substr(md5(rand()),0,$num_caracteres); // generamos una nueva contraseña de forma aleatoria
                
$usuario_nombre $row['usuario_nombre'];
                
$usuario_clave $nueva_clave// la nueva contraseña que se enviará por correo al usuario
                
$usuario_clave2 md5($usuario_clave); // encriptamos la nueva contraseña para guardarla en la BD
                
$usuario_email $row['usuario_email'];
                
// actualizamos los datos (contraseña) del usuario que solicitó su contraseña
                
mysql_query("UPDATE usuarios SET usuario_clave='".$usuario_clave2."' WHERE usuario_nombre='".$usuario_nombre."'");
                
// Enviamos por email la nueva contraseña
                
$remite_nombre ""// Tu nombre o el de tu página
                
$remite_email ""// tu correo
                
$asunto "Recuperación de contraseña"// Asunto (se puede cambiar)
                
$mensaje "Se ha generado una nueva contraseña para el usuario <strong>".$usuario_nombre."</strong>. La nueva contraseña es: <strong>".$usuario_clave."</strong>.";
                
$cabeceras "From: ".$remite_nombre." <".$remite_correo.">rn";
                
$cabeceras $cabeceras."Mime-Version: 1.0n";
                
$cabeceras $cabeceras."Content-Type: text/html";
                
$enviar_email mail($usuario_email,$asunto,$mensaje,$cabeceras);
                if(
$enviar_email) {
                    echo 
"La nueva contraseña ha sido enviada al email asociado al usuario ".$usuario_nombre.".";
                }else {
                    echo 
"No se ha podido enviar el email. <a href='javascript:history.back();'>Reintentar</a>";
                }
            }else {
                echo 
"El usuario <strong>".$usuario_nombre."</strong> no está registrado. <a href='javascript:history.back();'>Reintentar</a>";
            }
        }
    }else {
?>
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
        <label>Usuario:</label><br />
        <input type="text" name="usuario_nombre" /><br />
        <input type="submit" name="enviar" value="Enviar" />
    </form>
<?php
    
}
?>

Cambiando la contraseña:
Con este script, los usuarios podrán cambiar su contraseña, a este archivo lo llamaremos cambiar_contrasena.php

<?php
    session_start
();
    include(
'acceso_db.php'); // incluímos los datos de conexión a la BD
    
if(isset($_SESSION['usuario_nombre'])) { // comprobamos que la sesión esté iniciada
        
if(isset($_POST['enviar'])) {
            if(
$_POST['usuario_clave'] != $_POST['usuario_clave_conf']) {
                echo 
"Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
            }else {
                
$usuario_nombre $_SESSION['usuario_nombre'];
                
$usuario_clave mysql_real_escape_string($_POST["usuario_clave"]);
                
$usuario_clave md5($usuario_clave); // encriptamos la nueva contraseña con md5
                
$sql mysql_query("UPDATE usuarios SET usuario_clave='".$usuario_clave."' WHERE usuario_nombre='".$usuario_nombre."'");
                if(
$sql) {
                    echo 
"Contraseña cambiada correctamente.";
                }else {
                    echo 
"Error: No se pudo cambiar la contraseña. <a href='javascript:history.back();'>Reintentar</a>";
                }
            }
        }else {
?>
        <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
            <label>Nueva contraseña:</label><br />
            <input type="password" name="usuario_clave" maxlength="15" /><br />
            <label>Confirmar:</label><br />
            <input type="password" name="usuario_clave_conf" maxlength="15" /><br />
            <input type="submit" name="enviar" value="Enviar" />
        </form>
<?php
        
}
    }else {
        echo 
"Acceso denegado.";
    }
?>

Eso sería todo, naturalmente, se puede mejorar añadiéndole más cosas, pero para comenzar, puede ser útil.

Comentarios

  • ancortez dijo:
  • el 9 de Jul. del 2010 a las 12:15

Chida la entrada, ya sabía de eso porque lo utilizo y dejame decirte que esta muy bien explicado y será de mucha ayuda para los que van empezando con php y MySql.

Saludos!!!

  • pachyta dijo:
  • el 5 de Oct. del 2010 a las 14:10

hola muy bueno el tutorial lo probe y me de error en esta linea en recuperar_contrasena

$num_caracteres = 10; // asignamos el número de caracteres que va a tener la nueva contraseña

  • MijT dijo:
  • el 5 de Oct. del 2010 a las 15:22

@pachyta no tendría por qué darte error, pero qué mensaje te arroja?, prueba poniéndole comillas al 10, que quede de esta forma:

$num_caracteres = "10";

  • Gonzalo dijo:
  • el 1 de Nov. del 2010 a las 17:58

Le falta un " ; " en el recuperar contraseña.

if(mysql_num_rows($sql)) {


$row = mysql_fetch_assoc($sql) "AQUI LE FALTA UN ; "


$num_caracteres = "10"; // asignamos el número de caracteres que va a tener la nueva contraseña
$nueva_clave = substr(md5(rand()),0,$num_caracteres); // generamos una nueva contraseña de forma aleatoria

  • MijT dijo:
  • el 2 de Nov. del 2010 a las 06:43

@Gonzalo gracias por avisar de ese, se me había pasado.

Saludos!

  • cesar dijo:
  • el 5 de Nov. del 2010 a las 09:52

no funciona el recuperar_contrasena.php

  • cesar dijo:
  • el 5 de Nov. del 2010 a las 09:57

en el archivo recuperar_contrasena.php al ingresar el usuario , me dice "No ha ingresado el usuario" y eso que esta registrado

  • cesar dijo:
  • el 5 de Nov. del 2010 a las 10:03

otra cosa , cuando uno se registra e ingresa las claves , despues dice que las claves no son iguales. lo que ise fue quitarle un _ que tenia de mas al final la variable usuario_nombre_, dejandola asi usuario_nombre
y funciono.

  • cesar dijo:
  • el 5 de Nov. del 2010 a las 14:42

alguien me puede echar una mano en resolver la recuperacion de contraseña? , por favor,

  • MijT dijo:
  • el 5 de Nov. del 2010 a las 20:58

@cesar, gracias por avisar sobre los errores en el archivo recuperar_contrasena.php, ya está corregido.

Saludos!

  • carlos cid dijo:
  • el 9 de Nov. del 2010 a las 07:14

hola!

hay alguna forma de añadir redireccionamiento a esto? por ejemplo que usuario 1 puede entrar a pagina 1 usuario 2 puede entrar a pagina 2 etc etc, pero usuario 2 no puede entrar a pagina 1, se entiende? y que al iniciar sesion lleve automatico a pagina de cada uno.

gracias!

  • MijT dijo:
  • el 9 de Nov. del 2010 a las 08:35

@carlos cid, para hacer lo que deseas puedes tomar como base el apartado "páginas restringidas" de este tutorial, la redirección la puedes hacer con la función header().

Saludos.

  • Hugo dijo:
  • el 18 de Nov. del 2010 a las 17:56

Me sale este error no se a que se deba.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwusuarios
ecuperar_contrasena.php on line 10
El usuario no está registrado. Reintentar

Saludos excelente tutorial

  • MijT dijo:
  • el 18 de Nov. del 2010 a las 18:56

@Hugo el error se debe a un fallo mio en una de las variables, en tu archivo recuperar_contrasena.php ubícate en esta línea:

$usuario_nombre = trim($usuario); 


Y reemplázala por esta otra:

$usuario_nombre = trim($usuario_nombre); 


El problema estaba en que la variable $usuario no existía, ahora ya puedes probarlo sin problemas.

Saludos.

  • Hugo Mauricio dijo:
  • el 19 de Nov. del 2010 a las 10:22

Muchas gracias, pero ahora me pasa, que no encuentra el usuarios en la BD "El usuario david no está registrado" la verdad no noto el error, saludos!

  • MijT dijo:
  • el 19 de Nov. del 2010 a las 14:05

@Hugo gracias nuevamente por postear en esta entrada, y sí, acabo de ver que hay otro error mio, y es que en el query del archivo recuperar_contrasena.php no especifiqué la tabla (FROM), en dicho archivo, ubícate en esta línea:

$sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email WHERE usuario_nombre='".$usuario_nombre."'");

Y reemplázala por esta:

$sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");

Lo he revisado bien y ahora funciona correctamente, mil disculpas.

Saludos.

  • Hugo Mauricio dijo:
  • el 22 de Nov. del 2010 a las 13:18

Gracias de nuevo por contestarme, modifique la linea y ahora me salio esta

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwusuarios
ecuperar_contrasena.php on line 11
El usuario david no está registrado. Reintentar

busque y en la linea 11 tengo lo siguiente:
if(mysql_num_rows($sql)) {

y no veo ningún error, saludos y muchas gracias.

  • MijT dijo:
  • el 23 de Nov. del 2010 a las 09:57

Revisando mi comentario anterior (porque acabo de probar el script y funciona sin problemas), había un error en la concatenación de las variables en el query, lo correcto es esto:

Ubícate en esta línea

$sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email WHERE usuario_nombre='".$usuario_nombre."'");

Y reemplázala por esta:

$sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'") or die(mysql_error());

He agregado un die(mysql_error()) para que imprima exactamente el error en MySQL

Con eso no debería darte error, fíjate que tengas los campos y el nombre de la tabla tal y como está puesto en el manual.

Saludos.

  • Luis Leiva dijo:
  • el 26 de Dic. del 2010 a las 19:49

hola tengo un error en /registro.php ,, alguien me podria ayudar?

Parse error: syntax error, unexpected ')', expecting ']' in C:\Users\luis leiva\Desktop\xampp\htdocs\registro.php on line 67

  • argenis dijo:
  • el 5 de Ene. del 2011 a las 18:03

saludos a todos, esta muy interesante el código, estoy probando el script Recuperar contraseña, después de algunos errores, no me envia la contraseña al correo, la modifica en la base de datos pero no la envía para el correo. simplemente aparece este mensaje "No se ha podido enviar el email"

  • Leixx dijo:
  • el 6 de Feb. del 2011 a las 08:45

Ayuda.. Me sale este error en el registro:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:xxxxxx
egistro.php on line 30

Y en la línea 30 esta esto:

if(mysql_num_rows($sql) > 0) {

  • Gabriel dijo:
  • el 16 de Feb. del 2011 a las 13:02

buenas tardes, muchas gracias este codigo me ha ayudado bastante, pero tengo un error al recuperar contraseñas me sale lo siguiente:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:xampphtdocsSistema_experto
ecuperar_contrasena.php on line 28
No se ha podido enviar el email. Reintentar

creo que es por no tener un servidor de correo pero ps la verdad no se como se configura eso, le agradezco si me puede colaborar, gracias.

  • erick dijo:
  • el 12 de Mar. del 2011 a las 17:17

me aparece acceso denegado en cambiar contraseña

  • Esna dijo:
  • el 24 de Mar. del 2011 a las 18:44

Hola oye me arroja este error en acceso y en logout, mira fijate. aqui en acceso da:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /www/zxq.net/t/h/e/thedkm/htdocs/acceso.php:12) in /www/zxq.net/t/h/e/thedkm/htdocs/acceso.php on line 33

y en logout dice:
Warning: Cannot modify header information - headers already sent by (output started at /www/zxq.net/t/h/e/thedkm/htdocs/acceso_db.php:10) in /www/zxq.net/t/h/e/thedkm/htdocs/logout.php on line 7

Mira aqui estan los links para que cheques (puse los codigos tal cual ya los cheque):
http://thedkm.zxq.net/acceso.php
http://thedkm.zxq.net/registro.php

Sitio restringido:
http://thedkm.zxq.net/pruebaseguridad.php

  • MijT dijo:
  • el 25 de Mar. del 2011 a las 09:34

@Esna al parecer el problema se debe a que antes de la función session_start() hay código HTML y por ello te arroja esos errores, lo recomendable es que dicha función la coloques al inicio del documento, por ejemplo:

<?php
    session_start
();
?>
<html>

De esa forma ya no deberían salirte esos errores.

Saludos.

  • Userone dijo:
  • el 26 de Mar. del 2011 a las 16:20

Por que el registro.php no me muestra nada? aparece todo en blanco y no veo el formulario...

Saludos y muchas gracias

  • Esna dijo:
  • el 27 de Mar. del 2011 a las 03:03

Muchas gracias MijT, lo realize y todo bien.

  • ivan dijo:
  • el 28 de Mar. del 2011 a las 10:32

Hay un error en el codigo registro.php en la linia nº 3.

  • Juan dijo:
  • el 12 de Jul. del 2011 a las 12:41

No sirve el código de registro.php, me pueden colaborar con el código

Gracias,

  • MijT dijo:
  • el 12 de Jul. del 2011 a las 22:04

Acabo de corregir los errores que presentaba el script, y ahora, luego de probarlo, ya puedo decirles que funciona correctamente.

Disculpen las molestias y la demora.

Saludos.

  • Javier dijo:
  • el 15 de Ago. del 2011 a las 05:45

Hola, pues a mi me sigue arrojando el error " No se ha podido el emaial ".....por lo demás todo correcto, pero imposible el recuperar claves.

Gracias.

  • Jean dijo:
  • el 18 de Ago. del 2011 a las 18:30

Buenas el formulario de olvido contraseña funciona bien el unico incoveniente es que la clave que me llega al correo es diferente a la que cambia en la base de datos, Esperon que me ayuden

  • MijT dijo:
  • el 19 de Ago. del 2011 a las 08:42

@Jean, lo que pasa es que al querer recuperar tu contraseña, lo que hace el script es generarte una nueva contraseña y te la envía al correo, luego de eso puedes cambiarla por la que sueles usar.

  • Jean dijo:
  • el 19 de Ago. del 2011 a las 14:35

ok Ya entiendo, Pero lo que me gustaria es saber si puedo modificar el script y de que forma para que me envie la misma contraseña que tenia antes y la cual se encuentra guaradada en la base de datos en ves de generarme una nueva.

  • MijT dijo:
  • el 19 de Ago. del 2011 a las 15:03

@Jean, si quieres enviar la misma contraseña tendrías que editar también el script de registro, login y cambio de contraseña, ya que en todos ellos se usa la función md5() para encriptar las contraseñas. Y eso sí, puedes hacerlo.

Saludos.

  • Jean dijo:
  • el 19 de Ago. del 2011 a las 16:34

Amigo la parte de acceso no funciona, al ingresar los datos los cuales son los que se encuentran guardados en la base de datos me da error, espero que revise el scrip

  • Manuel dijo:
  • el 26 de Set. del 2011 a las 21:23

Esta bien pero me parece algo incompleto. Con este sistema como muestro el contenido de los usuarios, por ejemplo si un usuario quiere ver su perfil. Saludos.

  • hans dijo:
  • el 5 de Oct. del 2011 a las 14:32

muchas gracias por el este tuto la verdad que me sirvio mucho lo implemente en un sistema de noticias, espero q sigas haciendo este tipo de tutoriales, mil graciasss

  • Fernando dijo:
  • el 19 de Oct. del 2011 a las 10:48

me registra el usuario, al darle recuperar contraseña aparecer "No se ha podido enviar el email. Reintentar"
en

$enviar_email = mail($usuario_email,$asunto,$mensaje,$cabeceras);
if($enviar_email)

di le quito el $enviar_email y lo dejo

mail($usuario_email,$asunto,$mensaje,$cabeceras);
if(mail)
me dice que el mensaje fue enviado, pero nunca llega, ayudenme por favor

  • Diego dijo:
  • el 25 de Oct. del 2011 a las 15:09

Muy bueno el aporte amigo, lo unico que le agregue fue la validacion de email en la base de datos, para que no puedan registrarse muchos usuarios con el mismo email, muchisimas gracias por tu aporte.

  • miguel dijo:
  • el 27 de Oct. del 2011 a las 08:04

recuperar_contrasena.php:
linea:
mail($usuario_email,$asunto,$mensaje,$cabeceras);
if(mail)
me dice que el mensaje fue enviado, pero nunca llega, ayudenme por favor

  • carlitox dijo:
  • el 28 de Oct. del 2011 a las 09:49

buenas muy bueno pero me da un error en registro.php que dice ase:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwSilmar(definitivo)users
egistro.php on line 34
y la linea 34 es lo siguente:
if(mysql_num_rows($sql) > 0) {
y lo que esta antes es :
$sql = mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre=.$usuario_nombre.");

  • MijT dijo:
  • el 28 de Oct. del 2011 a las 11:44

@carlitox parece que hay algo mal en tu consulta SQL. Tú tienes esta línea:

$sql = mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre=.$usuario_nombre.");

Bueno, esa línea cámbiala por esta:

$sql = mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");

Con eso ya no te debería dar problemas.

Saludos.

  • newsaeta dijo:
  • el 29 de Oct. del 2011 a las 13:14

Un tuto genial, he probado varios y todos me daban errores, gracias.
Me ha ayudado mucho.

Un saludo

  • Jorge dijo:
  • el 1 de Nov. del 2011 a las 22:47

Cuando intento cerrar sesion me sale este error:

Warning: Cannot modify header information - headers already sent by (output started at /data/multiserv/users/708075/projects/1715760/www/singin/acceso_db.php:11) in /data/multiserv/users/708075/projects/1715760/www/singin/comprobar.php on line 18

La linea 18 es: header("location: acceso.php");


Warning: Cannot modify header information - headers already sent by (output started at /data/multiserv/users/708075/projects/1715760/www/singin/acceso_db.php:11) in /data/multiserv/users/708075/projects/1715760/www/singin/logout.php on line 7

La linea 7 es: header("location: index.php");

Es evidente que ele HEADER ME ESTAD DANDO PROBLEMAS, pero no logro solucionarlos, si alguien me ayuda se los agradeceré!!

  • MijT dijo:
  • el 2 de Nov. del 2011 a las 07:20

Hola Jorge, el problema que tienes se debe a que no puedes enviar NADA antes de modificar las cabeceras (con funciones como setcookie(), header() o session_start()). Posiblemente tengas un espacio antes o después de abrir/cerrar el modo de PHP, concretamente en el archivo acceso_db.php en la línea 11.

  • Kvashir dijo:
  • el 2 de Dic. del 2011 a las 16:36

Felicidades el primero que posetea esto actualizado y funciona. y eso que busque por miles de webs, eres el mejor sinduda :D

  • Gustavo dijo:
  • el 19 de Dic. del 2011 a las 07:09

A mi me tira error y :S ¿Pdrías subir un .RAR con todos los archivos?

Muchas gracias.

  • MijT dijo:
  • el 19 de Dic. del 2011 a las 07:58

@Gustavo: podrías decir en dónde te muestra error?, he probado el script varias veces desde la última vez que lo reescribí y todo funcionó correctamente.

Lo de subir los archivos en un .rar, lo haré llegando a casa, ahora estoy en el trabajo un poco atado de manos.

Saludos!

  • Spider-Man dijo:
  • el 25 de Dic. del 2011 a las 15:38

La función eregi() está obsoleta, se debe usar preg_match()

cambiar esta linea de codigo:

function valida_email($correo) {
    if (eregi("^[_.0-9a-z-]+@[0-9a-z._-]+.[a-z]{2,4}$", $correo)) return true;
    else return false;



por:

function valida_email($correo) {
    if (preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)) return true;
    else return false;
}


en todas las páginas en donde aparezca el código, obviamente :)

Gracias por aportar y darnos parte de tu tiempo en este tutorial, me ha sido de gran ayuda!! ;)

  • Horacio dijo:
  • el 6 de Ene. del 2012 a las 22:16

Hola, desde muchas gracias y en realidad soy muy nuevo en esto yo queria preguntar dentro esta base como seria el codigo para que cada usuario registrado tenga su pagina individual (privada) creo que la llaman perfil o algo asi.
Muchas Gracias

  • MijT dijo:
  • el 7 de Ene. del 2012 a las 09:24

Hola @Horacio, eso es sencillo, para obtener la página de perfil de cada usuario, puedes usar su ID de esta forma:

http://www.tuweb.com/perfil.php?id=1

Creas tu archivo PHP llamado perfil.php y en él haces la consulta a la tabla usuarios basándote en la ID de éstos:

<?php
    session_start
(); // iniciamos la sesión
    
include('acceso_db.php'); // incluímos el archivo de acceso a la BD
    
$perfil mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
?>


Luego haces un while para obtener los datos del usuario relacionado a la ID obtenida por $_GET para finalmente mostrarla como HTML. Espero haberme dejado entender.

Saludos.

  • Horacio dijo:
  • el 7 de Ene. del 2012 a las 20:26

Gracias MijT : mi tema es que tengo un pequeño emprendimiento y estoy buscando que por el servicio prestado el cliente tenga acceso a la informacion de lo echo, voy a ver si me sale lo que me recomendaste mil gracias. Por otra parete si no te molesta, yo tengo una base funcionando pero antes del perfil, si es posible hacer un himpervinculo de datos de mysqul. si no te es molestia:
asi es como me sale despues de logueado:

Nombre de Usuario: horacio
Fecha de registro: 01-01-2012 - 15:34
Email de registro: hpriegue@yahoo.com.ar
url de registro: horacio.php
IP: 186.19.50.253

URL DE REGISTRO: horacio.php AQUI seria ideal el himpervinculo a la pagina, sera posible hace bastante que estoy buscando la manera, no me da

el codigo php:

<?php
include("conexion.php");
user_login();
echo '<h2>Pagina solo para usuarios registrados</h2><br />';
echo '<b>Nombre de Usuario:</b> ' . $_SESSION['nick'] . '<br />';
echo '<b>Fecha de registro:</b> ' . date("d-m-Y - H:i", $_SESSION['fecha']) . '<br />';
echo '<b>Email de registro:</b> ' . $_SESSION['mail'] . '<br />';
echo '<b>url de registro:</b> ' . $_SESSION['url'] . '<br />';
echo '<b>IP:</b> ' . $_SESSION['ip'] . '<br /><br />';

Desde ya Muchas gracias ya veo el perfil, gracias
saludos

  • MijT dijo:
  • el 8 de Ene. del 2012 a las 09:24

@Horacio, acabo de editar el post, añadiendo el enlace hacia el perfil personal del usuario, en el item que dice Agregando mensaje de bienvenida..., y a continuación, he añadido un nuevo item con el archivo PHP que mostrará el perfil personal de cada usuario, incluída la URL de acceso al perfil. Espero que te sirva.

Saludos.

  • Horacio dijo:
  • el 10 de Ene. del 2012 a las 18:52

MijT Un millon de gracias, estoy utilizando y funciona perfectamente, lo del perfil mi gran tema, me funciona lo tuyo pero me es poca informacion lo que muestra que serian los datos que figuran en mysaql, mi pregunta es si esiste la posibilidad que en la URL del perfil de usuario me envia a otra pagina que yo mismo cree individualmente para cada usuario.

Igualmente MUCHAS GRACIAS de onda MUCHOS SALUDOS

  • Horacio dijo:
  • el 15 de Ene. del 2012 a las 12:29

Hola MijT disculpa que te siga molestando te pregun como seria el post para cuando el usuario se registra el sistema le mande un E-mail para activar la cuenta. Como lesto no?

Gracias un millon

  • Mauricio dijo:
  • el 31 de Ene. del 2012 a las 06:53

te voy a hacer 2 sugerencias para que tu script sea un tremendo fierrazo!!!!

1° que le agregues al archivo registro.php un envío de correo para cuando el usuario se registra le envies la info a su correo
2° que le integres PHPMAILER porque no todos los servidores tienen el correo activado y para los que utilizamos servidores gratuitos a veces es un dolor de cabezas terrible!! y de paso le agregas mas utilidad (en mi opinion claro...)

por ultimo quiero felicitarte porque la verdad que es un fierrazo todo tu script

saludos, segui asi!!! y si podes mejorar esas 2 cositas que te sugiero el script va a ser un fierrazo 100%!!!!!!

  • Mauricio dijo:
  • el 31 de Ene. del 2012 a las 06:58

y una ultima cosa que ya sería lo mas de lo mas...

podrías poner un archivo zipeado para bajar??? será mucho pedior???

porque esto de andar haciendo copy-paste muchas veces se presta al error y la verdad no da hacer semejante tuto para que un descuidado meta mal el dedo y haga cag*****das jejeje

bueno, es una sugerencia nomas, pero sería bastante util

  • MijT dijo:
  • el 31 de Ene. del 2012 a las 07:42

Hola @Mauricio, gracias por tus sugerencias, pero en principio, lo que quería mostrar era una forma básica de hacer un script de este tipo, por algo puse al final que puede mejorarse anadiéndole más cosas.

Ahora por falta de tiempo (el trabajo), apenas puedo entrar y poner uno u otro post, pero tu idea es buena, voy a tratar de liberarme un poco para añadir esas cosas que sugieres.

¡Saludos!

  • Lorenzo dijo:
  • el 13 de Feb. del 2012 a las 17:28

HOla muy bueno el tutorial, quería hacerles una consulta me salta este error

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/torresed/public_html/isj/a_u.php on line 135
ha ocurrido un error y no se registraron los datos.

desde muchas gracias

  • Maru dijo:
  • el 14 de Feb. del 2012 a las 14:40

Hola, está muy bien explicado, pero me da errores en todas las páginas php.... la verdad, tengo muchas ganas de hacerlo por mí misma, pero requiere mucha destreza. Quizá no hay hecho bien la configuración en el Mysql.
Los mensajes que me salen son tipo:

Parse error: syntax error, unexpected T_VARIABLE in /is/htdocs/wp1031212_UXNZ7RQ0NJ/www/cac/perfil.php on line 4

esta es la web (de prueba) http://www.dfmaker.com/perfil.php

Por favor les agradecería mucho que me ayudaran, si pueden pasarme algun zip o carpeta con el contenido.... sin errores... muchisimas gracias desde Berlín!!

  • kraneo dijo:
  • el 16 de Feb. del 2012 a las 13:26

En recuperar conrtraseña me muestra el siguinete error:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()

  • MijT dijo:
  • el 16 de Feb. del 2012 a las 14:00

@Kraneo: El mensaje de error que te aparece es porque, al parecer, estás ejecutando el script en Windows y no tienes un servidor saliente(SMTP) instalado. Prueba con el miniRelay.

Saludos.

  • andree soporte dijo:
  • el 17 de Feb. del 2012 a las 11:27

en el registro no me lo guarda en la base de datos y no me registra me sale esto: gracias
<?=$_SERVER['PHP_SELF']?>

Estoy desde localhost

  • rauljoshua dijo:
  • el 21 de Feb. del 2012 a las 23:37

hola tengo un problema con el acceso y comprobar me arroja esto


Warning: Cannot modify header information - headers already sent by (output started at /home/tekmacon/public_html/Sitio Regalos/nuevo/acceso_db.php:10) in /home/tekmacon/public_html/Sitio Regalos/nuevo/comprobar.php on line 18

el de logout me manda este error

Warning: Cannot modify header information - headers already sent by (output started at /home/tekmacon/public_html/Sitio Regalos/nuevo/acceso_db.php:10) in /home/tekmacon/public_html/Sitio Regalos/nuevo/logout.php on line 7

cheque los coments y hay un en el que dices que el error esta concretemente en el archivo acceso_db.php

pero no tengo ningun salto de linea o que le falte un caracter me podrias ayudar soy muy novato en esto y la verdad es que no le encuentro la solucion

de antemano te lo agradesco

  • MijT dijo:
  • el 22 de Feb. del 2012 a las 09:09

@rauljoshua Ten en cuenta que la línea:

session_start();

Debe ir al inicio de TODO el documento HTML de esta forma:

<?php
    session_start
();
?>
<html>
<!-- demás elementos -->

Ya que si estás copiando el script como aparece en el post y lo estás pegando dentro del <body> te arrojará esos errores.

Saludos.

  • rauljoshua dijo:
  • el 23 de Feb. del 2012 a las 10:31

Hola @MjiT

Gracia por la pronta respuesta la verdad es que es muy dificil encontrar gente que te apoye =)

bueno mira te comento que el session_start();

que me mencionas lo tengo hasta el inicio de todo mi codigo de html ahora, puede ser que este archivo lo tengo como Inedx.html, tal ves tenga que ser en PHP la verdad no lo habia pensado, pero si no fuera el caso es que me sigue arrojanado aun asi dado lo que me comentas.

nuevamente te agradesco por tomarte el tiempo de leerme y de constestarme.

saludos =D.

  • MijT dijo:
  • el 23 de Feb. del 2012 a las 10:54

Hola @rauljoshua, el archivo comprobar.php no necesitas ponerlo dentro de un documento con elementos HTML, ya que su única función es esa, comprobar los datos ingresados desde otro archivo, y devolver el valor adecuado, ya sea redirigirte a la página de origen si es que los datos eran los correctos, o devolverte un mensaje de error si no lo eran.

Es recomendable que tus archivos sean .php, y en todos ellos, al inicio de todo el documento poner:

<?php
    session_start
();
?>

Saludos.

HOLA, me encanta la atención que tienes con nosotros, siempre
eres muy amable, mi pregunta es de otro tema, si tienes el tema y decirme donde , estare agradecido, se puede tener una base de datos de imagenes?, por ejemplo tengo una base de datos de perfumes y cuando escribes el perfume que estas buscando, sale la informacion del perfume en eso no hay ningun problema, pero quisiera a parte de la informacion que sale, que saliera la imagen del perfume,si se puede? y en donde estan esos tutoriales? gracias de antemano y un saludo cordial.

  • MijT dijo:
  • el 25 de Feb. del 2012 a las 07:56

@lorenzo en esta URL hay un tutorial que hace lo que necesitas, ólo tendrías que adaptarlo al script que usas.

Saludos.

HOLA, muchas gracias, oye otra pregunta ya logre eso, pero
tengo un carrito de compras un poco austero, tiene solo <form>
y ahi va poniendo la gente los articulos que quieren por ejemplo salen los perfumes y ya dicen 2 de este 3 de este y al enviar les aparece la nota total de lo que compraron y el precio, pero son como 500 productos y para que funcione los tengo en la misma pagina porque si los pongo en diferentes paginas solo les aparece la nota final de la pagina en la que estan, quiero almacenar eso datos de la otra hoja, pero sin base de datos ni sesion star se puede??

  • spaceweb dijo:
  • el 14 de Mar. del 2012 a las 19:17

Si quereis crear una página personalizada para cada usuario y que este pueda por ejemplo ver sus datos de la web y más cosas a vuestra imaginación, solo tenéis que cambiar en el archivo "comprobar.php" esto: header("Location: perfil.php?id=".$_SESSION['usuario_id']."");
Si quieres pasar a vernos puedes hacerlo <a href="http://www.spaceweb.es">Visitar nuestro sitio</a>

  • Mago_de_Oz dijo:
  • el 15 de Mar. del 2012 a las 22:15

Hola esta todo casi bien al llamar a perfil.php me sale este error:

Notice: Undefined index: id in /opt/lampp/htdocs/usus/perfil.php on line 4

El perfil seleccionado no existe o ha sido eliminado

O como debo hacer para llamar el perfil por favor indicame donde está el error

  • MijT dijo:
  • el 16 de Mar. del 2012 a las 07:38

@Mago_de_Oz para llamar al perfil tu URL puede tener este formato:

http://tuweb.com/perfil.php?usuario_id=1

El "1" puedes reemplazarlo por la id de tus usuarios, y en base a eso hacer la consulta en la base de datos para mostrar el perfil correspondiente a dicha ID.

Saludos.

  • Mago_de_Oz dijo:
  • el 16 de Mar. del 2012 a las 22:20

Gracias era tan obvio lo pusiste en tus ejemplos y no lo vi il gracias.. Una consulta más como puedo hacer una página como la que tienes tu con este foro donde preguntan y se puede responder algo asi de sencillo

  • pachyta dijo:
  • el 3 de Abr. del 2012 a las 12:36

hola tengo un error al querer mostrar los datos del usuario en un frame, este es el error que me sale:
Notice: Undefined index: id in E:\xampp\htdocs\Prode\fecha1.php on line 8

El perfil seleccionado no existe o ha sido eliminado

en la linea 8 yo tengo este codigo
$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());

este es el codigo completo que tengo en fecha1.php que quiero msotrar un un frame
<?php
session_start();
include('acceso_db.php'); // incluímos los datos de acceso a la BD
// comprobamos que se haya iniciado la sesión
if(isset($_SESSION['usuario_nombre'])) {
?>
<?php
$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
if(mysql_num_rows($perfil)) { // Comprobamos que exista el registro con la ID ingresada
$row = mysql_fetch_array($perfil);
$id = $row["usuario_id"];
$participante = $row["usuario_participante"];
$nick = $row["usuario_nombre"];
$email = $row["usuario_email"];
$freg = $row["usuario_freg"];
?>
<strong>Participante:</strong> <?=$participante?><br />
<strong>Nick:</strong> <?=$nick?><br />
<strong>Email:</strong> <?=$email?><br />

<?php
}else {
?>
<p>El perfil seleccionado no existe o ha sido eliminado.</p>
<?php
}
?>
<?php
}else {
echo "Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
<a href='acceso.php'>Ingresar</a> / <a href='registro.php'>Regitrarme</a>";
}
?>

si me podes dar una manito ..contento..
muchas gracias

  • pachyta dijo:
  • el 4 de Abr. del 2012 a las 07:03

hola de nuevo yo , perdon pormolestar,,quiero saber como hacer para que en las paginas restringidas me muestre mas datos del usuario, es el ejemplo solo me muestra el mombre y no se como hacer para qeu me muestre el mail tambien..AYUDA!!!
saludos y gracias de ante mano

  • classes dijo:
  • el 5 de Abr. del 2012 a las 12:18

Gracias por el aporte, ahora lo estoy utilizando, pero me di cuenta de un error, no se si es tuyo o mio :P, cuando te registras, colocar todo, y en el correo, coloco: demo@demo.net, see registro, bueno, vuelvo a registrar otro usuario y coloco en correo el mismo correo demo@demo.net, me lo registra. quiero que muestre un error, de que el mail ya esta siendo utilizado.

Saludos, gradioso script

  • pablo dijo:
  • el 18 de Abr. del 2012 a las 17:40

hola tengo un problema con el registro me dice que no tengo acceso me sale este error en el firefox
FORBIDDEN
You don't have permission to access /< on this server
y me sale otro error en recuperar contraseña y no se cual es el error:

( ! ) Fatal error: Unknown: Failed opening required 'C:/wamp/www/recuperar contraseña.php' (include_path='.;C:\php\pear') in Unknown on line 0

  • Pinpito dijo:
  • el 23 de Abr. del 2012 a las 13:30

Hola estoy siguiendo al dedillo este ejercicio ya que es muy interesante y estaba buscando algo así para un posible proyecto que tengo en mente.
Cuando inserto un nuevo usuario en mi base de datos mediante el formulario lo hace genial!!
pero cuando me quiero acceder a la base de datos, siempre meda un error. reintentar
¿Que puede ser? he probado todo y ya me duele la cabeza,
Ayuda por favorrrr
Saludos

  • yacky dijo:
  • el 11 de Mayo del 2012 a las 20:39

seria mucho que mejor que si lo pudieras poner para descargarlo
gracias

  • jhoan dijo:
  • el 11 de Mayo del 2012 a las 20:58

bro es verdad lo que dice yacky, que deberias de pasar el doc para solo descargarlo
xd

  • runy dijo:
  • el 12 de Mayo del 2012 a las 02:00

una duda porque no me aparece el nombre del usuario cuando esta en su cuenta ?
ejem: Hola " " | Salir
les digo que esta rebien el cod

  • rene dijo:
  • el 12 de Mayo del 2012 a las 02:56

hola disculpa, la pagina perfil supongo que t muestra el info de tu cuenta pero me sale error en la linea 4.
asi.
( ! ) Notice: Undefined index: id in C:\wamp\www\Nueva carpeta\perfil.php on line 4

  • Alexis dijo:
  • el 29 de Mayo del 2012 a las 01:56

muy buen tuto pero una pregunta como podria hacer para que taambien puedna modificar usuay correo ? gracias o si me puedes facilitar el codigo=)

  • Jose dijo:
  • el 29 de Mayo del 2012 a las 02:37

Porque me aparece el siguiente error en registrar.php ?
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 80

Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 166

  • Jose dijo:
  • el 29 de Mayo del 2012 a las 02:55

Ya corregi lo otro pero me aparece el siguiente error

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Nota\registroavanzado.php on line 28

  • Roldan dijo:
  • el 20 de Jun. del 2012 a las 10:44

Hola wow!!. Este post esta increible muy pero muy bueno, muchas gracias por tomarte el tiempo para hacer un trabajo tan completo y además responder a las preguntas y dudas.

Felicidades wey. Saludos de México.

  • Echuc dijo:
  • el 21 de Jun. del 2012 a las 16:15

Solo puedo decir gracias, funciona perfectamente.

  • Mastermaind dijo:
  • el 25 de Jun. del 2012 a las 13:12

Yo tengo el mismo problema que Jose en el Registro de usuarios, ya aplique la correccion que explica cartitox y nada me sigue saliendo el mismo error les agradesco su ayuda.

  • julian dijo:
  • el 2 de Jul. del 2012 a las 20:42

HELP ME!!!!!
tengo un error en registro.php

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\

????????????

  • Daniel dijo:
  • el 17 de Jul. del 2012 a las 11:16

hola amigo, muchas gracias por el codigo, realmente nos ayudas muchisimo, estoy haciendo un pequeño proyecto y tu codigo me a servido mucho, solo que me salta un error en el script comprobar.php

Warning: Cannot modify header information - headers already sent by .... comprobar.php on line 26

no se cual sea el problema, podrias echarme la mano con eso? o alguien que lo haya solucionado porfas me diga como.

Gracias por todo y saludos a toda la gente

  • Daniel dijo:
  • el 17 de Jul. del 2012 a las 11:59

hola de nuevo, ya pude resolver el problema que tenia, ya habian posteado la solucion, ahora estoy haciendo algunas pruebas y tratabdo de resolver otros problemas que me salieron.
Estamos en contacto de todas maneras

  • abraham dijo:
  • el 19 de Jul. del 2012 a las 10:57

hola me podrian ayudar a corregir este problema es el mismo problema que jose gracias espero me ayuden

Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 80

Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 166

  • Ángel Flores dijo:
  • el 24 de Jul. del 2012 a las 10:09

Buen día. Un tutorial EXCELENTE. Yo ya lo adapté a mis necesidades. Pero, hay un problema. No funciona la opción de "recuperar contraseña". Ya modifiqué, verifiqué, hice todo lo de aqui y sigue sin enviar el correo. Me marca lo siguiente: No se ha podido enviar el email" Reintentar.

Alguien ha podido verificar que funcione de forma adecuada?

MiJT, algun correo para poder localizarte y ver si me puedes apoyar? Gracias

  • Cristian Gonza dijo:
  • el 13 de Ago. del 2012 a las 12:46

Gracias Totales!!! =)

Disculpa Amigo!

Tengo un problema a la hora de dejar iniciada la sesión para una pagina restringida, me dice que no se puede acceder debido a que no esta registrado.

El 'user' ya esta registrado, pero es como si no se hubiera inicializado la sesión del mismo!

Gracias :)

  • javi dijo:
  • el 15 de Ago. del 2012 a las 10:13

No funciona la pagina de perfil, solo me muestra la parte del ELSE

El perfil seleccionado no existe o ha sido eliminado.

El fallo debe estar en el IF, pero no logro encontrarlo.

Gracias de antemano y fenomenal POST

Ya arregle los detalles, pero ahora quisiera saber si puedo implementar lo de recuperación de contraseña como para hacer modificaciones o eliminación de registros del mismo

  • javi dijo:
  • el 19 de Ago. del 2012 a las 20:53

Hola ya solucione lo del perfil, esta es la linea que no me funcionaba

$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());

y esta es la sustitucion para que me funcionara

$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_SESSION['usuario_id']."'") or die(mysql_error());

  • cramxd dijo:
  • el 22 de Ago. del 2012 a las 08:13

me ha servido de mucho, pero no sé si lo incorporaré, muy buen post

  • adn dijo:
  • el 27 de Ago. del 2012 a las 18:27

Me sale un error cuando intento logearme. El error es el siguiente.

"Undefined variable: HTTP_POST_VARS in C:\wamp\www\validar_usuario.php on line 12"

He intentado definir la variable pero luego me sale que no he especificado ningun usuario o contraseña. Y me deja perfectamente registrarme pero no puedo logearme. Ayuda por favor.

Un saludo y graciias.

  • adn dijo:
  • el 27 de Ago. del 2012 a las 18:34

Solucione el problema, pero gracias de todas formas por el post!

  • seravifer dijo:
  • el 2 de Set. del 2012 a las 10:29

Buenas, esta muy bien el tutorial pero me gustaria si podrian decirme que cuando se inicia sesion se le redigera a su panel de usuario¿?

  • Gustavo chavez m dijo:
  • el 6 de Set. del 2012 a las 21:23

Buenas, tengo un problema con el archivo "recuperar_contrasena.php" , el problema es que envia el correo con la nueva clave de 10 digitos pero al ingresarla en el "login" no me la reconoce ... verifico que no se esta guardando alparecer la nueva clave en la BD .

estoy validando por medio del "correo(email)", no por el usuario mi metodo de login es por email y clave.

  • rodrigo dijo:
  • el 17 de Set. del 2012 a las 18:26

cuel es el index??

  • Leo dijo:
  • el 23 de Set. del 2012 a las 16:49

Hola quisiera saber como ocupar el archivo de pagina restringida soi novato en esto i me ayudarian mucho si me explicaran gracias...!!

  • Leo dijo:
  • el 23 de Set. del 2012 a las 16:57

También me gustaría saber como cambiar la contraseña...!! de antemano muchas gracias i EXELENTE POST...!! :D

  • jorge dijo:
  • el 29 de Set. del 2012 a las 14:40

hola tengo un problema con el registro me dice que no tengo acceso me sale este error en el firefox
FORBIDDEN
You don't have permission to access /< on this server
y me sale otro error en recuperar contraseña y no se cual es el error:

( ! ) Fatal error: Unknown: Failed opening required 'C:/wamp/www/recuperar contraseña.php' (include_path='.;C:\php\pear') in Unknown on line 0

  • ELY dijo:
  • el 16 de Oct. del 2012 a las 18:11

me podrias mandar el codigo compimido en .RAR por favor lo nececito para mi proyecto de taller

  • Walter dijo:
  • el 26 de Oct. del 2012 a las 10:40

Hola, muy bueno articulo esta muy bueno tu sistema de usuarios... Pero tengo una duda como hago para poder mostrar resulatados de un usuario en una pagina..
Tengo una pagina llamada home.php cuando inicia sesion te redirecciona a home.php y quiero que muestre el nombre, apellido, etc. No se si me explico bien lo que quiero hacer... espero que si :D
Saludos....

  • Cesar dijo:
  • el 26 de Oct. del 2012 a las 13:33

@Walter: Para eso puedes guiarte del item que dice: Agregando mensaje de bienvenida con enlace hacia el perfil personal y un enlace para cerrar sesión, en cualquier página.

Saludos.

  • Ulises dijo:
  • el 29 de Oct. del 2012 a las 13:21

Excelente.. Muy bien explicado, si se requiere bloquear una carpeta?? se puede?

Hola muy buen tema solo quisiera que los usuarios confirmen su email como seria esto? gracias,

  • Chaz19 dijo:
  • el 5 de Nov. del 2012 a las 18:31

muchas gracias por el tuto me a servido mucho pero quisiera q me ayudaras a q en el login valide el usuario y la contraseña sin q te mande a otra pagina de error algo asi como el del registro gracias.

  • Cristian dijo:
  • el 22 de Nov. del 2012 a las 20:31

por alguna razon no me funciona el formulario de registro, hice tal cual indicas, no me arroja errores, pero, al ingresar un usuario para registro este no se agrega a ka base de datos. alguna sugerencia?
de antemano gracias, saludos.

  • Osiris dijo:
  • el 23 de Nov. del 2012 a las 16:37

Hola MijT dijiste que ibas a suvir un archivo rar con todo incluido y me he quedado esperando lei todos los comentarios y nada ? a mi el error que me da el es siguiente

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\basededatos\perfil.php:1) in C:\AppServ\www\basededatos\perfil.php on line 2

nose si me puedas ayudar soy bien novato en mysql?

  • Cocunubo dijo:
  • el 25 de Nov. del 2012 a las 17:13

Hola tengo un error :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/u649158357/public_html/pagina/registro.php on line 41

Linea 41 :

40 .$sql = mysql_query("SELECT nick FROM usuarios WHERE nick='".$nick."'");
41. if(mysql_num_rows($sql) > 0) {

  • Nacho dijo:
  • el 2 de Dic. del 2012 a las 12:08

Excelente!
He estado mirando distintos tutoriales para un sistema de registro de usuarios, y este me pareció muy completo.
Con explicaciones breves (lo cual es genial para mi) y claras.
Muchas gracias!

  • shane dijo:
  • el 2 de Dic. del 2012 a las 20:51

holam me parece super fino todos los codigos muy completo, pero soy nueva y cuando le doy a registrar no lo hace :(

  • shane dijo:
  • el 2 de Dic. del 2012 a las 21:16

cuando le doy registrar me lleva a otra pagina sin informacion y arriba en el membrete solo dice: http://localhost/practicas-pdp/usuarios/%3C?=$_SERVER['PHP_SELF']?>


el form action porque esta con esto= =$_SERVER['PHP_SELF']?>???

  • Walter dijo:
  • el 8 de Dic. del 2012 a las 16:02

Hola, vengo de nuevo :) me parecio de maravilla este sistema de usuarios. El mejor que eh visto en Internet ;)
Pero sigo con el problema de mostrar los datos en una pagina, tengo toda la pagina armada y todo. Pero cuando quiero imprimir datos. Lo unico que se puede imprimir es <?=$_SESSION['usuario_id']?> y <?=$_SESSION['usuario_user']?>. Yo quisiera imprimir otros como <?=$_SESSION['usuario_avatar']?>, <?=$_SESSION['usuario_nombre']?>, etc. En el index.php, tengo que modificar algo de comprobar.php o que será? Espero que puedan solucionar mi duda... :D gracias desde ya...

  • crock_crock dijo:
  • el 5 de Feb. del 2013 a las 00:25

por que cuando mando el form de registro me sale una pagina vacia diciendo

Forbidden

You don't have permission to access /reseller/< on this server.

y en el url me manda

esto?
<?=$_SERVER['PHP_SELF']?>

para alguna manera en ke alguien ya haya solucionado esto?

  • Humberto Leon dijo:
  • el 10 de Feb. del 2013 a las 01:03

Muy bueno tu tutorial, lo e logrado implementar sin problemas, pero pregunto como se aria si encesito evitar un doble login, es decir que no ingresen desde otro navegador u otra pc

  • Anonimo dijo:
  • el 11 de Feb. del 2013 a las 12:06

Gracias por tu aporte me esta sirviendo de mucho que queria agradecerte.

  • fredis dijo:
  • el 16 de Feb. del 2013 a las 16:21

Hola a mi me sale este error por favor les pido que me ayuden a solucionarlo

Forbidden

You don't have permission to access /Administracion/echo< on this server
solo eso es decir no me guarda pero tampoco puedo ir a otras paginas por ese error y todo se debe por esta linea en el form action=<?=$_SERVER['PHP_SELF']?>"

por favor como lo soluciono ayuda si y estoy trabajando desde localhost expliquemme porfa. y gracias por todo.

en el form action=<?=$_SERVER['PHP_SELF']?>" lo solucione de la siguiente forma, he reemplazado con el form action="nombre_dela_pagina.php", ejemplo form action="registro.php" que es la pagina contenedora.

  • Chaz19 dijo:
  • el 28 de Feb. del 2013 a las 16:53

exelente tuto gracias pero quisiera q me ayudaras con una duda.

como colar un codigo html despues del echo " para personalizar esa parte.

echo "Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
<a href='acceso.php'>Ingresar</a> / <a href='registro.php'>Regitrarme</a>";

  • pepe dijo:
  • el 27 de Mar. del 2013 a las 17:06

y como bajo el codido men?

  • Rober dijo:
  • el 28 de Mar. del 2013 a las 18:12

Gracias por compartir tus conocimientos.
podrias darme el codigo completo ya que no entiendo esto:

Páginas restringidas:
Como en toda web con sistema de usuarios, siempre habrán zonas restringidas a las que sólo podrán acceder usuarios registrados, entonces para ello partimos del siguiente código....


no se donde va esto.

Gracias!

  • paola dijo:
  • el 16 de Abr. del 2013 a las 06:59

Hola muy bien explicado todo, quería agregar una consulta. Cuando creo la base de datos e ingreso el primer usuario... despues ya no me deja ingresar mas, solamente si borro el primero, puedo iniciar otro. como podria solucionarlo?

  • Fernando dijo:
  • el 20 de Abr. del 2013 a las 13:57

hola amigo muy bien explicado todo felicitaciones tengo conocimiento de html, javascript entre otros pero soy un total principiante en php y mysql. Tengo un problema en todos los documentos hechos pòr tu explicacion al correrlos me sale esto, seguramente algo hice mal en la base de datos o en el codigo por favor ayudeneme , estoy muy interesado en saber mas de php mi correo por si m ayudan es montielfernando@live.com o respondan aqui mismo.

error al correr

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\cambiar_contrasena.php:9) in C:\xampp\htdocs\cambiar_contrasena.php on line 10

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\cambiar_contrasena.php:9) in C:\xampp\htdocs\cambiar_contrasena.php on line 10

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'localhost' (using password: YES) in C:\xampp\htdocs\acceso_db.php on line 16
Acceso denegado.

  • naye dijo:
  • el 24 de Abr. del 2013 a las 10:15

hola hola yo tengo una duda como paso despues de : hago el registro listo-> accedo y todo bien-> pero para ver la parte de mi perfil como le hago????????????????????? entro directamente del local host pero me dice q no esta registrado o ah sido borrado
pero obviamente si esta registrado


como paso de acceso.php aperfil php eh puesto hasta un link pero no me da la informacion gracias y espero me puedan ayudar

  • julian dijo:
  • el 26 de Abr. del 2013 a las 00:43

hola muy bueno los archivos pero tengo un error y no me doy cuenta en q estoy fallandno , me dice esto
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\probando controles\registro.php on line 27
Datos ingresados correctamente. los datos me los ingresa bien , aqui esta la linea esa q tiene el error
if(mysql_num_rows($sql) > 0) {

  • Dani dijo:
  • el 2 de Mayo del 2013 a las 19:27

Excelente aporte, creo que hasta ahora el mejor tuto de como hacer un sistema de registro 100% completo!!
Podrias resolverme una duda?
Podria añadirle una imagen de perfil personalizable? es decir, que en el PHP perfil.php...
salga tambien una imagen de perfil de por ejemplo 128x128 px o 256x256
Gracias de antemano y gracias por el post que has hecho

Comentar