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.

jamarchi

oigan..... muchas gracias por sus repuestas.....

ahora me entro la duda ...... con lo que dice KiZar con respecto a la seguridad con las cookies..... si hay alguna sugeernecia con respecto a eso se los voy a agradecer.....  :)

Voy a probar bien todo esto y les estoy avisando...

Saludos,  ;D


Luisango

Even better...

Luisango

http://foro.elhacker.net/index.php/topic,160510.0.html

Leetelo, hasta dentro de una semana no te podre responder :( asique supongo que te dejo en bueenas manos aqui con Eritai, SERBice y KiZaR (moderador y participantes jejjee ;))


Un saludo y feliz semana santa!
Even better...

Kizar

Je ne vais pas non plus être ici durant la semaine sainte.

jamarchi

ah ok..... bueno .... pues feliz samana santa.....

cualquier cosa ahi les escribo...... para que no se olviden de mi ..... jejeje  ;D

saludos,   :D

Luisango

ya volvi, asique lo que sea, si tienes algunda duda postea :):):)

Un saludo!
Even better...

jamarchi


Ah ok..... como estuvo el paseo ...... justo a tiempo Degmaster..... ya iba hacer TODAS las pruebas del caso....  ;D

Gracias por tenerme pendiente, y creo que si voy a hacerte mas consultas pero primero quiere poner todo bien....

Saludos,  :D

jamarchi

Hola..... estoy haciendo las pruebas de rigor con el codigo.... jejeje

para contarles lo que hice..... tengo el index.php que tiene lo siguente

  <form name="form1" method="post" action="validar.php">
    <table width="45%"  border="1">
      <tr>
        <td width="47%">Username</td>
        <td width="53%"><input name="username" type="text" id="username"></td>
      </tr>
      <tr>
        <td>Password</td>
        <td><input name="pass" type="text" id="pass"></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>
          <div align="right">
            <input name="entrar" type="submit" id="entrar" value="Entrar">
          </div></td>
      </tr>
    </table>
  </form>


Un index que lo unico que tiene es un formulario donde se llena el username y el password y que llamar al archivo validar.php

Este archivo validar.php tiene el siguiente codigo

<?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]"); //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]'");
$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);
if($HTTP_REFERER){ // lo redirige
header("Location: resumen.php"); } // Esto es lo que tenia header("location: $HTTP_REFERER");
else {
header("Location: index.php");
}
} else {
echo "La contraseña es incorrecta";
}
} else {
echo "Faltan campos por rellenar";
}
} else {
echo "Estas haciendo un uso indevido del login";
}
?>



Este codigo es que me pasaste Degmaster.... ya con los datos propios de mi base y tabla, al parecer me funciona bien.... le digito el username y el password pero me devuelve al index (formulario) y aunque trate de modificarlo para que me lleve a la pagina resumen.phpno lo hace.....

Alguina sugerencia ....

Saludos  ;D

jamarchi


Hola Gente..... ahora si.... tamos listos, ya estan hechos y probados cada uno de los archivos....  :D

Hice 5 archivos: index.php, donde tengo un formulario donde tomo y mando el username y pass, validar.php, donde hace la busqueda en mi base de datos y verifica si el usuario existe y pones las respectivas cookies, resumen.php, que es el archivo o información a proteger, logout.php. que es para hacer el logueo y borrar las cookies, config.php, que es donde realizo la conexion a la base de datos y por ultimo funciones.php, que es donde tengo los datos para la conexcion.....

ahora los archivos mas importantes son
index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<div align="center">
  <form name="form1" method="post" action="validar.php">
    <table width="45%"  border="1">
      <tr>
        <td width="47%">Username</td>
        <td width="53%"><input name="username" type="text" id="username"></td>
      </tr>
      <tr>
        <td>Password</td>
        <td><input name="pass" type="text" id="pass"></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>
          <div align="right">
            <input name="entrar" type="submit" id="entrar" value="Entrar">
          </div></td>
      </tr>
    </table>
  </form>
</div>
</body>
</html>


validar.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Prueba de acceso</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?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]"); //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]'");
$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);
//if($HTTP_REFERER){ // lo redirige
header("Location: resumen.php"); //} // Esto es lo que tenia header("location: $HTTP_REFERER");
//else {
// header("Location: index.php");
//}
} else {
echo "La contraseña es incorrecta";
header("Location: index.php");
}
} else {
echo "Faltan campos por rellenar";
}
} else {
echo "Estas haciendo un uso indevido del login";
}
?>

</body>
</html>


resumen.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style1 {color: #0000FF}
-->
</style></head>

<body>
<?php
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>"
?>

</body>
</html>


logout.php
<?
//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");
}

//setcookie ("this_cookie", "", 0, "", "", 0);
//setcookie ("name", "", 0, "", "", 0);
//header("Location: $login_page");
//exit();
?>


config.php

<?php
$HOSTNAME 
"localhost";//SERVIDOR
$USERNAME "root"; //USUARIO
$PASSWORD ""; //CONTRASEÑA
$DATABASE "minasthirit"; //BASE DE DATOS  minasthirit
?>


funciones.php
<?
/***
función conectar
que = se conecta a mysql y devuelve el identificador de conexión
***/
function conectar(){
$dbh=mysql_connect ("localhost", "USUARIO", "PASS") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("minasthirit");
//global $HOSTNAME,$USERNAME,$PASSWORD,$DATABASE;
//$idcnx = mysql_connect($HOSTNAME, $USERNAME, $PASSWORD) or DIE(mysql_error());
//mysql_select_db($DATABASE, $idcnx);
return $idcnx;
}
?>


Aahora...... el problema es que en mi maquina funciono de lo mejor.... se comporto como debia pero cuando lo subi al servidor me mando estos errores


Warning: Cannot modify header information - headers already sent by (output started at /home/publiweb/public_html/access/validar.php:8) in /home/publiweb/public_html/access/validar.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /home/publiweb/public_html/access/validar.php:8) in /home/publiweb/public_html/access/validar.php on line 20

Warning: Cannot modify header information - headers already sent by (output started at /home/publiweb/public_html/access/validar.php:8) in /home/publiweb/public_html/access/validar.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /home/publiweb/public_html/access/validar.php:8) in /home/publiweb/public_html/access/validar.php on line 23



No entiendo que es lo que pasa ..... alguna sugerencia.... gracias   :huh: :huh: :huh:

Saludos  ;D

Hans el Topo

los setcookies van antes de enviar texto de salida ya sea el head y tal xD


<?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]"); //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]'");
$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);


//if($HTTP_REFERER){ // lo redirige
header("Location: resumen.php"); //} // Esto es lo que tenia header("location: $HTTP_REFERER");
//else {
// header("Location: index.php");
//}
} else {
echo "La contraseña es incorrecta";
header("Location: index.php");
}
} else {
echo "Faltan campos por rellenar";
}
} else {
echo "Estas haciendo un uso indevido del login";
}
?>