Foros del Web » Programando para Internet » PHP »

Sistema de Usuarios PHP

Estas en el tema de Sistema de Usuarios PHP en el foro de PHP en Foros del Web. Hola amigos, como les va? bueno quiero pedir ayuda porque estoy teniendo demasiados dolores de cabeza con este sistema que quiero implementar en mi web. ...
  #1 (permalink)  
Antiguo 29/10/2008, 17:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 21
Antigüedad: 15 años, 6 meses
Puntos: 1
Pregunta Sistema de Usuarios PHP

Hola amigos, como les va? bueno quiero pedir ayuda porque estoy teniendo demasiados dolores de cabeza con este sistema que quiero implementar en mi web.

En mi site, quiero que los usuarios que se quieran registrar lo hagan, de esta manera ellos van a poder subir archivos, comentarios, lo que quieran ademas de tener su cuenta de email.

Por ahora lo que estoy haciendo es el formulario de registro. Para ello estoy utilizando el ejemplo obtenido de un sitio web (php hispano) el cual consta de 3 archivos, reg.php, registro.php y config.php

--------------------------------------------------------------------------------------------------------
config.php
--------------------------------------------------------------------------------------------------------

<?
$dbhost="localhost"; //Host del mysql
$dbuser="elfuego_emilio"; //Usuario del mysql
$dbpass="mipassword"; //Password del mysql
$db="elfuego_general"; //db donde se creará la tabla users(aqui como llamaste la base de datos)

//conectamos y seleccionamos db
mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db("$db");

?>

--------------------------------------------------------------------------------------------------------
Reg.php
--------------------------------------------------------------------------------------------------------
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

//Creamos el form k irá a registrar.php para comprobar y introducir los datos a la tabla users
echo '<form action="registrar.php" method="POST">
Nick: <input type="text" name="nick" size="30"><br>
Password: <input type="password" name="pass" size="30" ><br>
Repetir Password: <input type="password" name="pass1" size="30" ><br>
email: <input type="text" name="email" size="50"><br>
Rollo: <textarea name="rollo" cols="30" rows="10"></textarea><br>
<input type="submit" name="submit" value="Enviar"></form>';
?>

--------------------------------------------------------------------------------------------------------
registrar.php
--------------------------------------------------------------------------------------------------------

<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

//Comprobamos que los campos nick, pass y pass1 se han rellenado en el form de reg.php, sino volvemos al form
if(($_POST[nick] == ' ') or ($_POST[pass] == ' ') or ($_POST[pass1] == ' ') )
{
Header("Location: reg.php"); //enviamos al form de registro que esta en reg.php
}else{

//Comprobamos que la pass y pass1 son iguales, sino, volvemos a reg.php
if($_POST[pass] != $_POST[pass1])
{
echo 'Las passwords no son iguales';
}else{

//quitamos el codigo malicioso de $_POST[nick] y $_POST[pass]
$user = stripslashes($_POST["nick"]);
$user = strip_tags($user);
$pass = stripslashes($_POST["pass"]);
$pass = strip_tags($pass);
//comprobamos que el usuario no existe en la db
$usuarios=mysql_query("SELECT nick FROM users WHERE nick='$nick' ");
if($user_ok=mysql_fetch_array($usuarios))
{
echo 'El usuario ya esta registrado';
mysql_free_result($usuarios); //liberamos la memoria del query a la db
}else{
//quitamos todo el codigo malicioso de las demas variables del form de registro
$email = stripslashes($_POST["email"]);
$email = strip_tags($email);

$rollo = stripslashes($_POST["rollo"]);
$rollo = strip_tags($rollo);
$rollo = str_replace("\n\r","<br>",$rollo); //se cambian los saltos de linea por <br>
$rollo = str_replace("\r\n","<br>",$rollo);
$rollo = str_replace("\n","<br>",$rollo);

$fecha = time();
$level = "2"; //usaremos level 1 para admins, level 2 para los demas (se cambia manualmente desde phpmyadmin)

//introducimos el nuevo registro en la tabla users
mysql_query("INSERT INTO users (nick,pass,email,fecha,level,rollo) values ('$user','$pass','$email','$fecha','$level','$roll o') ");
echo 'Usuario registrado con éxito';
}

}

}
?>

