Login con php

Luis Martin Siguiendo
Seguidores
7

1
Lambda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Suscripción a IA
Desde
22 Sep 2013
Mensajes
2.762
Hola amigos, estoy intentado hacer un sitio con registro de usuarios.

Es decir he creado las siguientes paginas:

index.php
Insertar CODE, HTML o PHP:
<?php
session_start();

?>

<html>
<head>
<title>MartFitness</title>
<link type="text/css" rel="stylesheet" href="style.css"/>

<script language="JavaScript1.1">// <![CDATA[
var specifyimage=new Array() 
specifyimage[0]="images/1.png"
specifyimage[1]="images/2.png"
specifyimage[2]="images/3.png"
var delay=5000 
var count =1;

var cubeimage=new Array()
for (i=0;i<specifyimage.length;i++){
cubeimage[i]=new Image()
cubeimage[i].src=specifyimage[i]
}

function movecube(){
if (window.createPopup)
cube.filters[0].apply()
document.images.cube.src=cubeimage[count].src;
if (window.createPopup)
cube.filters[0].play()
count++;
if (count==cubeimage.length)
count=0;
setTimeout("movecube()",delay)
}

window.onload=new Function("setTimeout('movecube()',delay)")
// ]]></script>

</head>


<body>
<center>
<img src="images/head.png"><p>
</center>

<center><div id="box">
<div id="images">


<img src="images/1.png" name="cube">
</div>


<div id="login">
<center>
<img src="images/login.png">
<br/><br/><br/>
<form action="ingreso.php" method="post">
<table>
<tr>
<td><img src="images/usuario.png"></td><td><input type="text" name="username" size="20" maxlength="30" /></td>
</tr>
<br/>
<tr>
<td><img src="images/pass.png"></td><td><input type="password" name="password" size="20" maxlength="20" /></td>
</tr>
<br/>
<tr>
<td><input type="submit" value="Ingresar" /></td> <td></td>
</tr>

</table>
<br/>
<a href="registrar.php"><img src="images/registrate.png"></a>
</form>
</center>
</div>

</div></center>
</body>
</html>

base.php
Insertar CODE, HTML o PHP:
<?php
$host = "localhost";
$user = "root";
$pw= "";
$bd = "martfitness";

$link = mysql_connect($host,$user,$pw);
mysql_select_db($bd,$link);

?>

ingreso.php
Insertar CODE, HTML o PHP:
<?php
session_start();
include("base.php");

if ($_POST['username']) {
$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']." <script language=javascript>
window.location='home.php';</script>";
}
}
}
?>

registro.php
Insertar CODE, HTML o PHP:
<?php
include("base.php");

if (isset($_POST["username"])) {
$username = $_POST["username"];
$password = $_POST["password"];
$cpassword = $_POST["cpassword"];
$email = $_POST["email"];


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{


$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{


$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."." <script language=javascript>
window.location='index.php';</script>";
}
}
}
}
?>

home.php
Insertar CODE, HTML o PHP:
<?php
session_start();
include("base.php");
?>

<html>
<head>
<title>MartFitness</title>
<link type="text/css" rel="stylesheet" href="style.css"/>
</head>


<body>
<center>
<img src="images/head.png"><p>
</center>

<center><div id="box">
<div id="images">
</div>
<a href="logout.php">Cerrar Seccion</a>

<div id="login">
</div>

</div></center>
</body>
</html>

logout.php
Insertar CODE, HTML o PHP:
<?php
session_start();
session_destroy();
?>

<script language=javascript>
location.href='index.php';
</script>

Cuando una persona entra al index, le aparece el login y la opcion de crear una cuenta, luego de acceder a su cuenta es reenviado al home donde aparece el contenido, pero lo que me preocupa es que si una persona no esta logueada pero en la barra de direcciones escribe home.php, igualmente le aparece el contenido.

Mi pregunta es, que codigo tendria que agregar o modificar para que una persona sin loguearse entre a home lo reenvie al login, y el home solo aparezca para usuarios registrado?


Gracias :)
 

belial9826

Dseda
Redactor
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
5 Dic 2012
Mensajes
1.172
Eso debería ir en una condicional, es decir, si esta logueado muestre el contenido, sino, redireccionar al index.
 

Fluid

Beta
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 Ene 2015
Mensajes
136
Eso debería ir en una condicional, es decir, si esta logueado muestre el contenido, sino, redireccionar al index.

