Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Login/Registro en mi web pero con un error

Estas en el tema de Login/Registro en mi web pero con un error en el foro de Bases de Datos General en Foros del Web. Buenas tardes. tengo un problema con un login / registrar que incorpore o quiero incorporar a unas de las paginas en mi web. Primero les ...
  #1 (permalink)  
Antiguo 30/09/2009, 14:35
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 7 meses
Puntos: 4
Login/Registro en mi web pero con un error

Buenas tardes.

tengo un problema con un login / registrar que incorpore o quiero incorporar a unas de las paginas en mi web.

Primero les colocare el codigo tal como lo encontre y posteriormente les dejo el error, para que ojala algun maestro me ayude.
Código HTML:
Primer Paso: Creación de la base de datos

Lo primero que necesitas es crear la base de datos en la que vas a almacenar tu información. Si ya tienes creada una salta al paso dos.
Para crear la base de datos la mejor manera es desde algun tipo de software que te permita manejar MySql ya que el uso de scripts no está autorizado en todos los servidores.

Segundo Paso: Configuración de tablas
Ya está creada la base de datos y tenemos que configurar las tablas y campos en los que vamos a almacenar la información.
Utiliza este código o modifícalo adaptándolo a tus gustos.

<?php
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='username';
$dbuserpass='password';
$dbname='database';
// Conexión a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
// Seleccion de la base de datos
mysql_select_db($dbname) or die('Cannot select database');

// Creacion de la tabla (puedes elegir otros nombres para los campos)
$query = 'CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
username VARCHAR(30) NOT NULL,
password VARCHAR(20) NOT NULL,
email VARCHAR(40) NOT NULL)';
$result = mysql_query($query);
echo "!Tabla creada!";
?> 

Tercer Paso: Registro de usuarios
Ya hemos creado y configurado la base de datos, ahora escribiremos el código de una simple página de registr, en la que insertaremos nombre de usuario, contrseña y cuenta de correo.

<?php
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='username';
$dbuserpass='password';
$dbname='database';
// Conexión a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die("Cannot select database");

// Preguntaremos si se han enviado ya las variables necesarias
if (isset($_POST["username"])) {
$username = $_POST["username"];
$password = $_POST["password"];
$cpassword = $_POST["cpassword"];
$email = $_POST["email"];
// Hay campos en blanco
if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL) {
echo "un campo está vacio.";
}else{
// ¿Coinciden las contraseñas?
if($password!=$cpassword) {
echo "Las contraseñas no coinciden";
}else{
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
$checkuser = mysql_query("SELECT username FROM users WHERE username='$username'");
$username_exist = mysql_num_rows($checkuser);

$checkemail = mysql_query("SELECT email FROM users WHERE email='$email'");
$email_exist = mysql_num_rows($checkemail);

if ($email_exist>0|$username_exist>0) {
echo "EL nombre de usuario o la cuenta de correo estan ya en uso";
}else{
//Todo parece correcto procedemos con la inserccion
$query = "INSERT INTO users (username, password, email) VALUES('$username','$password','$email')";
mysql_query($query) or die(mysql_error());
echo "El usuario $username ha sido registrado de manera satisfactoria.";
}
}
}
}
?> 

Nos quedaría escribir el código HTML que debe contener el formulario de registro, prueba con este ejemplo o edítalo a tu gusto.

Puedes verlo aquí.



Nombre de usuario:   
Password:   
Repite Password:   
Email:   
  
Ver código registro.php  


Ahora que tenemos nuestra página de registro llego la hora de hacer pruebas, ten en cuenta que si has cambiado algún dato de los formularios o algun campo de la base de datos ten en cuenta que deberas cambiar las consultas.
La correcta ejecución de nuestro código debe devolver lo siguiente.

El usuario "nombre_de_usuario" ha sido registrado de manera satisfactoria.

Cuarto Paso: Autentificación de usuarios
<?php
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='username';
$dbuserpass='password';
$dbname='database';

session_start();

// Conectar a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');

if ($_POST['username']) {
//Comprobacion del envio del nombre de usuario y password
$username=$_POST['username'];
$password=$_POST['password'];
if ($password==NULL) {
echo "La password no fue enviada";
}else{
$query = mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] != $password) {
echo "Login incorrecto";
}else{
$query = mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
echo "Has sido logueado correctamente ".$_SESSION['s_username']." y puedes acceder al index.php.";
}
}
}
?> 

Nos quedaría escribir el código HTML que debe contener el formulario para ingresar en la página, prueba con este ejemplo o edítalo a tu gusto.

Puedes verlo aquí.



Nombre de usuario:   
Password:   
  
Ver código login.php  


Quinto Paso: Index.php visible para usuarios registrados
<?php
// Configura la información de tu cuenta
$dbhost='localhost';
$dbusername='username';
$dbuserpass='password';
$dbname='database';
session_start();

// Conexión a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');

?>

<?
if (isset($_SESSION['s_username'])) {
echo "Bienvenido a mi sitio has ingresado como ".$_SESSION['s_username'].", gracias por la visita!";
}else{
echo "Tu no estas autentificado dirígete a login.php o registrate en register.php";
echo $_SESSION['s_username'];
}
?> 

Sexto Paso: Logout
Sólo nos quedaría poder salir de la página una vez nos hayamos autentificado y esto lo haremos con este pequeño script.

<?
session_start();
$_SESSION = array();
header("Location: index.php");
?> 

Puedes ver más información sobre este script aquí
ACA ESTE EL ERROR QUE ME TIRA, TRATANDO YA DE INGRESAR CON UN USUARIO REGISTRADO EN LA bD, PORQUE TODO LO DEMAS ANDA MUY BIEN, SOLO QUE CUANDO ME AUTENTIFICO NO LO TOM AY ME ARROJA ESTE ERROR.

Código HTML:
Warning: Cannot modify header information - headers already sent by (output started at /home/clasific/public_html/micropagos/informes/uentrar.php:1) in /home/clasific/public_html/micropagos/informes/uentrar.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at /home/clasific/public_html/micropagos/informes/uentrar.php:1) in /home/clasific/public_html/micropagos/informes/uentrar.php on line 18

Warning: Cannot modify header information - headers already sent by (output started at /home/clasific/public_html/micropagos/informes/uentrar.php:1) in /home/clasific/public_html/micropagos/informes/uentrar.php on line 19

Saludos y espero de su ayuda y ojala este codigo le sirva a otro que se ve bien bueno una vez que le quitemos el error.
  #2 (permalink)  
Antiguo 30/09/2009, 16:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Login/Registro en mi web pero con un error

Tu problema no es de bases de datos, sino de PHP.

Se trata de una llamada a la función header. Algo así como:
Código php:
Ver original
  1. header("Content-type: text/plain");
o lo que sea que hayas puesto.
La función header se ejecuta cuando ya se han mandado datos en la respuesta al cliente, y por lo tanto no se pueden cambiar las cabeceras (que se deben enviar antes de los datos).

En cualquier caso, es un tema para que postees el el Foro de PHP, que es donde te pueden ayudar con el problema. Este es Bases de Datos y aquí por las reglas del foro, no se puede poner código de programación. Sólo SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 14:47.