--------------------------------------------------------------------------------------------------------

Perfecto. hasta aquí esta ok la primera parte que es la del registro del usuario.

ahora, cuando el usuario quiere loguear, me devuelve este error.


Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at /home/elfuego/public_html/config.php:11) in /home/elfuego/public_html/autentificar.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at /home/elfuego/public_html/config.php:11) in /home/elfuego/public_html/autentificar.php on line 21


cabe aclarar que esto sucede cuando los datos ingresados son correctos, ya que si el pass o el user estan erroneos si lo reconoce com nick o pass invalido.

como tendria que proseguir?

--------------------------------------------------------------------------------------------------------
autentificar.php
--------------------------------------------------------------------------------------------------------


<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

if( ($_POST[nick] == ' ') or ($_POST[pass] == ' ') )//comprobamos que las variables enviadas por el form de login.php tienen contenido
{
Header("Location: login.php"); //estan vacías, volvemos al index
}else{

//comprobamos en la db si existe ese nick con esa pass
$usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='$_POST[pass]' ");
if($user_ok = mysql_fetch_array($usuarios)) //si existe comenzamos con la sesion, si no, al index
{

session_register("nick"); //registramos la variable usuario que contendrá el nick del user
session_register("idusuario"); //registramos la variable idusuario que contendrá la id del user
session_register("level"); //registramos la variable level que contendrá el level del user
//damos valores a las variables de la sesión
$_SESSION[usuario] = $user_ok["nick"]; //damos el nick a la variable usuario
$_SESSION[idusuario] = $user_ok["id"]; //damos la id del user a la variable idusuario
$_SESSION[level] = $user_ok["level"]; //damos el level del user a la variable level
Header("Location: login.php"); //volvemos al login donde nos saldrá nuestro menú de usuario

}else{
echo 'Nick y pass incorrectos';
}

}
?>

--------------------------------------------------------------------------------------------------------
login.php
--------------------------------------------------------------------------------------------------------

<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

if(!isset($_SESSION[usuario]) ) //comprobamos que no existe la session, es decir, que no se ha logeado, y mostramos el form
{

//Creamos el form k irá a autentificar.php para comprobar los datos con la tabla users
echo '<form action="autentificar.php" method="POST">
Nick: <input type="text" name="nick" size="30"><br>
Password: <input type="password" name="pass" size="30" ><br>
<input type="submit" name="submit" value="Enviar"></form>';

}else{

//SI se ha logeado, mostramos el nick y la opción de deslogearse
//Este sería el menú que saldría a la gente que esta logeada, se puede modificar y añadir cosas
echo 'Bienvenido '.$_SESSION[usuario]; //ej Bienvenido Juan
echo '<br>Tu level es '.$_SESSION[level]; //mostramos el level del user
if($_SESSION[level] == 1)
{
//mostramos el link para ir a la pagina privada porque el user tiene level 1 (*Nota: el level por defecto es 2, por lo tanto no se le mostrará)
//*Nota2: para cambiar el level a 1, se tiene k hacer manualmente por phpmyadmin
echo '<br><a href=paginaprivada.php>Ir a pagina privada</a>';
}

echo '<br><a href=logout.php>Salir</a>'; //link para deslogearse, iría a logout.php

}

?>
-----------------------------------------------------------------------------------------------

muchas gracias.

emilio
  #2 (permalink)  
Antiguo 29/10/2008, 17:10
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Sistema de Usuarios PHP

Hola no puede haber codigo HTML o salida al navegador antes de usar la funcion header

Header("Location: login.php"); //volvemos al login donde nos saldrá nuestro menú de usuario


