CelulaWeb

[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

Comentar