Exacto, como él dice.
PHP:
if(!empty($_SESSION["s_username"])) {
	// Usuario está logueado.. (Ya que la variable no está vacia
}
else {
	// Usuario no está logueado.. (Ya que la variable está vacia)
}
 

Luis Martin

1
Lambda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Suscripción a IA
Desde
22 Sep 2013
Mensajes
2.762
el contenido, sino, redireccionar al index.
Exacto, como él dice.
Código PHP: [Ver]
if(!empty($_SESSION["s_username"]))*{
****//*Usuario*está*logueado..*(Ya*que*la*variable*no*está*vacia
}
else*{
****//*Usuario*no*está*logueado..*(Ya*que*la*variable*está*vacia)
}

Okey pero donde agrego el html? es decir como le agrego eso al home.php? Gracias por ayuda amigos
 

Fluid

Beta
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 Ene 2015
Mensajes
136
el contenido, sino, redireccionar al index.
Exacto, como él dice.
Código PHP: [Ver]
if(!empty($_SESSION["s_username"]))*{
****//*Usuario*está*logueado..*(Ya*que*la*variable*no*está*vacia
}
else*{
****//*Usuario*no*está*logueado..*(Ya*que*la*variable*está*vacia)
}

Okey pero donde agrego el html? es decir como le agrego eso al home.php? Gracias por ayuda amigos

PHP* No es HTML

