Sistema de ingreso de usuario en PHP

Iniciado por jamarchi, 30 Marzo 2007, 22:10 PM

0 Miembros y 1 Visitante están viendo este tema.

jamarchi

Hola gente.....   ;D

Tengo que hacer lo siguiente.... mi cliente quiere que si el usuario no esta logueado no pueda ver ninguna informacion del sitio web (alrededor de 15 paginas), osea que no pueda ver nada de la pagina 13 sin estar logueado.....

Realmente soy nuevo en este tema de la seguridad y nunca he hecho nada parecido.....   :huh:

lo que tengo por el momento hecho es el registro de los usuarios en una base de datos.....

Quisiera que me ayudaran a ver que puedo utilizar para realizar esto

De antemano mil gracias.....  ;D

Saludos , 

Luisango

#1
Bien, ahora lo que tienes que hacer es el logueo y aqui te hago un codigo improvisado que tenia por ahi (mejoralo si quieres):

<?php
if($_POST["entrar"]){ 

if($_POST["username"] && $_POST["password"]){

$contraseña md5("$_POST[password]"); //esto de md5 es para comparar si guardas la passwd en md5 si no borralo

$query mysql_query("SELECT * FROM usuarios WHERE nick='$_POST[username]' or email='$_POST[username]'");
$datos mysql_fetch_array($query);

if($datos[contraseña] == $contraseña){ // si las pass son =
// crea la cookie del usuario con la id el nick y la pass
setcookie("id",$datos[id],time()+90000);
setcookie("nick",$datos[nick],time()+90000);
setcookie("contraseña",$contraseña,time()+90000);

if($HTTP_REFERER){ // lo redirige
header("Location: $HTTP_REFERER");
} else {
header("Location: TUPAGINADEINICIO.htm");
}

} else {

echo "La contraseña es incorrecta";

}

} else {

echo "Faltan campos por rellenar";

}

} else {

echo "Estas haciendo un uso indevido del login";

}
?>




Y ahora ya tienes el usuario logueado y con las cookies calentitas y dispuestas a ser usadas, entonces entramos a la proteccion de las paginas:


<?php
if($_COOKIE[id]) {

// Aqui va el codigo que quieras proteger

} else {

echo 
"Solo los usuarios registrados pueden acceder a esta sección";

}
//Fin
?>



Y por ultimo, esto no lo pedias pero creo que te hara falta asique ahi va el deshacedor de las cookies o el logout:


<?php
if($_COOKIE[id] && $_COOKIE[nick] && $_COOKIE[contraseña]){

setcookie("id");
setcookie("nick");
setcookie("contraseña");

if($HTTP_REFERER){
header("location: $HTTP_REFERER");
} else {
header("location: TUPAGINADEINICIO.htm");
}


} else {


echo "No estas logueado!";

}
?>



En todos los archivos debes incluir la conexion a la base de datos.

Para utilizar los datos del usuario mediante las cookies lo pones asi:

<?php

echo $_COOKIE[id];  //para la id
echo $_COOKIE[nick]; //para el nick
echo $_COOKIE[contrasena];  // para la contraseña, no la utilizes xD

?>



Te recomiendo que los pongas en archivos diferentes y te vayas a ellos mediante por ejemplo para el login la accion del form:
<form ---->action="lapaginadellogin.php"<----  >

Y ya esta, asiqeu si tienes alguna duda mas solo ponmelo aqui
Even better...

jamarchi


oye Degmaster gracias por la respuesta tan pronto.....

dejame ver si entendi bien.....

Este codigo lo pongo en la pagina de inicio o bien de logueo, cierto ?

Si el password son iguales entonces pone las cookies, cierto ? si no pues no.....

ahora bien.... tnego un par de consultas .....  :huh:
1. Que pase si el usuario se dirire directamente a la pagina 13, por ejemplo, osea.... se salta el logueo y digita directamente la ruta (url) la de pagina 13 ?

2. A que te refieres con header("Location: TUPAGINADEINICIO.htm"); es el indix ?

Gracias   :D

Luisango

1. si pones la proteccion antes del codigo del pagineo de contenido es imposible que se salte el login
2. si es el index xD

PD: me faltan cosas en el post, que lo estoy modificando
Even better...

Luisango

#4
Ya esta todo puesto, y como te he dicho antes, si tienes alguna duda, solo posteala que te la respondere jejej

PD: se me olvidaba, los mysql_query, los modificas a tu gusto que estan puestos para unas tablas ya hechas que tengo asique nada.. suerte!

Un saludo!
Even better...

jamarchi

oye Degmaster gracias nuevamente por la respuesta tan pronta.....

Quiero hacer u nresumen para ver si entendi bien todo esto...

en la pagina de logueo o en el index.php tiene que ir esto

<?php
if($_POST["entrar"]){ 

if(
$_POST["username"] && $_POST["password"]){

$contraseña md5("$_POST[password]"); //esto de md5 es para comparar si guardas la passwd en md5 si no borralo

$query mysql_query("SELECT * FROM usuarios WHERE nick='$_POST[username]' or email='$_POST[username]'");
$datos mysql_fetch_array($query);

if(
$datos[contraseña] == $contraseña){ // si las pass son =
// crea la cookie del usuario con la id el nick y la pass
setcookie("id",$datos[id],time()+90000);
setcookie("nick",$datos[nick],time()+90000);
setcookie("contraseña",$contraseña,time()+90000);

if(
$HTTP_REFERER){ // lo redirige
header("Location: $HTTP_REFERER");
} else {
header("Location: TUPAGINADEINICIO.htm");
}

} else {

echo 
"La contraseña es incorrecta";

}

} else {

echo 
"Faltan campos por rellenar";

}

} else {

echo 
"Estas haciendo un uso indevido del login";

}
?>




ahora bien..... cada pagina de mi sitio... por ejemplo la pagina 13.... llamemosla por ejemplo resumen.php tiene que ir este codigo desde el principio.... de hecho creo que este es el inicio, cierto ?


<?php
if($_COOKIE[id]) {

// Aqui va el codigo que quieras proteger

} else {

echo 
"Solo los usuarios registrados pueden acceder a esta sección";

}
//Fin
?>




para cada pagina tengo un link o referencia a una pagina logout.php que seria esta

<?php
if($_COOKIE[id] && $_COOKIE[nick] && $_COOKIE[contraseña]){

setcookie("id");
setcookie("nick");
setcookie("contraseña");

if(
$HTTP_REFERER){
header("location: $HTTP_REFERER");
} else {
header("location: TUPAGINADEINICIO.htm");
}


} else {


echo 
"No estas logueado!";

}
?>




Estoy en lo correcto ?  ;D

Ahora bien.... no me quedo muy claro estas dos cosas.....

Para utilizar los datos del usuario mediante las cookies lo pones asi:


<?php

echo $_COOKIE[id];  //para la id
echo $_COOKIE[nick]; //para el nick
echo $_COOKIE[contraseña];  // para la contraseña, no la utilizes xD

?>



Te recomiendo que los pongas en archivos diferentes y te vayas a ellos mediante por ejemplo para el login la accion del form:


<form ---->action="lapaginadellogin.php"<----  >


Esas dos cosas no me quedaron muy claras....  me puedes explicar eso por favor ......

Saludos  ;D


[ Alberto]

tambien podrias usar variables de sesion y obtienes el mismo resultado que con cokies http://dns.bdat.net/trucos/faqphp-v1/x942.html
Debemos de hacer todas las cosas sencillas, excepto las cosas sencillas

jamarchi

gracias Alberto..... :D

Pero.... que son variables de sesion....   :o me puedes hechar la manos y explicarme eso de las seciones....

Saludos,  ;D

Luisango

mejor no liemos las cosas jejeje
vamos a ver
en un formulario cuando le das al boton enviar te redirige a una pagina no? pues eso es el action="" para que te redirija a la pagina de logueo.

A la que la has llamado index.php preferiria que como veo que no eres muy experimentado para hacer cosas "raras" qeu lo pusieses por ejemplo en login.php.
Y como tu has dicho para que el usuario se desconecte haz una referencia al logout.php, antes de nada la proteccion de la pagina no la pongas al principio de cada pagina sino donde sea necesario, ya que puedes mezclar php y htm juntos.

Si hay algo mas en lo que te pueda ayudar... ya sabes
Even better...

Hans el Topo

Cita de: jamarchi en 30 Marzo 2007, 23:46 PM
gracias Alberto..... :D

Pero.... que son variables de sesion....   :o me puedes hechar la manos y explicarme eso de las seciones....

Saludos,  ;D

www.php.net    .... busca ahi todo lo que no entiendas