Sistema de login en PHP + MySQL
Autor & Creditos: Maverick
Está es la siguiente session de tutoriales donde empezamos creando base de datos y posterior a eso un script de registro de usuarios, este script lo que hace es solicitar el login de usuarios, muy sencillo pero funcional.
Clic en la Imagen para ver el Video Tutorial
login.php
<html>
<head>
<title>Login</title>
</head>
<body>
<form name="form1" method="post" action="entrar.php">
Username:
<input name="username" type="text" id="username"><br>
Password:
<input name="password" type="password" id="password"><br>
<input type="submit" name="Submit" value="Iniciar Sesion">
</form>
</body>
</html>
entrar.php
<?
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='user';
$dbuserpass='password';
$dbname='nombre_base_datos';
session_start();
// Conectar a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');
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 usuarios 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 usuarios WHERE username = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
echo ("Bienvenido <strong>".$_SESSION['s_username']." </strong> ya puedes acceder a la seccion de ".'<a href="members.php">Miembros</a>'."");
}
}
}
?>




del.icio.us
Digg
Comentarios (50 Publicado):
".$_SESSION['s_username']." ".'Clic aqu� para continuar.'.""); } } } ?>
SI NO SERIA MUCHO LA MOLESTIA ME PUEDES AGREGAR A MI MSN (hugo_hernan94@hotmail.com) y ayudarme porfavor :)
¿Alguien me puede ayudar? aqui dejo mi correo: juanhg24@gmail.com se lo agradecería eternamente.
Con respecto a la seccion "registro" lo hice de manera correcta sin ningun error, pero cuando comenze con la parte de "login" hice una web a la cual llame "login.php" la cual la edite a mi manera. cargue el archivo "entrar.php"... etc. esta todo listo pero cuando quiero iniciar sesion me tira este error
Parse error: syntax error, unexpected T_STRING in /home/a1682164/public_html/entrar.php on line 3
espero puedas ayudarme, desde ya muchas pero muchas gracias. Saludos!
juan_45_2@hotmail.com
" . $_SESSION['s_nombre_usuario'] . " Ya puede accesar a la Sección de ".'Miembros'.""); } } } ?>
bye desde Colombia-Bogota. 10Ptos +
Meta la informacion k meta siempre me sale este error:
".$_SESSION['s_username']." ya puedes acceder a la seccion de ".'Miembros'.""); } } } ?>
Que significa????y como puedo corregirlo???
Gracias por la ayuda,espero vuestra respuesta.
Os dejo mi direccion: igorgurpil@hotmail.com
Warning: mysql_connect() [function.mysql-connect]: Lost connection to MySQL server at 'reading initial communication packet', system error: 146 in /mnt/web8/51/95/51885995/htdocs/ingreso.php on line 11
Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /mnt/web8/51/95/51885995/htdocs/ingreso.php on line 12
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /mnt/web8/51/95/51885995/htdocs/ingreso.php on line 12
No se puede seleccionar la base de datos
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'admin'@'localhost' (using password: YES) in /home/pl000407/public_html/entrar.php on line 11
Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'pl000407'@'localhost' (using password: NO) in /home/pl000407/public_html/entrar.php on line 12
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/pl000407/public_html/entrar.php on line 12
No se puede seleccionar la base de datos
index.php
<?php
session_start();
echo 'Bienvenido, ';
include 'tupaginadondemuestraselcontenidophp'; //esta parte modificas para que muestre todos los archivos
if (isset($_SESSION['k_username'])) {
echo '<b>'.$_SESSION['k_username'].'</b>.';
echo '<p><a href="logout.php">Logout</a></p>';
}else{
echo '<p><a href="login.php">Login</a></p>
<p><a href="registrar.php">Registrar</a></p>';
}
?>
solo reemplaza tupaginadondemuestraselcontenidophp del codigo, por la web donde esta todo tu contenido
Tengo una ?ok cree la base de datos.
ahora donde coloco entrar.php en mi public html.los demas cuando los colocos en mi public html en vez de salir mi page sale en blanco diciendo bienvenidos registrate o login ,todo funciona bn, todo registrate login logout ,lo unico es que no sale mi page como o donde incorporo los archivo antes creado para que salgan en mi page. gracias..
tengo un ???? logre hacer lo de resistro y login ,pero ahora como creo area de member y logout
eso seria muy util n_n
PLAIN TEXTMySQL:
CREATE TABLE `usuarios` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`usuario` VARCHAR(20) NOT NULL,
`password` VARCHAR(10) NOT NULL,
`descripcion` TEXT character SET utf8 collate utf8_spanish_ci,
`email` VARCHAR(45) character SET utf8 collate utf8_spanish_ci DEFAULT NULL,
`fecha` DATE NOT NULL,
PRIMARY KEY (`id`)
)
Ya tenemos la estructura de nuestra tabla de usuarios.
Ahora una pagina index.php donde colocaremos el siguiente código:
PLAIN TEXTPHP:
<?php
session_start();
echo 'Bienvenido, ';
if (isset($_SESSION['k_username'])) {
echo '<b>'.$_SESSION['k_username'].'</b>.';
echo '<p><a href="logout.php">Logout</a></p>';
}else{
echo '<p><a href="login.php">Login</a></p>
<p><a href="registrar.php">Registrar</a></p>';
}
?>
Ahora el formulario para hacer login.php
PLAIN TEXTHTML:
<form action="validar_usuario.php" method="post">
Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
<br />
Password:<input type="password" name="password" size="10" maxlength="10" />
<br />
<input type="submit" value="Ingresar" />
</form>
Seguimos con el archivo validar_usuario.php el cual verificará los datos del archivo login.php
PLAIN TEXTPHP:
<?php
session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('mi_base')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
if(trim($HTTP_POST_VARS["usuario"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
// Puedes utilizar la funcion para eliminar algun caracter en especifico
//$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
//$password = $HTTP_POST_VARS["password"];
// o puedes convertir los a su entidad HTML aplicable con htmlentities
$usuario = strtolower(htmlentities($HTTP_POST_VARS["usuario"], ENT_QUOTES));
$password = $HTTP_POST_VARS["password"];
$result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
if($row = mysql_fetch_array($result)){
if($row["password"] == $password){
$_SESSION["k_username"] = $row['usuario'];
echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
echo '<a href="index.php">Index</a></p>';
//Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
/*Ingreso exitoso, ahora sera dirigido a la pagina principal.
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>*/
}else{
echo 'Password incorrecto';
}
}else{
echo 'Usuario no existente en la base de datos';
}
mysql_free_result($result);
}else{
echo 'Debe especificar un usuario y password';
}
mysql_close();
?>
El archivo registrar.php, ahí crearemos un usuario nuevo.
PLAIN TEXTPHP:
<?php
session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('mi_base')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function formRegistro(){
?>
<form action="registrar.php" method="post">
Usuario (max 20):
<input type="text" name="username" size="20" maxlength="20" /><br />
Password (max 10):
<input type="password" name="password" size="10" maxlength="10" />
Confirma: <input type="password" name="password2" size="10" maxlength="10" /><br />
Email (max 40):
<input type="text" name="email" size="20" maxlength="40" /><br />
<input type="submit" value="Registrar" />
</form>
<?php
}
// verificamos si se han enviado ya las variables necesarias.
if (isset($_POST["username"])) {
$username = $_POST["username"];
$password = $_POST["password"];
$password2 = $_POST["password2"];
$email = $_POST["email"];
// Hay campos en blanco
if($username==NULL|$password==NULL|$password2==NULL|$email==NULL) {
echo "un campo está vacio.";
formRegistro();
}else{
// ¿Coinciden las contraseñas?
if($password!=$password2) {
echo "Las contraseñas no coinciden";
formRegistro();
}else{
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
$checkuser = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'");
$username_exist = mysql_num_rows($checkuser);
$checkemail = mysql_query("SELECT email FROM usuarios 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";
formRegistro();
}else{
$query = 'INSERT INTO usuarios (usuario, password, email, fecha)
VALUES (\''.$username.'\',\''.$password.'\',\''.$email.'\',\''.date("Y-m-d").'\')';
mysql_query($query) or die(mysql_error());
echo 'El usuario '.$username.' ha sido registrado de manera satisfactoria.<br />';
echo 'Ahora puede entrar ingresando su usuario y su password <br />';
?>
<FORM ACTION="validar_usuario.php" METHOD="post">
Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=20><br />
<INPUT TYPE="submit" VALUE="Ingresar">
</FORM>
<?php
}
}
}
}else{
formRegistro();
}
?>
Finalmente el archivo logout.php, ahí cerraremos la sesión.
PLAIN TEXTPHP:
<?php
session_start();
// Borramos toda la sesion
session_destroy();
echo 'Ha terminado la session <p><a href="index.php">index</a></p>';
?>
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>
El sistema creado es sencillo para que sea fácil de entender, Y no olvides dejar tus comentarios.
en este caso:
$query = mysql_query("SELECT usuario,password FROM usuario WHERE usuario = '$username'") or die(mysql_error());
mis campos son usuario y password asi coloque yo en mi tabla de mi base.
tambien seria bueno el codigo de registro.... se los agradeceria
el código de acceso a la base de datos, esta publicado en el articulo.
o es que te refieres otro código
Mira maverick logre solucionar mi problema colocando al principio de mi script este codigo;
error_reporting(0);
y Ahra no me sale ese error, esta bien que lo corriga de esa forma???
Espero tu respuesta..saludos maverick..
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/nn000267/public_html/entrar1.php:7) in /home/nn000267/public_html/entrar1.php on line 119
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/nn000267/public_html/entrar1.php:7) in /home/nn000267/public_html/entrar1.php on line 119
Bienvenido favio bosco ya puedes acceder a la seccion de Miembros
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/nn000267/public_html/entrar1.php:7) in /home/nn000267/public_html/entrar1.php on line 119
Bienvenido favio bosco ya puedes acceder a la seccion de Miembros
saludos... espero tu respuestas..
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/nn000267/public_html/entrar1.php:7) in /home/nn000267/public_html/entrar1.php on line 119
Bienvenido favio bosco ya puedes acceder a la seccion de Miembros
saludos... espero tu respuestas..
Parse error: syntax error, unexpected $end in /home/nn000267/public_html/entrar.php on line 44..
perdon por quitarte tu tiempo con esto ojala pudiera resolver esto por mi cuenta pero no puedo...jeje ..saludos y muchas gracias che.!!!!!!!!!!!
<?
// Primero comprobamos que ningún campo esté vacío y que todos los campos existan.
if(isset($_POST['username']) && !empty($_POST['username']) &&
isset($_POST['password']) && !empty($_POST['password'])) {
// Si entramos es que todo se ha realizado correctamente
$link = mysql_connect("localhost","user","password");
mysql_select_db("nombre_base_de_datos",$link);
// Con esta sentencia SQL insertaremos los datos en la base de datos
mysql_query("INSERT INTO usuarios (username,password)
VALUES ('{$_POST['username']}','{$_POST['password']}')",$link);
// Ahora comprobaremos que todo ha ido correctamente
$my_error = mysql_error($link);
if(!empty($my_error)) {
echo "Ha habido un error al insertar los valores. $my_error";
} else {
echo "Los datos han sido introducidos satisfactoriamente";
}
} else {
echo "Error, no ha introducido todos los datos";
}
?>
Parse error: syntax error, unexpected ';' in /home/nn000267/public_html/insertar.php on line 9
Bueno entonces borra los datos como nombre apellidos y demás que se pidieron y solo deja usuario y password, y obviamente el archivo de registros, ya no será publico y tu mismo asignas esos datos.
En el archivo entrar, no hay que modificar nada... ya que solo solicita usuario y password y son los datos que existen en tu BD.
de manera de invitacion para que entre nada mas el que yo quiera...desde ya muchas gracias che!!!
y coloca este codigo.
cambiamos por los siguientes valores: <a href="http:reloj.rojos.com">Zona de Miembros</a>
lo unico que hize fue reemplazar members.php por el nombre de tu página a donde quieres que redireccione.
Sobre tu segunda pregunta, es como dices, cuando pongas los datos correctos de tu base de datos, el script se conectara con ella, y buscara si es cierto que exista ese usuario ;)
Ah y otra cosilla segui tu anterior tutorial el de crear una base de datos, al poner los datos de mi base de datos en el archivo entrar.php, ya con eso vasta es decir que cuando el ususairo se valla a identificar busque los datos en dicha base
Envie sus comentarios