Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/02/2012, 20:49
J0RG325
 
Fecha de Ingreso: febrero-2012
Mensajes: 34
Antigüedad: 12 años, 2 meses
Puntos: 0
Sistema de Usuarios

Hola amigos, tengo un problema con el sistema de usuarios que ando adaptando, me salen algunos errores que no he podido arreglar y espero me ayuden.

a la página le estoy agregando un sistema modular sencillo:
Código PHP:
<? 
if(empty($_GET['page_id'])) { 
 include(
"pages_modules/news.php"); 
 } else { 
 if(
file_exists("pages_modules/".$_GET['page_id'].".php")) { 
 include(
"pages_modules/".basename($_GET['page_id']).".php"); 
 } else { 
 
 echo 
'<table border=0 cellpadding=0 cellspacing=0> 
 <tr> 
 <td width=85%><b>Error 404</b><br><br>No se encuentra el archivo, intentelo de nuevo o Pruebe mas tarde </b></td> 
 </tr> 
 </table>'

 } 

?>
osea que cuando se dirigen a mi registro esta es la URL: index.php?page_id=registro
Cuando me registro me sale este error:
Cita:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\cmss\pages_modules\registro.php on line 28
ha ocurrido un error y no se registraron los datos.
Esta es la DB:
Cita:
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`)
)
Este es mi archivo config.php
Código PHP:
<?php
    $host_db 
"localhost"// Host de la BD
    
$usuario_db "root"// Usuario de la BD
    
$clave_db "123456"// Contraseña de la BD
    
$nombre_db "cmss"// Nombre de la BD
    
    //conectamos y seleccionamos db
    
mysql_connect($host_db$usuario_db$clave_db);
    
mysql_select_db($nombre_db);
?>
Este es mi archivo registro.php
Código PHP:
<?php
    
include('config.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 (
preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-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="index.php?page_id=registro" 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
    
}
?>
En una ocacion lo corregi pero no he podido volver a arreglarlo y en aquella vez si me funciono el registro pero el login me falla, este es otro problema que quisiera que me ayudaran de favor.

Cuando la cuenta ya esta creada y quiero logearme no me conecta, en mi index.php tengo una include que llama al login.php y mi login.php esta así:
Código PHP:
<?php
    session_start
();
    include(
'config.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 lo redirique a comprobar.php -> index.php?page_id=comprobar
Este es comprobar.php
Código PHP:
<?php
    session_start
();
    include(
'config.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: login.php");
            }else {
?>
                Error, <a href="login.php">Reintentar</a>
<?php
            
}
        }
    }else {
        
header("Location: login.php");
    }
?>
Nunca me logra conectar, no se si tenga que usar setcookies u otro metodo, espero me puedan ayudar con esto...