Arriba de todo, pones el código que yo te di, implementando en cada caso lo que quieres hacer, (Puedes redireccionar, mostrar un mensaje de error (Si muestras un mensaje de error, no cargues el resto (break), mostrar el logueo en la misma página, etc)
El texto comentado que te di es una referencia para que pongas lo que desees en cada caso (Caso no logueado y caso logueado)
 

lombervid

Zeta
Verificación en dos pasos desactivada
Desde
29 Abr 2011
Mensajes
1.516
Una forma fácil así como lo estás manejando es checando tu variable de sesión y si no existe lo redireccionas al index.php.

Por ejemplo, agrega esta función en tu base.php:

PHP:
function isLogged() {
	return !empty($_SESSION['s_username']);
}

luego, en tu home.php pon esto (hasta arriba, dentro del PHP, pero abajo del include del base.php):
PHP:
if ( !isLogged() ) {
	header('Location: index.php');
}

y con eso te debería de funcionar.

y si quieres que del index.php te mande al home.php cuando ya estes logueado, sería algo similar, agregango esto en tu index.php (solo que tendrías que incluir el base.php también):
PHP:
if ( isLogged() ) {
	header('Location: home.php');
}

Otra cosa, en tu código de ingreso en lugar que hacer una consulta con el nombre de usuario y luego checar si el password es el mismo que el que mandaron mejor has las consulta con ambos (usuario y password) y checas si tienes algún registro, si es así los datos son correctos, sino no.

Algo como:
PHP:
session_start();
include 'base.php';

$username = isset($_POST['username']) ? $_POST['username'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;

if ( isset($username) && isset($password) ) {
	$sql = "SELECT username, password FROM users WHERE username = '{$username}' AND password = '{$password}';";
	$res = $link->query( $sql );
	if ( $res->nuw_rows == 0 ) {
		echo 'Nombre de usuario y/o password incorrectos.';
	} else {
		$user = $res->fetch_assoc();
		$_SESSION['s_username'] = $user['username'];
		header('Location: home.php');
	}
}

nada más que en ese ejemplo sería usando mysqli, para hacer eso, tu base.php debería de ser algo como:
PHP:
<?php
	$host	= 	"localhost";
	$user    = 	"root";
	$pw 	 = 	"";
	$bd 	 = 	"martfitness";

	$link	=	new mysqli( $host, $user, $pw, $bd );

	function isLogged() {
		return !empty($_SESSION['s_username']);
	}

Saludos.
 

Luis Martin

1
Lambda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Suscripción a IA
Desde
22 Sep 2013
Mensajes
2.762
Una forma fácil así como lo estás manejando es checando tu variable de sesión y si no existe lo redireccionas al index.php.

Por ejemplo, agrega esta función en tu base.php:

PHP:
function isLogged() {
	return !empty($_SESSION['s_username']);
}

luego, en tu home.php pon esto (hasta arriba, dentro del PHP, pero abajo del include del base.php):
PHP:
if ( !isLogged() ) {
	header('Location: index.php');
}

y con eso te debería de funcionar.

y si quieres que del index.php te mande al home.php cuando ya estes logueado, sería algo similar, agregango esto en tu index.php (solo que tendrías que incluir el base.php también):
PHP:
if ( isLogged() ) {
	header('Location: home.php');
}

Otra cosa, en tu código de ingreso en lugar que hacer una consulta con el nombre de usuario y luego checar si el password es el mismo que el que mandaron mejor has las consulta con ambos (usuario y password) y checas si tienes algún registro, si es así los datos son correctos, sino no.

Algo como:
PHP:
session_start();
include 'base.php';

$username = isset($_POST['username']) ? $_POST['username'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;

if ( isset($username) && isset($password) ) {
	$sql = "SELECT username, password FROM users WHERE username = '{$username}' AND password = '{$password}';";
	$res = $link->query( $sql );
	if ( $res->nuw_rows == 0 ) {
		echo 'Nombre de usuario y/o password incorrectos.';
	} else {
		$user = $res->fetch_assoc();
		$_SESSION['s_username'] = $user['username'];
		header('Location: home.php');
	}
}

nada más que en ese ejemplo sería usando mysqli, para hacer eso, tu base.php debería de ser algo como:
PHP:
<?php
	$host	= 	"localhost";
	$user    = 	"root";
	$pw 	 = 	"";
	$bd 	 = 	"martfitness";

	$link	=	new mysqli( $host, $user, $pw, $bd );

	function isLogged() {
		return !empty($_SESSION['s_username']);
	}

Saludos.


Amigo muchas gracias los codigos funcionaron perfectamente, una sola pregunta extra, sabes que cuando la persona ingresa un usuario incorrecto o contraseña lo redirije a una pagina en blanco que dice : Nombre de usuario y/o password incorrectos.. Pero habria una forma de hacer que ese mensaje aparezca en el index debajo del login? saludos :)
 

lombervid

Zeta
Verificación en dos pasos desactivada
Desde
29 Abr 2011
Mensajes
1.516
Amigo muchas gracias los codigos funcionaron perfectamente, una sola pregunta extra, sabes que cuando la persona ingresa un usuario incorrecto o contraseña lo redirije a una pagina en blanco que dice : Nombre de usuario y/o password incorrectos.. Pero habria una forma de hacer que ese mensaje aparezca en el index debajo del login? saludos :)

En el archivo de ingreso vez de imprimir el texto envialo al index.php mandandole una variable para que sepas que fue un intento fallido, cambiando esto:
PHP:
echo 'Nombre de usuario y/o password incorrectos.';
por:
PHP:
header( 'Location: index.php?error=1' );

y en tu index.php pones esto dónde quieras que salga:
PHP:
<?php if ( isset($_GET['error']) ): ?>
	Nombre de usuario y/o contraseña incorrectos.
<?php endif ?>

Saludos.
 

belial9826

Dseda
Redactor
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
5 Dic 2012
Mensajes
1.172
Es hora que conozcas js y css, podrás crear estilos mas dinámicos, lo cual sera de agrado para tus clientes. Para lo que dices, seria mejor mostrar una modal, es como un alert, pero mas elegante y personalizable. Saludos :D

Amigo muchas gracias los codigos funcionaron perfectamente, una sola pregunta extra, sabes que cuando la persona ingresa un usuario incorrecto o contraseña lo redirije a una pagina en blanco que dice : Nombre de usuario y/o password incorrectos.. Pero habria una forma de hacer que ese mensaje aparezca en el index debajo del login? saludos :)
 

Luis Martin

1
Lambda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Suscripción a IA
Desde
22 Sep 2013
Mensajes
2.762
En el archivo de ingreso vez de imprimir el texto envialo al index.php mandandole una variable para que sepas que fue un intento fallido, cambiando esto:
PHP:
echo 'Nombre de usuario y/o password incorrectos.';
por:
PHP:
header( 'Location: index.php?error=1' );

y en tu index.php pones esto dónde quieras que salga:
PHP:
<?php if ( isset($_GET['error']) ): ?>
	Nombre de usuario y/o contraseña incorrectos.
<?php endif ?>

Saludos.

Muchas gracias amigo todo ha salido perfecto :D
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba