Sistema de ingreso de usuario en PHP

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

0 Miembros y 2 Visitantes están viendo este tema.

Hans el Topo

#40
<?php
setcookie
("id","0");
setcookie("nick","0");
setcookie("contraseña","0");
?>


no es tan difícil xD sino te las borra es xk haces mal las comprobaciones o algo xD

muestra luego sus valores ave k contienen
 

jamarchi


Hola a todos y gracias por responderme .....  :D

Gracias Hans el topo por respondes y Degmaster....

Las pruebas que he hecho con el codigo que has visto es .... trato de ingresar directamente a la pagina que quiero proteger que en este caso es resumen.php, cuando lo trato de hacer la primera vez me manda el error de que no estoy logueado....  ahi vamos bien....

Luego me manda al index donde tengo un Form donde llenos los datos (username y password) y entro, la pagina validar.php es la que verifica si el username y el password estan bien y luego me muestra la pagina resumen.php,  hasta ahi vamos EXCELENTE.....

Ahora bien... cuando estoy en resumen.php, presciono el boton de salir y este me llama a logout.php que es quien supuestamente borras las cookies, ahora bien si yo en ese momento trato de ingresar directo a la pagina resumen.php no me manda ningun error y en teoria deberia decirme que no estoy logueado..... ese es el error

Degmaster, yo puse el ecodigo como tu me lo diste

<?
//clear the cookie and return to login
$login_page = "index.php";
if($_COOKIE[id] && $_COOKIE[nick] && $_COOKIE[pass]){
setcookie("");
setcookie("");
setcookie("");
if($HTTP_REFERER){
header("location: $HTTP_REFERER");}
else {
header("location: index.php");}
} else {
echo "No estas logueado!";
header("Location: $login_page");
}

?>



Pero no me funciono.... tambien lo puse asi

<?
$login_page = "index.php";
setcookie ("id", "", time() - 3600);
setcookie ("nick", "", time() - 3600);
setcookie ("pass", "", time() - 3600);
setcookie("id", "", 0, "", "", 0);
setcookie("nick", "", 0, "", "", 0);
setcookie("pass", "", 0, "", "", 0);
header("location: index.php");
?>


y tampoco me funciono...  :-[

No se se si esto pueda funcionar ... asi como lo dice Hast el Topo

setcookie("id", "", "" );

Hans el Topo

#42
Validar

<?php
include ("includes/config.php");
include ("includes/funciones.php");
//nos conectamos a mysql
$cnx conectar ();
if($_POST["entrar"]){
if($_POST["username"] && $_POST["pass"]){
$contraseña md5("$_POST[pass]"); 

$query mysql_query("SELECT * FROM usuarios WHERE nick='".$_POST['username']."'",$cnx);
$datos mysql_fetch_array($query); 
if($datos['pass'] == $pass){ // 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("pass",$pass,time()+90000);
                                       
//redireccionas donde quieras login correcto
                                
}
}
//pa la pag de error
?>



Resumen

<?php
//tomaría el valor de la cookie y pediría el valor de la pass del usuario, compararía valores y si es correcto dejaria ver lo k kieras, si es incorrecto yo lo mandaría al logout sin más, y en el log out a ti te da igual k este logeado o no tu le pones las cookies a 0 y listo , en este código te puede entrar cualquiera a ver los contenidos xD solamente tiene que crearse la cookie id. 

//código inseguro xD
if($_COOKIE['id']) 
{echo 
"<h1>&nbsp;</h1>";
 echo 
"<h1>YES !!</h1>";
// Aqui va el codigo que quieras proteger
} else 
{echo 
"Solo los usuarios registrados pueden acceder a esta sección";
}
//Fin
echo"<p>&nbsp;</p>";
echo
"<a href='logout.php'>Salir</a>"
?>



Te pego un code que usaba para un jueguecillo web k te deslogeaba pasados 10 minutos, te pongo parte del code, tenía bastantes más protecciones xD. Hace time que no programo en php y bueno el code es viejo. Espero que te sirva al menos como estructura de referencia

<?php
//pillamos valores
$user=$_COOKIE['user'];
$id=$_COOKIE['id'];
//actualizamos valores
setcookie("user","$user",time()+600);
setcookie("id","$id",time()+600);

//comprobamos valores
//comprobamos si el usuario es válido y los posibles intentos de lameradas
if(es_cadena($user)&&es_cadena_num($id)){
$rango=sentencia("select rango from usuario where nick like '$user' and password like '$id' limit 1");
}else{
$rango=0;
}

if(
$rango==1)
    echo
"Sitio protegido";
else
    echo
"Mirón";


Te adjunto mi login
<?php
setcookie
("user","$user",time()+600);
setcookie("id","$pass",time()+600);

echo
"<center><br><br>Entrando...</center>";

if(
es_cadena_num($user)&&es_cadena_num($pass)){ //si son valores viables
$rango=sentencia("select rango from usuario where nick like '$user' and password like '$pass' limit 1");
if($rango==3){
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=master.php\">";
}elseif($rango==1){
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=user.php\">";
}else{
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=salir.php\">";
}
}else{
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=salir.php\">";
}


Salir

<?php
setcookie
("user","0");
setcookie("id","0");

echo 
"<center><br>Sesión Finalizada<br>Que tenga un buen día ";

echo 
"<META HTTP-EQUIV=\"refresh\" content=\"1;URL=menu.php\">";


Si tienes alguna duda mirate el link de las sesiones que te pase que yo creo que mirandoselo todo esta solucionado xD

La función no es gran cosa pero cumple su cometido xD
<?php
//letras y símbolos permitidos
define("CONS_CADENA","_abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ");
//COMPRUEBA SI SON TODO CARACTERES VÁLIDOS (devuelve 1 si 0 no)
function es_cadena($cadena){
//buscamos caracteres buenos
$i=0;
$cadena.=1; //centinela
//se puede solventar todo con http://es2.php.net/manual/es/function.stripos.php
while(posicion(CONS_CADENA,$cadena[$i])>=0){
$i++;
}
if($i==strlen($cadena)-1) //centinela
return 1;
else
return 0; //caracteres malos
}
 

jamarchi

Hola Gente.....  :D

Oye Hans el Topo, gracias por ese codigo esta muy bueno....

Ayer estuve probando varias modificaciones para borrar las cookies y todas me daban el mismo resultado...

Lo que hacia es, me iba al index, digitaba la informacion, la pagina validar lo quequeaba y me dejaba entrar a la pagina protegido, resumen.php, cuando salia de resumen parecia que borraba las cookies pero si me iba directamente a la pagina de resumen..... me dejaba ingresar (estando deslogueado) despues de mucho darle se me ocurrio prescionar la tecla de F5 para actualizar la pagina resumen..... y adivinen que.... me mostro el mensaje de que no estaba logueado....

Creo que por ahi anda el problema.... no esta actulizando... y aunque puse este codigo que me pasaste Hans el Topo



echo "<META HTTP-EQUIV=\"refresh\" content=\"1;URL=menu.php\">";



no me esta acutalizando la pagina.....   >:(

Alguna sugerencia......

Gracias   :)

Luisango

Hola de nuevo, veo que todos los 3 mensajes que postee, no estan... :S asique te respondo a tu ultima duda, por que no lo haces mediante PHP?


<?php
header
("Location: menu.php");
?>



Si quieres me agregas y hablamos por msn (thesixhalcon@hotmail.com)...

PD: El foro a veces va de culo, o no se, alguien me borra los mensajes xD
Even better...

jamarchi


Hola

Bueno.... de hecho lo estoy haciendo en PHP,  segun lo que aconsejo Hans el Topo, como lo puedes ver


<?php
setcookie
("user","0");
setcookie("id","0");

echo 
"<center><br>Sesión Finalizada<br>Que tenga un buen día ";

echo 
"<META HTTP-EQUIV=\"refresh\" content=\"1;URL=menu.php\">"
?>



No se si te refieres a eso .... que se puede hacer

Ya te agregue al msm

Saludos,  ;D

Hans el Topo

la página válidar que tenias lo único que miraba es que existiese una cookie llamada id... no que tuviese ni valor ni na, solo que existiese por eso te deja verla, si utilizas firefox no suele actualizar con la frecuencia que debería xD

session_cache_limiter('nocache,private');
header("Cache-Control: no-store, no-cache, must-revalidate"); 


añade eso a las cabeeceras y listo xD
 

jamarchi

Gracias Hans el Topo por tu respuesta....  :D

Disculpa pero no me quedo claro donde poner eso que me dijiste, el el archivo a proteger, en el validar o en el de salir

Cita de: Hans el Topo en 12 Abril 2007, 21:04 PM

session_cache_limiter('nocache,private');
header("Cache-Control: no-store, no-cache, must-revalidate"); 


añade eso a las cabeeceras y listo xD


Gracias nuevamente  ;D

Hans el Topo

Citarañade eso a las cabeceras
todas
 

Luisango

Te funciono lo que te pase por el msn?, lo que le pase es el logout que quitaba las cookies

Un saludo!
Even better...