Un saludo
  #3 (permalink)  
Antiguo 29/10/2008, 17:11
 
Fecha de Ingreso: octubre-2008
Mensajes: 21
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Sistema de Usuarios PHP

entonces le tendria que sacar todo lo q esta antes del heaeder?
  #4 (permalink)  
Antiguo 29/10/2008, 17:15
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Sistema de Usuarios PHP

en negrita te pongo donde estan los errores

Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at /home/elfuego/public_html/config.php:11) in /home/elfuego/public_html/autentificar.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at /home/elfuego/public_html/config.php:11) in /home/elfuego/public_html/autentificar.php on line 21

seguramente sera este header

Header("Location: login.php"); //volvemos al login donde nos saldrá nuestro menú de usuario

No has de quitar nada, solo que no haya codigo HTML o algun echo antes del header
  #5 (permalink)  
Antiguo 29/10/2008, 17:22
 
Fecha de Ingreso: octubre-2008
Mensajes: 21
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Sistema de Usuarios PHP

este es mi archivo autentificar. no tengo ningun echo...

<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db
if( ($_POST[nick] == ' ') or ($_POST[pass] == ' ') )//comprobamos que las variables enviadas por el form de login.php tienen contenido
{
Header("Location: login.php"); //estan vacías, volvemos al index
}else{
//comprobamos en la db si existe ese nick con esa pass
$usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='$_POST[pass]' ");
if($user_ok = mysql_fetch_array($usuarios)) //si existe comenzamos con la sesion, si no, al index
{
session_register("nick"); //registramos la variable usuario que contendrá el nick del user
session_register("idusuario"); //registramos la variable idusuario que contendrá la id del user
session_register("level"); //registramos la variable level que contendrá el level del user
//damos valores a las variables de la sesión
$_SESSION[usuario] = $user_ok["nick"]; //damos el nick a la variable usuario
$_SESSION[idusuario] = $user_ok["id"]; //damos la id del user a la variable idusuario
$_SESSION[level] = $user_ok["level"]; //damos el level del user a la variable level
Header("Location: login.php"); //volvemos al login donde nos saldrá nuestro menú de usuario
}else{
echo 'Nick y pass incorrectos';
}
}
?>
  #6 (permalink)  
Antiguo 29/10/2008, 17:29
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Sistema de Usuarios PHP

NO SOLO AHI ESTA EL FALLO

recuerda el post que te puse arriba, los errores estan en

config.php: linea 11

Y solo basta con que tengas un espacion o un enter antes de la etiqueta <?php
  #7 (permalink)  
Antiguo 29/10/2008, 17:29
 
Fecha de Ingreso: octubre-2008
Mensajes: 21
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Sistema de Usuarios PHP

ah ok
gracias

sera el problema en esto tambien? yo no tengo <?php. tengo <?

Última edición por emilio_devoto; 29/10/2008 a las 17:40
  #8 (permalink)  
Antiguo 29/10/2008, 17:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 21
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Sistema de Usuarios PHP

no puedo arreglarlo.
ya fue meparece que mejor me olvido de hacer esto...
  #9 (permalink)  
Antiguo 29/10/2008, 17:46
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Sistema de Usuarios PHP

Mirate este aporte, a ver si te orientaç

http://www.forosdelweb.com/f18/aport...aporte-561417/

Un saludo
  #10 (permalink)  
Antiguo 29/10/2008, 18:04
 
Fecha de Ingreso: octubre-2008
Mensajes: 21
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Sistema de Usuarios PHP

gracias
pero me tira errores tambien

mira http://www.elfuegodehorcas.com.ar/nuevosistemausuarios/index.php
  #11 (permalink)  
Antiguo 29/10/2008, 18:14
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Sistema de Usuarios PHP

Leelo bien, porque el sistema no es que sea el mejor, pero funciona y es facil de implementar

Algo estas haciendo mal, revisa bien el codigo.

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:43.