Maestros del Web


Estás en Inicio / Editorial / PHP

03.08.2002

Registro y reconocimiento de usuarios con PHP

En esta oportunidad crearemos un sistema de registro de usuarios utilizando a PHP.

¿En que consiste? y ¿para que sirve? muy sencillo, en algunas webs como
por ejemplo esta, queremos interactuar con los usuarios, deseamos que estos
puedan enviar scripts al sistema para ayudar a crecer la coleccion de scripts
que disponemos, pero deseamos llevar un control sobre los autores de los scripts
asi que no cualquiera puede enviar scripts, para hacerlo tienes que registrarte
y hacer el respectivo "ingreso" para que el sistema te reconosca
y te deje enviar scripts, archivos y articulos como este, de otra manera no
puedes hacer ninguna de estas acciones.

¿Pero como se logra esto?, se hace teniendo en una base de datos una tabla de usuarios(Podria
hacerse con archivos, aunque seria un poco inseguro) y por medio de archivos
PHP y manejo de sesiones(session) o por "cukis"(cookies).

En este articulo explicare como crear un sistema de registro y reconocimiento de usuarios teniendo
una tabla en una base de datos MySql y por medio de "cukis"(COOKIES)
para nuestra web de una manera sencilla.

A la hora de crear un sistema de registro de usuarios siempre pensamos en lo mismo:

registro + login
+ reconocimiento

Queremos que los usuarios se registren dejando sus datos y puedan acceder a algunas zonas
de la pagina y sea reconocido por nuestra pagina(por ejemplo "bienvenido
jlmm" o "bienvenido visitante" en caso de no estar ingresado
(o registrado) en el sistema).

Muchos piensan en crear un sistema de usuarios por que les parece "bonito", pero hay
pocos que realmente lo necesitan(lo digo por experiencia con dichas personas),
y cuando les haces las dos preguntas:

1- ¿que beneficios tienen los usuarios registrados con respecto a los demas?

2- ¿que zonas de tu web quieres que sean de acceso restringido y PORQUE?

La mayoria no es capaz de responder la primera pregunta, y es que antes de aventurarnos a crear
un sistema de usuarios para nuestra web debemos de pensar si realmente vale
la pena, ya que las tematicas de la web y sus contenidos no siempre son adecuados
para tener un sistema de registro de usuarios.

Para ello respondemos las 2 preguntas, en el caso de misCODIGOS.com serian:

1- ¿que beneficios tienen los usuarios registrados con respecto a los demas?

R://Posibilidad de enviar scripts, articulos y archivos al sistema, al igual
que disponibilidad de un panel de control entre otros.

2- ¿que zonas de tu web quieres que sean de acceso restringido y PORQUE?

R://Quiero que solo los usuarios que esten registrados puedan enviar scripts/articulos/archivos,
ya que asi puedo llevar un mejor cotrol sobre los mismos y prevenir el envio
indiscriminado de scripts/articulos/archivos al sistema por parte de los usuarios.

Ya tenemos nuestras razones para crear nuestro sistema de registro de usuarios, claro que pueden
haber muchas razones dependiendo del tipo de web, podrian ser por ejemplo para
que solo usuarios registrados puedan bajar software/musica/videos/etc, para
restringir el acceso a ciertas zonas de la web "obligando" al usuario
a registrarse para poder "ver" dicha zona, etc…

Siempre teniendo en cuenta que las razones sean validas y que no molesten al usuario,
ya que en mi caso hace algunos meses me encontre con una web de "scripts"
la cual para poder ver los "scripts" tenias que registrarte, obviamente
lo que hice fue salir de esa web y olvidarla (por ello no les puedo dar la direccion),
tenemos que tener muy en cuenta que zonas restringir a usuarios registrados
ya que el usuario en general prefiere la comodidad y en este caso que les comento
de webs con recursos y scripts para webmasters hay muchas (pero ninguna como
esta :-P) y hay que buscar siempre la comodidad de los usuarios.

Ahora a lo que vinimos, crearemos nuestro sistema de registro de usuario, lo primero que debemos pensar
es que datos debera introducir el usuario para registrarse, como siempre deberan
de haber aunque sea dos campos basicos:

  • nick
  • password

Lo mas común para identificar a los usuarios es por medio de nick/password,
aunque también podria ser email/password, para este articulo utilizare
el primero(nick/password).

Ya sabemos que nuestra tabla de "usuarios" tendra esos dos campos:

CREATE TABLE usuarios (
      id bigint(7) NOT NULL auto_increment,
      nick char(100) NOT NULL,
      password char(100) NOT NULL,
      KEY id (id))

¿Pero
son suficientes?, tambien seria bueno tener el email de los usuarios en caso
de querer enviar informacion a los usuarios registrados y tener el nombre de
dichos usuarios para personalizar dichos emails o mensajes que le demos al usuario
en la pagina(ejemplo "hola jorge luis"), entonces nuestra tabla creceria
un poco:

CREATE TABLE usuarios (
      id bigint(7) NOT NULL auto_increment,
      nick char(100) NOT NULL,
      password char(100) NOT NULL,
      nombre char(255) default NULL,
      email char(100) default NULL,
      KEY id (id))

Listo, ya tenemos la estructura de nuestra tabla de usuarios, es pequeña y sencilla
pero para efectos prácticos y de aprendizaje es perfecta (eso depende
de ti, según lo que desees saber de tus usuarios).

Ahora viene lo sencillo,
crear el sistema de registro de usuarios, un formulario y una aplicacion que
agregue al nuevo usuario a la base de datos, para ello crearemos un formulario
del tipo:

FORM ACTION="registrar.php" METHOD="post">
      Nick : <INPUT TYPE="text" NAME="nick" SIZE=20 MAXLENGTH=20>

      <BR>
      Email: <INPUT TYPE="text" NAME="email" SIZE=28 MAXLENGTH=100>
      <BR>
      Password: <INPUT TYPE="password" NAME="password"

      SIZE=28 MAXLENGTH=20>
      <BR>
      Nombre: <INPUT TYPE="text" NAME="nombre" SIZE=28
      MAXLENGTH=255>
      <BR>

      <INPUT TYPE="submit" CLASS="boton" VALUE="Registrar">
      </FORM>

Y ahora necesitamos una aplicacion que lo procese (registrar.php), por motivos
practicos haremos algo sencillo sin demasiadas comprobaciones (dependera de
ti mejorarlo si quieres algo mas personalizado), primero el codigo luego la
explicacion:

<?php
//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.
function quitar($mensaje)
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',""",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["email"]) != "")
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "Error, nick escogido por otro usuario";
}
else
{
$sql = "INSERT INTO usuarios (nick,password,nombre,email) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
$sql .= ")";
mysql_query($sql);
echo "Registro exitoso!";
}
mysql_free_result($result);
}
else
{
echo "Debe llenar como minimo los campos de email y password";
}
mysql_close();
?>

Al principio no he echo conexion con la base de datos pero he puesto el comentario "//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.", ya que la conexion depende de ti, si no sabes como hacer una conexion te aconsejo
buscarte un manual antes de estar queriendo hacer un sistema como este.

Vemos que he declarado una funcion, llamada quitar($mensaje), la cual recibe el parametro "mensaje",
esta funcion se encargara de deshabilitar el codigo html("<" y
">") al reemplazarlos por su respectivo codigo("<"
y ">"), ademas de reemplazar el apostrofe(’) y las comillas dobles(")
por sus respectivos codigos HTML, esto para no tener conflictos con la instruccion
sql, y al final retorna la cadena con las nuevas modificaciones en caso de haberlas:

function quitar($mensaje)
      {
      $mensaje = str_replace("<","<",$mensaje);
      $mensaje = str_replace(">",">",$mensaje);
      $mensaje = str_replace("\'","'",$mensaje);
      $mensaje = str_replace('\"',""",$mensaje);
      $mensaje = str_replace("\\\\","\",$mensaje);
      return $mensaje;
      } 

Ahora
comprobaremos que los campos de nick y password que seran los "requeridos"
como minimo para completar el registro no esten vacios, para ello utilizamos
la funcion "trim()" la cual quita los espacios al comienzo y al final
de la cadena, por lo que en caso de ser una cadena vacia o con solo espacios
en blanco retornara "", en caso de ser valido continuamos con el registro,
de lo contrario retornamos un mensaje de error:

if(trim($HTTP_POST_VARS["nick"]) != ""
      && trim($HTTP_POST_VARS["password"]) != "")

Ahora suponiendo que las cadenas estaban correctas comprobaremos que el nick seleccionado
por el usuario no exista en la base de datos, para ello hacemos una instruccion
sql para pedirle a la base de datos que nos retorne la fila donde el nick sea
igual al nick introducido con el usuario(quitandole el apostrofe, html y demas
con la funcion quitar()):

$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"]."'";
      $result = mysql_query($sql);

En caso de existir dicho nick, osea que nos devuelve una fila:

if($row = mysql_fetch_array($result))

Mostraremos un mensaje de error al usuario informandole del "incidente", de lo
contrario continuaremos con el proceso de registro.

Ahora
lo que hacemos es simplemente una instruccion sql donde insertamos en la tabla
usuarios el nick, password, nombre y email introducidos por el usuario en el
formulario, a todos estos les quitamos el html, apostrofe y demas haciendo uso
de nuestra instruccion "quitar()", y mostramos un mensaje de "exito" al usuario:

$sql = "INSERT INTO usuarios (nick,password,nombre,email)
      VALUES (";
      $sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
      $sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
      $sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
      $sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
      $sql .= ")";
      mysql_query($sql);
      echo "Registro exitoso!";

Nota:Por efectos practicos hemos echo esto muy sencillo, podrian agregar más
comprobaciones como la del email o manejo de errores mysql.

Tambien podria hacerse más seguro mediante el uso de la funcion de encriptacion
md5() para el password, aunque se esta haciendo lo mas sencillo posible ya que
la finalidad de este articulo es la de enseñar como reconocer a los usuarios,
de ustedes dependen estos "detalles" a la hora de "depurar" este codigo.

Bien, listo ya tenemos la aplicacion de registro, ¿pero y ahora que?, que hago
con todos esos usuarios, ahora necesitamos que los usuarios ingresen y sean
"reconocidos" y como lo dije lo haremos por medio de cookies.

Crearemos un formulario HTML para que los usuarios introduscan su nick y password al igual que deberemos
de realizar una aplicacion ingresar.php que sera la encargada de procesar si
el usuario es valido y darle "ingreso" al sistema por medio de una
cookie.

Es recomendable tener este archivo en la carpeta raiz de nuestra web, el formulario html seria algo
asi:

<FORM ACTION="ingresar.php" METHOD="post">
      Nick : <INPUT TYPE="text" NAME="nick" SIZE=20 MAXLENGTH=20>
      <BR>
      Password: <INPUT TYPE="password" NAME="password"
      SIZE=28 MAXLENGTH=20>
      <BR>
      <INPUT TYPE="submit" CLASS="boton" VALUE="Ingresar">
      </FORM>

Y
ahora el codigo de nuestra aplicacion ingresar.php, luego la explicacion:


<?php 

//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.

function quitar($mensaje)
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',""",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$nickN = quitar($HTTP_POST_VARS["nick"]);
$passN = quitar($HTTP_POST_VARS["password"]);

$result = mysql_query("SELECT password FROM usuarios WHERE nick='$nickN'");
if($row = mysql_fetch_array($result))
{
if($row["password"] == $passN)
{
//90 dias dura la cookie
setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);
?>
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 nick y password";
}
mysql_close();
?>

Bien, arriba ya explique que debes de realizar la conexion y explique el funcionamiento
de la funcion quitar($mensaje), asi que saltemos hasta el primer "if".

Lo primero que hacemos es comprobar que los campos de "nick" y "password" para
que no esten vacios, ya sabemos para que sirve trim() asi que no lo repetire:

if(trim($HTTP_POST_VARS["nick"]) != ""
      && trim($HTTP_POST_VARS["password"]) != "")

Asi que continuamos suponiendo que todo este bien, ahora lo que hacemos es quitarle
el html, apostrofe comillas y demas al nick y password enviados por el usuario
para su comprobacion con la base de datos, para ello utilizamos la funcion quitar($mensaje)
que explicamos antes, y guardamos las nuevas cadenas en dos nuevas variables:

nickN = quitar($HTTP_POST_VARS["nick"]);
      $passN = quitar($HTTP_POST_VARS["password"]);

Ahora ejecutamos una instruccion sql, en la cual le pedimos a la base de datos que
de la tabla usuarios nos devuelva la fila cuyo nick corresponda por el enviado
por el usuario:

$result = mysql_query("SELECT password FROM usuarios
      WHERE nick='$nickN'");

Si devuelve una columna quiere decir que el nick SI existe en la base de datos,
de lo contrario devolvemos un mensaje de error:

if($row = mysql_fetch_array($result))
      {
      ...
      }
      else
      {
      echo "Usuario no existente en la base de datos";
      }

Ahora continuamos con el proceso suponiendo que el usuario exista en la base de datos
ahora debemos comprobar que el password sea correcto, para ello hacemos una
simple comparacion, si es correcto continuamos de lo contrario mostramos el
mensaje de password incorrecto:

if($row["password"] == $passN)
      {
      ...
      }
      else
      {
      echo "Password incorrecto";
      }

Ahora suponiendo que el password es correcto continuamos y lo proximo a hacer es establecer
las cookies de nick y password (Las cuales nombramos "usNick"/"usPass" y contienen el nick y password respectivamente) en la maquina del usuario, informamos
que se ha realizado correctamente el login y lo enviamos a la pagina principal,
una vez mas recalco que estamos haciendo esto lo mas sencillo posible, de ti
depende personalizar y mejorar los mensajes :

setcookie("usNick",$nickN,time()+7776000);
      setcookie("usPass",$passN,time()+7776000);
      ?>
      <SCRIPT LANGUAGE="javascript">
      alert("Ingreso exitoso");
      location.href = "index.php";
      </SCRIPT>
      <?

Listo, el usuario ya tiene las cookies en su sistema, ¿pero ahora que?, como
hacemos para comprobar en las paginas que queramos si el login es correcto,
osea que el usuario posee las cookies y son validas?.

Para ello crearemos un ultimo archivo, lo llamaremos login.php, este se encargara de leer las cookies
y decirnos si el usuario es un usuario registrado y que ha echo el respectivo "ingreso" al sistema, el contenido de dicho archivo seria el siguiente:

<?php
      $loginCorrecto = false;
      $idUsuarioL;
      $nickUsuarioL;
      $emailUsuarioL;
      $nombreUsuarioL; 

if(isset($HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"]))
{
$result = mysql_query("SELECT * FROM usuarios WHERE nick='".$HTTP_COOKIE_VARS["usNick"]."' AND password='".$HTTP_COOKIE_VARS["usPass"]."'");

if($row = mysql_fetch_array($result))
{
setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000);
setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000);
$loginCorrecto = true;
$idUsuarioL = $row["id"];
$nickUsuarioL = $row["nick"];
$emailUsuarioL = $row["email"];
$nombreUsuarioL = $row["nombre"];
}
else
{
//Destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}
mysql_free_result($result);
}
?>

Lo primero que hacemos es declarar unas variables que utilizaremos para guardar
los datos del usuario en caso de tener las cookies en su sistema y de estas
ser correctas:

$loginCorrecto = false;
      $idUsuarioL;
      $nickUsuarioL;
      $emailUsuarioL;
      $nombreUsuarioL;

Hay una variable boleana que tenemos que mirar de cerca y es la de $loginCorrecto
ya que esta sera la que utilizaremos para comprobar el login en nuestros archivos,
mas adelante veremos como.

Seguidamente lo que hacemos es comprobar que las cookies existan, si no existen pues no hay problema
simplemente no hay "ingreso" :

if(isset($HTTP_COOKIE_VARS["usNick"]) &&
      isset($HTTP_COOKIE_VARS["usPass"]))

Ahora lo que hacemos es una sentencia sql, en la cual le pedimos a la base de datos
que nos devuelva la fila donde el nick y password correspondan al nick y password
guardado en las cookies:

$result = mysql_query("SELECT * FROM usuarios WHERE
      nick='".$HTTP_COOKIE_VARS["usNick"]."' AND password='".$HTTP_COOKIE_VARS["usPass"]."'");

Si ese nick y password corresponden a una fila en la base de datos esto quiere
decir que son correctos de lo contrario la informacion de las cookies esta mal
y debemos destruirlas:

if($row = mysql_fetch_array($result))
      {
      ...
      }
      else
      {
      //Destruimos las cookies.
      setcookie("usNick","x",time()-3600);
      setcookie("usPass","x",time()-3600);
      }

Si la informacion es correcta procedemos con el ingreso, establecemos de nuevo
las cookies con lo que se actualiza el tiempo de destruccion a otros noventa
dias apartir de ahora:

setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000);
      setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000);

Seguido de esto establecemos la variable $loginCorrecto a "true", y las otras
variables las llenamos con la informacion del usuario:

$loginCorrecto = true;
      $idUsuarioL = $row["id"];
      $nickUsuarioL = $row["nick"];
      $emailUsuarioL = $row["email"];
      $nombreUsuarioL = $row["nombre"];

Listo ya tenemos nuestro archivo "login.php", ahora ¿como lo utilizamos?,
bien supongamos que queremos en nuestro "index.php" darle la bienvenida
al usuario en caso de estar ingresado en el sistema deseamos saludarlo por su
nick o nombre en caso contrario lo saludaremos como visitante, para ello tendriamos
que incluir el archivo "login.php" al comienzo de nuestro archivo
"index.php" asi:

Nota:Antes de incluir el "login.php" debe recordar realizar la conexion con la base de datos,
de lo contrario obtendra errores.

<?php
      //AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.
include("login.php");
...

Con eso el "login.php" se encargara de realizar las acciones que vimos
arriba, ahora en nuestro "index.php" donde queramos saludar al visitante
ponemos lo siguiente:

... if($loginCorrecto)
{
echo "Estas identificado en el sistema como ".$nickUsuarioL;
}
else
{
echo "Bienvenido visitante, el sistema no te ha reconocido";
}
...

Como ven, hicimos uso de la variable $loginCorrecto la cual sera "true"
en caso de que el usuario fuera reconocido por el sistema, de lo contrario sera
"false".

Y asi podemos usarlo en muchas areas, supongamos que tenemos una seccion donde solo pueden accesar
los usuarios registrados, la llamaremos "restringida.php", entonces lo que hariamos para prevenir que usuarios no registrados vean el contenido seria algo asi:

<?php
      //AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS. 

include("login.php");

if($loginCorrecto)
{
echo "Aqui el contenido solo para usuarios registrados";
}
else
{
echo "El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area";
}
?>

Eso es todo, espero haya quedado claro. PD: Sobre el proceso de "logout"
o "salir" no lo explico ya que es algo muy sencillo, simplemente se
"borran" las cookies.

Califica esta nota:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (67 votos, promedio: 4.06 de 5)
Loading ... Loading ...

Sobre el autor

Jorge Luis Martinez M
Encargado del sitio de Mis códigos en Jlmnetwork.com

Si eres nuevo en Maestros del Web y te agradan nuestras publicaciones, te invitamos a suscribirte a nuestro Feed.

Sindícanos en: Google Reader, Bloglines, My Yahoo o My MSN | ¿Qué es el Feed?

Comentarios

343 comentarios en total.

Páginas: [1] 2 3 4 »

  1. Unregistered 19.01.2003 - 12:57 - # edit

    esta chido tu articulo, no se mucho de este tipo de programacion sin embargo entendi la mayoria de las lineas, Felicidades

  2. el_cesar 19.01.2003 - 12:58 - # edit

    Al hacerlo, me saco los siguientes errores:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:inetpubwwwrootphp
    egistro
    egistrar.php on line 27
    Registro exitoso!
    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:inetpubwwwrootphp
    egistro
    egistrar.php on line 42

    por favor des`pejenme esta duda a cejarcon@hotmail.com

  3. Unregistered 19.01.2003 - 12:58 - # edit

    Disculpa yo tengo un registro mediante .asp pero me marca el siguiente error al registrar un nuevo usuario no se mucho de esto no se si me puedas ayudar muchas gracias mi correo es compusers@megared.net.mx y el error es el siguiente:

  4. Unregistered 19.01.2003 - 12:59 - # edit

    Me da el siguiente error:
    Warning: Cannot add header information - headers already sent by (output started at conect.php3:8) in c:archivos de programaapache groupapachehtdocspasswordingresar.php3 on line 23.
    Si puedes publicar una solución, te lo encargo, gracias.
    esquel55@hotmail.com

  5. ale1cxn 19.01.2003 - 12:59 - # edit

    Me gustaria saber como se puede hacer el logout porque no logo borrar las cookies, lo demas esta muy bueno y muy bien explicado, sigan asi.

  6. sordo77 23.04.2003 - 14:26 - # edit

    Me anduvo a la perfección, la verdad que esta 10 ptos.
    Instale el AppServ 2.0.0, se los recomiendo :arriba: (http://flow.dl.sourceforge.net/sourceforge/appserv/appserv-win32-2.0.0.exe) y pude hacerlo facilmente, te instala (apache, php, mysql, etc.) sin tener que configurar nada.
    Ahora voy a intertar mejorar el reconocimiento de usuarios un poco agreganlode algunos “chiches”. Saludos. :adios:

  7. Unregistered 15.05.2003 - 18:55 - # edit

    Me da error al momento de logear el usuario , a que se deve esto? porfavor alguien que pueda ayudarme

  8. sordo77 16.05.2003 - 12:08 - # edit

    Descripción del script:
    _
    Script para la Gestión de Páginas restringidas solo a Usuarios registrados, con nivel de acceso y gestión de errores en el Login. Ideal para zonas de Administración ó zona “solo usuarios” que requierean autentificación para acceder a las mismas.

    Incluye administración de usuarios (altas/bajas/modificaciones) de ejemplo.

    Autentificador

    :arriba:

    Anda muy bien el script, ahora el problema que tengo es que no se como agregar mas datos personales en la registración. Si alguien puede ayudar…

  9. Cluster 19.05.2003 - 20:29 - # edit

    Pues .. sordo77 .. En ese script tienes el e-mail del Autor (jeje vaya soy yo xD) …

    Siempre que tengas un script/aplicación en tus manos .. recurre primero al autor de dicho script.

    Desde yá te digo que sólo tienes que poner mas campos a esa tabla de usuarios que se ha creado en tu BD si usastes el instalador. Pero, como .. por donde o que hacer con esos datos ya es cosa que estudies PHP y Mysql para ver cómo hacerlo (yo para esas cosas no doy soporte a mi script .. lo siento).

    En el foro PHP te pueden orientar sobre manuales y tutoriales sobre PHP (en las FAQ’s de dicho foro los tienes).

    Un saludo,

  10. Unregistered 20.05.2003 - 11:27 - # edit

    El Script es exelente, unos de los nejores, solo tengo un pequeño problema, cuando un usuario se valida y luego la validacion redirecciona al usuario al index, no aparece reconocido por el sistema, hay que darle actualizar a la pagina para que aparezca el nombre, a que se debe esto?, desde ya, muchas gracias

    Wilson

  11. kawoq 20.05.2003 - 17:05 - # edit

    Saludos, gracias por el tutorial esta bastante bueno, yo ya lo implemente y me funciono a la perfección, saludos.

    :arriba:

  12. kawoq 27.05.2003 - 17:25 - # edit

    Saludos amigos, he estado trabajndo este tutorial, y me ha funcionado, bueno eso es lo que digo yo pues no me ha marcado ningun error.

    Mi pregunta es como realmente compruebo, si el sistema exigirá estar registrado, pues haciendo pruebas locales, es muy dificil determinarlo.

    ¿A donde se van (ruta)las cookies que genera este sistema?
    ¿Como se puede hacer un boton de Salir(para borrar las cookies?

    destruir la cookies solo así:
    [PHP]
    < ?
    {
    //Destruimos las cookies.
    setcookie(”usNick”,”x”,time()-3600);
    setcookie(”usPass”,”x”,time()-3600);
    }
    ?>
    Hasta pronto

    [/PHP]

    Gracias por las respuestas.

    Saludos.

  13. Unregistered 01.06.2003 - 02:35 - # edit

    Tengo el mismo problema si alguien sabe como solucionarlo cotnestarlo en el foro o por mail a alvaroc1@speedy.com.ar

    muchas gracias

    Mensaje Original por el_cesar
    Al hacerlo, me saco los siguientes errores:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:inetpubwwwrootphp
    egistro
    egistrar.php on line 27
    Registro exitoso!
    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:inetpubwwwrootphp
    egistro
    egistrar.php on line 42

    por favor des`pejenme esta duda a cejarcon@hotmail.com

  14. kacerolo 16.06.2003 - 13:18 - # edit

    Enhorabuena por el articulo,yo no entiendo mucho de php,pero me estoy empezando a aficionar a su uso.
    He probado el ejemplo varias veces,y cumple todas sus funciones,escepto la de $loginCorrecto,no consigo hacer que reconozca al usuario registrado,aunque si inserta la COOKIE y es correcta.
    ¿Que es lo que falla?

  15. Unregistered 25.06.2003 - 13:30 - # edit

    No lo pude solucionar pero lo que tiene mal es que en el login.php intenta crear cookies y las cookies ya fueron creadas en el ingresar.php entonces no te deja sobrescribir las cookies.
    entonces eso hay que sacarlo, lo que no se si funciona es $loginCorrecto

  16. nestor 26.06.2003 - 13:16 - # edit

    excelente por que recien me estoy iniciando en php y sus scretos soy de coquimbo chile

  17. Rockman 28.06.2003 - 19:22 - # edit

    Quisiera integrar este script con la base de datos en un foro PHPbb2
    No sé sí se puede hacer o no ._.

  18. mbopi 30.06.2003 - 11:29 - # edit

    I N C R E I B L E muy buena exégesis, consiso, clarísimo y super descriptivo

  19. irisfz 23.07.2003 - 19:12 - # edit

    No me queda claro si las variables que se crean ($nickUsuarioL,$loginCorrecto, etc.) son globales, si se pueden utilizar luego en cada página a la que acceda el usuario, o si debo encabezar cada página con el chequeo de la existencia de la cookie. Muchas gracias por la enorme ayuda que significa este sitio!!!

  20. perumodelos 03.08.2003 - 21:36 - # edit

    gracias simplemete

  21. Unregistered 05.08.2003 - 15:40 - # edit

    Hago toso esos pasos, pero cuando voy a loguearme nome va, dice k pass icorrecto. Ayuda a adri.padilla@terra.es o Padilla96@hotmail.com

  22. probando 06.08.2003 - 10:42 - # edit

    voy a ver el funcionamiento

  23. elsismo 10.08.2003 - 18:28 - # edit

    el sistema me anda bien, pero no me reconoce al registrarme, es por las cookies, nose pork no me guarda las cookies para q cuando vuelva a ingresar me reconosca como usuario registrado, que puedo hacer?

  24. elsismo 10.08.2003 - 18:31 - # edit

    el sistema me anda bien, pero no me reconoce al registrarme, es por las cookies, nose pork no me guarda las cookies para q cuando vuelva a ingresar me reconosca como usuario registrado, que puedo hacer?

  25. elsismo 16.08.2003 - 17:58 - # edit

    como haces para que te guarde las cokkies? ya que yo tengo el problema que no me guarda las cokkies y por la tanto despues no me reconoce al ingresar
    me podes ayudar?

  26. LNA 06.09.2003 - 11:18 - # edit

    Esta bastante bien, lo que pasa es que como principiante no me he enterado de mucho porque aunque copie el codigo, no sé exactamente donde tengo que ponerlo.
    De todas formas felicidades por el articulo, y tambien por la pagina.

  27. eagoweb 06.09.2003 - 17:34 - # edit

    Esta muy bueno, pero solo me queda una duda
    1-no se como se hacer un count de mis usuarios activos para ponerlos en una lista de la web
    parecido al phpnuke (algo similar)

  28. 5n4K3 10.09.2003 - 01:55 - # edit

    Mensaje Original por Rockman
    Quisiera integrar este script con la base de datos en un foro PHPbb2
    No sé sí se puede hacer o no ._.

    Eso mismo :P plis

  29. Unregistered 13.09.2003 - 16:08 - # edit

    a mi tambien me da el error

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\appserv\www\clubnatacionjerez\usuarios\registrar.php on line 17
    Registro exitoso!
    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\appserv\www\clubnatacionjerez\usuarios\registrar.php on line 32

    Por favor respondanme a ceritium@hotmail.com o aki mismo

  30. Unregistered 13.09.2003 - 17:46 - # edit

    ya encontre la solucion

    creo ke lo ke an tenido mi mismo problema es porke kometieron la misma tonteria

    kopiaron el codigo de konexion de esta misma pagina, lo metieron en un incluide y luego ponian por otro lao lo de los usuarios.

    El problema eske el kodigo de konexion tiene el mysql close () o algo asi, weno ke sepai ke basta kon borrarlo.

    Por lo debas el codigo esta de fabula.

  31. judit 18.09.2003 - 16:18 - # edit

    la verdad es que está muy bien explicado.
    Cuando una es novata se agradecen unas ayuditas tan buenas!!!

  32. sgafo 19.09.2003 - 01:11 - # edit

    No lo he puesto en práctica aún, pero lo haré

    Y también seguiré visitando esta sección, hacía mucho tiempo que no entraba y por lo que veo me puede ser muy útil.

    Gracias.

  33. Unregistered 21.09.2003 - 11:32 - # edit

    hola… esto necesito ayuda con lo de proteger el contenido para no-usuarios …. es que del script que has puesto no me entero.. no se que hacer con él , vaya….

    pero te aseguro que eres un genio.. por que yo me como la olla con php y no saco nada y tu artículo me ha solucionao la vida.. sigue así.. y QUE DIOS TE LO PAGE CON MUCHOS HIJOS!!!

  34. lincoln 13.10.2003 - 09:40 - # edit

    muy bueno, super entendible

  35. KirO 18.10.2003 - 05:00 - # edit

    Es muy bueno, pero yo creo ke para enviar cookies al usuario es más fácil usar javascript no?

  36. Cluster 18.10.2003 - 21:33 - # edit

    KirO .. enviar las cookies no es el problema .. el problema de “seguridad” sería contrastar la información del login (usuario/password) del valor de tus cookies con el que ha de tener en tu servidor (en tus scripts php que a su vez son leidos de alguna BD, archivo de texto plano o simplemente incrustados en el própio código PHP como simples variables ..)

    Un saludo,

  37. Sergio 22.10.2003 - 05:27 - # edit

    El sitio http://www.miscodigos.com está cerrado, a este sitio se hace referencia acerca de cookies.

  38. kikelee 22.10.2003 - 13:01 - # edit

    que pasa cuando el usuario no tiene activado y o no acepta cookies

  39. ANONIMO 28.10.2003 - 13:11 - # edit

    MUCHAS GRACIAS

  40. Ceso I 30.10.2003 - 16:32 - # edit

    //AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.

    aqui que va?????????????

  41. edward 01.11.2003 - 19:14 - # edit

    Que es lo que esta mal, por que me sale error en el login.php
    que puedo hacer ayudenme por favor!
    Warning: Cannot modify header information - headers already sent by (output started at /home/webcindario/cuerpos/index.php:142) in /home/webcindario/cuerpos/login.php on line 14

    Warning: Cannot modify header information - headers already sent by (output started at /home/webcindario/cuerpos/index.php:142) in /home/webcindario/cuerpos/login.php on line 15

  42. mario ramos 24.11.2003 - 13:01 - # edit

    es un muy buen articulo sobre todo porque me ayuda en un momento critico,estoy en parciales y lo encontre en buen momento

  43. Marcel 11.12.2003 - 13:27 - # edit

    Ole, como te lo curras, Gracias!
    pero…tengo un problemilla, las funciones que utilizas de if($row=…) no se porque no me funcionan, hasta ahora lo he solucionado igualando mysql_fetch_array($result)!=0 y va, pero como lo hago para el caso: if(&row[password]==$passN) ?
    sabrias decirmelo? te lo agardaezco por adelantado,gracias

  44. zsamer 11.12.2003 - 17:34 - # edit

    problema con el logeo o ingreso de usuarios registrados
    hola siguiendo los pasos de:

    http://www.maestrosdelweb.org/editorial/phpreusr/

    he tenido el siguiente problema.
    al ingresar los datos del usuario ya registrado para ingresar o logearse

    username:
    password:

    aparece el siguiente error:
    ________________________________________

    Conexión con la base de datos conseguida.

    Warning: Cannot modify header information ? headers already sent by (output started at c:\Apache\Apache2\htdocs\registro\ingresar.php:18) in c:\Apache\Apache2\htdocs\registro\ingresar.php on line 44

    Warning: Cannot modify header information ? headers already sent by (output started at c:\Apache\Apache2\htdocs\registro\ingresar.php:18) in c:\Apache\Apache2\htdocs\registro\ingresar.php on line 45

    Ingreso exitoso, ahora será dirigido a la pagina principal.
    _____________________________________

    el registro de usuario funciona impecable, pero el logeo o ingreso de los usuarios ya registrado esta con problema.

    que alguien me ayude, no se que puede ser el codigo del script esta en http://www.maestrosdelweb.org/editorial/phpreusr/

    gracias
    salu2

    zsamer

  45. Unregistered 15.12.2003 - 11:14 - # edit

    hola amigos no se si me puedan ayudar pero tengo un problema y me urge la ayuda y es que me da un problema con las cookies y es este

    Warning: Cannot modify header information - headers already sent by (output started at /home/jakoujan/public_html/ingresar.php:8) in /home/jakoujan/public_html/ingresar.php on line 34

    Warning: Cannot modify header information - headers already sent by (output started at /home/jakoujan/public_html/ingresar.php:8) in /home/jakoujan/public_html/ingresar.php on line 35
    Ingreso exitoso, ahora sera dirigido a la pagina principal.

    gracias y disculpen

  46. Unregistered 15.12.2003 - 11:16 - # edit

    Mensaje Original por Unregistered
    hola amigos no se si me puedan ayudar pero tengo un problema y me urge la ayuda y es que me da un problema con las cookies y es este

    Warning: Cannot modify header information - headers already sent by (output started at /home/jakoujan/public_html/ingresar.php:8) in /home/jakoujan/public_html/ingresar.php on line 34

    Warning: Cannot modify header information - headers already sent by (output started at /home/jakoujan/public_html/ingresar.php:8) in /home/jakoujan/public_html/ingresar.php on line 35
    Ingreso exitoso, ahora sera dirigido a la pagina principal.

    gracias y disculpen

    disculpen mi correo es jakoujan@hotmail.com por favor ayudenme

  47. diegoking 18.01.2004 - 16:07 - # edit

    Para los que tienen el siguiente error:

    Cannot modify header information - headers already sent by (output started at /home/tgrichin/public_html/top/config.php:100)

    La solucion:

    Apaguen el computador y desconectenlo, verán que funciona bien despues…jajaja

    NOOOOOO, LO QUE DEBEN HACER ES:

    + No deben poner codigo html ni ningun echo “” o ninguna salida antes de la funcion setcookies(). Eliminen eso y verá que funciona perfectamente.

    Diego Arbelaez

  48. knival 22.01.2004 - 21:07 - # edit

    ¡ES EXELENTE LA EXPLICACION MERECES UN 10.99, JEJEJE, SALUDOS!

  49. Mich Buchanan 03.02.2004 - 12:03 - # edit

    Hola, he probado el script y va bastante bien, incluso lo estoy mejorando un poco encriptando los passwords com md5 y cambiando el valor password escrito en la cookie por un valor aleatorio que se genera al hacer login y q se grabe en la BD para asi no guardar el password en una cookie.

    Mi duda viene ahora, probandolo tengo un problema, con IE 6 funciona sin ningún problema al desactivar las cookies, pero con mozilla 1.6(con otras versiones no se) no, y es pq cada vez q recarga la página genera un nuevo PHPSESSIONID y no se mantienen los valores o algo parecido, es un problema de configuración mio, ya que lo estoy probando en local?, hay alguna forma de hacer que funcione con mozilla si tiene desactivadas las cookies? (con cookies funciona tb perfectamente).

    Gracias por el código y por la ayuda.

  50. Mich Buchanan 03.02.2004 - 18:46 - # edit

    Bueno, ya lo he retocado un poco y ya me funciona usando tanto cookies como sesiones si no se aceptan las cookies, y con el netscape tb, para que funcione he añadido que se propague el SID por la url y que se registren las variables como de sesion y como tengo entendido q eso no es muy seguro tendré que añadirlo como opción sólo en el caso de que las cookies no se acepten.

    Me queda por añadir lo que dije arriba del numero aleatorio en lugar de la clave y si acaso alguna cosa más que se me ocurra para, luego ya pondré el código para que le echéis un vistazo y así poder corregir los defectos que aparezcan y si a alguien le gusta pues que haga buen uso de él. :arriba:

  51. Mich Buchanan 04.02.2004 - 21:27 - # edit

    Y seguro que lleno de fallos de seguridad, pero bueno, funciona aparentemente sin problemas con y sin cookies, ya que utiliza la propagación del SID por url, cosa que es un poco insegura, pero para suplir ese fallo, registra en la base de datos la IP, el host, y la versión del navegador del usuario que hace login, para que no se pueda hacer uso desde otro ordenador con ese SID, además no graba la contraseña en las cookies y los passwords están encriptados en la base de datos, aquí os lo dejo.

    index.php:
    [PHP]< ?php
    // Inicio de sessión
    session_start();

    // Servidor de la Base de Datos
    $servidorBD=”";
    // Usuario de la Base de Datos
    $usuarioBD=”";
    // Contraseña de la Base de Datos
    $passBD=”";
    // Nombre de la Base de Datos
    $nombreBD=”";
    // Conecto con la base de datos
    $conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die (”Imposible conectar con la base de datos”);
    // Selecciono la BBDD
    mysql_select_db($nombreBD,$conectar) or die (”Imposible conectar con la base de datos”);

    // Probamos que acepte cookies y grabamos una
    setcookie(”Acepta”,”cookies si”,time()+7776000);

    // Incluye el script que comprueba si ya estás logueado o si tienes una cookie que te permita
    // entrar sin hacer login otra vez.
    include(”login.php”);

    if($loginCorrecto)
    {
    echo ‘Aqui el contenido solo para usuarios registrados

    logout
    ‘;
    }
    else
    {
    echo ‘El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a este area

    registro

    login
    ‘;
    }
    ?> [/PHP]

    login.php:
    [PHP]< ?php
    // Inicializamos las variables
    $loginCorrecto = false;
    unset($_SESSION['id']);
    $nickUsuarioL=”";
    $emailUsuarioL=”";
    $nombreUsuarioL=”";
    //Inicializamos el nº de recargas de la página si no está inicializado
    if(!isset($_SESSION['recarga'])){$_SESSION['recarga'] = 0;}
    //Inicializamos la variable sid para utilizarla más tarde
    $sid = md5(SID);

    //Incluimos el script que detecta el navegador y la IP del usuario
    include(’identificar.inc.php’);
    //Hayamos la variable que le corresponde al navegador que se está usando
    //para luego compararla con la de la base de datos
    $identificador = md5(get_full_ip() .’-’. browser_detection());

    if(isset($_COOKIE["Acepta"]))// Comprueba si acepta cookies
    {
    echo ‘Acepto cookies, que pasa?!!??
    ‘;

    // Comprueba que existan las cookies de nick y password
    if(isset($_COOKIE["usNick"]) && isset($_COOKIE["usPass"]))
    {
    // Comprueba q haya un usuario en la BD con esos datos
    $result = mysql_query(”SELECT * FROM usuarios WHERE
    nick = ‘”.$_COOKIE["usNick"].”‘ AND
    sid = ‘”.$_COOKIE["usPass"].”‘ AND
    identificador = ‘”.$identificador.”‘”);
    if($row = mysql_fetch_array($result))
    {
    $sql = “Update usuarios Set
    sid = ‘”.$sid.”‘,
    ultima_visita = NOW()
    Where id = ‘”.$row['id'].”‘”;
    mysql_query($sql) or die (mysql_error());

    // Si es que existe regraba las cookies y registra unas cuantas variables q pueden ser utiles
    setcookie(”usNick”,$_COOKIE["usNick"],time()+7776000);
    setcookie(”usPass”,md5(SID),time()+7776000);

    $_SESSION['usNick'] = $_COOKIE["usNick"];
    $_SESSION['usPass'] = md5(SID);
    $_SESSION['id'] = $row['id'];

    $loginCorrecto = true;
    $nickUsuarioL = $row["nick"];
    $emailUsuarioL = $row["email"];
    $nombreUsuarioL = $row["nombre"];
    }
    else
    {
    // Si no existe, destruimos las cookies.
    setcookie(”usNick”,”x”,time()-3600);
    setcookie(”usPass”,”x”,time()-3600);
    }
    mysql_free_result($result);// Libera la consulta
    }
    }
    else // Si es que no acepta cookies
    {
    // Comprueba si ya ha probado a escribir la cookie y si ya ha probado es que no se aceptan
    if (!isset($_COOKIE['Acepta']) && $_SESSION['recarga'] > 1)
    {
    echo ‘No acepto cookies, que pasa?!!??
    ‘;
    }

    // Comprueba las variables de nick y password pero esta vez en variables de sesión
    if(isset($_SESSION["usNick"]) && isset($_SESSION["usPass"]))
    {
    // Comprueba q haya un usuario en la BD con esos datos
    $result = mysql_query(”SELECT * FROM usuarios WHERE
    nick = ‘”.$_SESSION["usNick"].”‘ AND
    sid = ‘”.$_SESSION["usPass"].”‘ AND
    identificador = ‘”.$identificador.”‘”);
    if($row = mysql_fetch_array($result))
    {
    $sql = “Update usuarios Set
    ultima_visita = NOW()
    Where id = ‘”.$row['id'].”‘”;
    mysql_query($sql) or die (mysql_error());

    // Si es que existe registra unas cuantas variables q pueden ser utiles
    $_SESSION['id'] = $row['id'];
    $loginCorrecto = true;
    $nickUsuarioL = $row["nick"];
    $emailUsuarioL = $row["email"];
    $nombreUsuarioL = $row["nombre"];
    }
    else
    {
    // Si no existe destruimos las sesiones.
    unset($_SESSION['usNick']);
    unset($_SESSION['usPass']);
    unset($_SESSION['id']);
    }
    mysql_free_result($result);// Libera la consulta
    }
    }
    // Esto indica que la ya se ha probado a escribir la cookie
    $_SESSION['recarga'] = $_SESSION['recarga']+1;
    ?> [/PHP]

  52. Mich Buchanan 04.02.2004 - 21:30 - # edit

    identificar.inc.php (es una recopilacion de scripts que encontré por internet y que sirven para identificar IP, host y navegador:
    [PHP]< ?php
    /*************************************************************************************************************
    Identificar el navegador
    *************************************************************************************************************/
    /*
    Author: Harald Hope, Website: http://tech.ratmachines.com/
    Script Source URI: http://tech.ratmachines.com/downloads/downloads.php
    Version 3, 4 February 2004
    */

    //version 2, complex, but simple really.

    /*
    pack the browser type array, in this order
    the order is important, because opera must be tested first, and ie4 tested for before ie general
    same for konqueror, then safari, then gecko, since safari navigator user agent id’s with ‘gecko’ in string.
    note that $domBrowser is set for all modern dom browsers, this gives you a default to use, unfortunately we
    haven’t figured out a safe way to do this with actual method testing, which would be much better and reliable.
    Obviously you could place a cookie based on a method test with javascript, force a page reload, and have
    PHP read that cookie, but that would always depend on cookies being on.
    */

    //Inicializar un par de funciones por si acaso
    if (!isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$_SERVER['HTTP_X_FORWARDED_FOR']=”";}
    if (!isset($_SERVER['HTTP_CLIENT_IP'])){$_SERVER['HTTP_CLIENT_IP']=”";}

    function browser_detection() {

    global $domBrowser, $unknownBrowser, $browser_name, $NN4, $IE4, $os, $unknownOS;
    $userBrowser = $_SERVER['HTTP_USER_AGENT'];

    //packs the browser array
    // with browser name and if browser is dom, or modern
    // do not change the order of this, since correct testing depends on this order
    $a_browser_types[] = array(’Opera’, true);
    $a_browser_types[] = array(’MSIE 4′, false);
    $a_browser_types[] = array(’MSIE’, true);
    $a_browser_types[] = array(’Konqueror’, true);
    $a_browser_types[] = array(’Safari’, true);
    $a_browser_types[] = array(’Gecko’, true);// covers Netscape 6-7, K-Meleon, Most linux versions
    $a_browser_types[] = array(’Mozilla/4′, false);// this has to be last or else ie or opera might register true
    //$a_browser_types[] = array(”, ); // spare array fillers
    //$a_browser_types[] = array(”, );
    //$a_browser_types[] = array(”, );

    /*
    packs the os array
    use this order since some navigator user agents will put ‘macintosh’ in the navigator user agent string
    which would make the nt test register true
    */
    $a_os = array(’lin’, ‘mac’, ‘unix’, ’solaris’, ‘bsd’, ‘nt’, ‘win’);

    //os tester
    for ($i = 0; $i < count($a_os); $i++)
    {
    //unpacks os array, assigns to variable
    $s_os = $a_os[$i];
    $b_os_success = false;

    //assign os to global os variable, os flag true on success
    if (stristr($userBrowser, $s_os))
    {
    $os = $s_os;
    $b_os_success = true;

    // this is the test, you wouldnt’ use this normally of course, it’s just to make sure the script works
    //echo(”i =$i
    os = $os
    “);
    break;
    }
    }
    //assigns defaults if the OS was not found in the loop test
    if (!$b_os_success)
    {
    $unknownOS = true;
    }

    //Main browser tester array
    /*
    run through the browser_types array, break if you hit a match, if no match, assume old browser
    or non dom browser, assigns false value to $b_success.
    */
    for ($i = 0; $i < count($a_browser_types); $i++)
    {
    //unpacks browser array, assigns to variables
    $s_browser = $a_browser_types[$i][0];
    $b_dom = $a_browser_types[$i][1];
    $b_success = false;

    if (stristr($userBrowser, $s_browser))
    {
    $browser_name = $s_browser;
    switch ( $browser_name )
    {
    case ‘Mozilla/4′:
    $NN4 = true;
    $safe_browser = false;
    break;
    case ‘Gecko’:
    $rv = which_gecko( $userBrowser, ‘rv’ );
    $release = which_gecko( $userBrowser, ‘release’ );
    // this is to protect against Netscape 6.2 / mozilla pre version 1.0 errors
    // if your CSS runs in Mozilla 0.9/netscape 6.x then this isn’t necessary,
    //just return true, skip this test
    if ( ( $rv < 1 ) || ( $release < 20020400 ) )
    {
    $safe_browser = false;
    }
    else {
    $safe_browser = true;
    }
    break;
    default:
    $safe_browser = true;
    break;
    }

    $domBrowser = $b_dom;
    $b_success = true;

    // this is the test, you wouldnt’ use this normally of course, it’s just to make sure the script works
    //echo(”i =$i
    browser = $browser_name
    dom= $domBrowser
    name= $s_browser
    nua= $userBrowser
    “);
    break;
    }
    }
    //assigns defaults if the browser was not found in the loop test
    if (!$b_success)
    {
    $safe_browser = false;
    $domBrowser = false;
    $unknownBrowser = true;
    }
    // this depends on what you want to use the function for, you can return any of the variables, or
    // use the global variables anywhere in your scripts as long as this is run before you request them
    // uncomment this for basic safe browser test, usually all the mozillas would pass this
    return $userBrowser;
    }

    /*
    function returns gecko rv or release date
    can be used to verify browser functionality more or less,
    but remember that rv versions can be very different depending on which gecko browser it is,
    for example Galeon will have a different rv version for the same gecko engine in some cases, the
    build date is more reliable.

    go to: http://www.mozilla.org/releases/cvstags.html
    for the full information on the gecko versions
    */
    function which_gecko( $browser_string, $rv_or_release )
    {
    if ( $rv_or_release == ‘rv’ )
    {
    $rv_pos = strpos( $browser_string, ‘rv:’ );
    $rv = substr( $browser_string, ( $rv_pos + 3 ), 3 );
    return $rv;
    }
    elseif ( $rv_or_release == ‘release’ )
    {
    $gecko_pos = strpos( $browser_string, ‘Gecko/’ );
    $gecko_release = substr( $browser_string, ( $gecko_pos + 6 ), 8 );
    return $gecko_release;
    }
    }

    /*************************************************************************************************************
    Identificar la IP
    *************************************************************************************************************/
    function get_full_ip(){
    // get client real ip
    if ($_SERVER['HTTP_X_FORWARDED_FOR']):
    $IP_ADDR = $_SERVER['HTTP_X_FORWARDED_FOR'] ;
    elseif($_SERVER['HTTP_CLIENT_IP']):
    $IP_ADDR = $_SERVER['HTTP_CLIENT_IP'] ;
    else:
    $IP_ADDR = $_SERVER['REMOTE_ADDR'];
    endif;

    // get server ip and resolved it
    $FIRE_IP_ADDR = $_SERVER['REMOTE_ADDR'];
    $ip_resolved = gethostbyaddr($FIRE_IP_ADDR);

    // builds server ip infos string
    if ($FIRE_IP_ADDR != $ip_resolved && $ip_resolved):
    $FIRE_IP_LITT = $FIRE_IP_ADDR.” - “. $ip_resolved;
    else:
    $FIRE_IP_LITT = $FIRE_IP_ADDR;
    endif;

    // builds client ip full infos string
    if ($IP_ADDR != $FIRE_IP_ADDR ):
    $FULL_IP_INFOS = “$IP_ADDR | $FIRE_IP_LITT” ;
    else:
    $FULL_IP_INFOS = $FIRE_IP_LITT ;
    endif;
    return $FULL_IP_INFOS;

    }

    // Para ver los resultados
    //echo browser_detection().’
    ‘;
    //echo get_full_ip();
    ?>[/PHP]

    formulario_login.php:
    [PHP]< ?
    // Inicio de sessión
    session_start();

    ?>

    Password:

    [/PHP]

    formulario.php:
    [PHP]< ?
    // Inicio de sessión
    session_start();

    ?>

    Nick :

    Email:

    Password:

    Nombre:

    [/PHP]

  53. Mich Buchanan 04.02.2004 - 21:33 - # edit

    ingresar.php:
    [PHP]< ?php
    // Inicio de sessión
    session_start();

    // Servidor de la Base de Datos
    $servidorBD=”";
    // Usuario de la Base de Datos
    $usuarioBD=”";
    // Contraseña de la Base de Datos
    $passBD=”";
    // Nombre de la Base de Datos
    $nombreBD=”";
    // Conecto con la base de datos
    $conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die (”Imposible conectar con la base de datos”);
    // Selecciono la BBDD
    mysql_select_db($nombreBD,$conectar) or die (mysql_error());

    include(’identificar.inc.php’);

    //Inicializamos la variable sid para utilizarla más tarde
    $sid = md5(SID);

    function quitar($mensaje)
    {
    $mensaje = str_replace(”< ","<",$mensaje);
    $mensaje = str_replace(”>”,”>”,$mensaje);
    $mensaje = str_replace(”\’”,”'”,$mensaje);
    $mensaje = str_replace(’\”‘,”"”,$mensaje);
    $mensaje = str_replace(”\\\\”,”\″,$mensaje);
    return $mensaje;
    }

    if(trim($_POST["nick"]) != “” && trim($_POST["password"]) != “”)
    {
    $nickN = quitar($_POST["nick"]);
    $passN = quitar($_POST["password"]);

    $result = mysql_query(”SELECT id, password FROM usuarios WHERE nick=’$nickN’”);
    if($row = mysql_fetch_array($result))
    {
    if($row["password"] == md5($passN))
    {
    //Introduce en la BD los datos encriptados de IP,Host,y navegador
    $identificador = md5(get_full_ip() .’-’. browser_detection());
    $sql = “Update usuarios Set
    sid = ‘”.$sid.”‘,
    identificador = ‘”.$identificador.”‘,
    ultima_visita = NOW()
    Where
    id = ‘”.$row['id'].”‘”;
    mysql_query($sql) or die (mysql_error());
    //90 dias dura la cookie
    setcookie(”usNick”,$nickN,time()+7776000);
    setcookie(”usPass”,$sid,time()+7776000);
    //También las de sesión
    $_SESSION['usNick'] = $nickN;
    $_SESSION['usPass'] = $sid;
    $_SESSION['id'] = $row['id'];
    ?>

    < ?
    }
    else
    {
    echo ‘Password incorrecto

    Login
    ‘;
    }
    }
    else
    {
    echo ‘Usuario no existente en la base de datos

    Login
    ‘;
    }
    mysql_free_result($result);
    }
    else
    {
    echo ‘Debe especificar un nick y password

    Login
    ‘;
    }
    mysql_close();
    ?> [/PHP]

    registrar.php:
    [PHP]< ?php
    // Inicio de sessión
    session_start();

    // Servidor de la Base de Datos
    $servidorBD=”";
    // Usuario de la Base de Datos
    $usuarioBD=”";
    // Contraseña de la Base de Datos
    $passBD=”";
    // Nombre de la Base de Datos
    $nombreBD=”";
    // Conecto con la base de datos
    $conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die (”Imposible conectar con la base de datos”);
    // Selecciono la BBDD
    mysql_select_db($nombreBD,$conectar) or die (”Imposible conectar con la base de datos”);

    function quitar($mensaje)
    {
    $mensaje = str_replace(”< ","<",$mensaje);
    $mensaje = str_replace(”>”,”>”,$mensaje);
    $mensaje = str_replace(”\’”,”'”,$mensaje);
    $mensaje = str_replace(’\”‘,”"”,$mensaje);
    $mensaje = str_replace(”\\\\”,”\”,$mensaje);
    return $mensaje;
    }

    if(trim($_POST["nick"]) != “” && trim($_POST["email"]) != “”)
    {
    $sql = “SELECT id FROM usuarios WHERE nick=’”.quitar($_POST["nick"]).”‘”;
    $result = mysql_query($sql);
    if($row = mysql_fetch_array($result))
    {
    echo ‘Error, nick escogido por otro usuario

    Registro
    ‘;
    }
    else
    {
    $sql = “INSERT INTO usuarios (nick,password,nombre,email) VALUES (”;
    $sql .= “‘”.quitar($_POST["nick"]).”‘”;
    $sql .= “,md5(’”.quitar($_POST["password"]).”‘)”;
    $sql .= “,’”.quitar($_POST["nombre"]).”‘”;
    $sql .= “,’”.quitar($_POST["email"]).”‘”;
    $sql .= “)”;
    mysql_query($sql);
    echo ‘Registro exitoso!

    Index
    ‘;
    }
    mysql_free_result($result);
    }
    else
    {
    echo ‘Debe llenar como minimo los campos de email y password

    Registro
    ‘;
    }
    mysql_close();
    ?>[/PHP]

    logout.php:
    [PHP]// Inicio de sessión
    session_start();

    // Servidor de la Base de Datos
    $servidorBD=”";
    // Usuario de la Base de Datos
    $usuarioBD=”";
    // Contraseña de la Base de Datos
    $passBD=”";
    // Nombre de la Base de Datos
    $nombreBD=”";
    // Conecto con la base de datos
    $conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die (”Imposible conectar con la base de datos”);
    // Selecciono la BBDD
    mysql_select_db($nombreBD,$conectar) or die (”Imposible conectar con la base de datos”);

    // Cambiamos de la base de datos el valor aleatorio de la cookie por si acaso fue robada
    $sql = “UPDATE usuarios SET
    sid = ‘”.md5(rand(0,time())).”‘,
    identificador = ‘”.md5(rand(0,time())).”‘,
    ultima_visita = NOW()
    Where
    id = ‘”.$_SESSION['id'].”‘”;
    mysql_query($sql) or die (mysql_error());

    //Destruimos las cookies.
    setcookie(”usNick”,”x”,time()-3600);
    setcookie(”usPass”,”x”,time()-3600);
    setcookie(”Acepta”,”x”,time()-3600);

    // Destruimos la sesión
    session_destroy();
    ?>

    [/PHP]

    y el fichero tabla.sql para importar con phpmyadmin o como queráis :

    [PHP]# phpMyAdmin SQL Dump
    # version 2.5.5-pl1
    # http://www.phpmyadmin.net
    #
    # Servidor: vigilantes.no-ip.com
    # Tiempo de generación: 05-02-2004 a las 02:52:30
    # Versión del servidor: 4.0.17
    # Versión de PHP: 4.3.5RC2
    #
    # Base de datos : `aaaa`
    #

    # ——————————————————–

    #
    # Estructura de tabla para la tabla `usuarios`
    #

    DROP TABLE IF EXISTS `usuarios`;
    CREATE TABLE `usuarios` (
    `id` bigint(7) NOT NULL auto_increment,
    `nombre` varchar(100) NOT NULL default ”,
    `nick` varchar(30) NOT NULL default ”,
    `password` varchar(32) NOT NULL default ”,
    `sid` varchar(32) NOT NULL default ”,
    `identificador` varchar(32) NOT NULL default ”,
    `ultima_visita` timestamp(14) NOT NULL,
    `email` varchar(100) NOT NULL default ”,
    UNIQUE KEY `id_2` (`id`),
    KEY `id` (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=10 ;[/PHP]

    Como veis es básicamente la que viene en el tutorial, pero un poco modificada, bueno, espero que no os moleste que no la explique mucho, si tenéis alguna duda ya sabéis preguntadme lo que queráis y todos los fallos que le encontréis avisadlos cuanto antes.

    Y aprovecho para agradecer al foro y especialmente a Cluster su ayuda por resolver pacientemente todas mis dudas como hacen siempre con todos. :adios:

  54. Unregistered 09.02.2004 - 21:50 - # edit

    para los que les dio el error

    Al hacerlo, me saco los siguientes errores:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:inetpubwwwrootphp
    egistro
    egistrar.php on line 27
    Registro exitoso!
    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:inetpubwwwrootphp
    egistro
    egistrar.php on line 42

    Es por que en la conexion ponen el nombre de la tababla en vez de el nombre de la base de datos.

    Servidor=
    Usuario=
    Pass=
    NOMBRE DE LA BASE DE DATOS, no la tababla de datos.

    Muchas gracias por tus mensajes Mich, me han servido de mucho.

  55. guillermo 10.02.2004 - 09:19 - # edit

    este articulo es excelnte pero no se como se borran las cookies
    puedo recibir el código gracias

    yuguilley@yahoo.com

  56. Marco 13.02.2004 - 19:03 - # edit

    muy bueno, es un excelente ejemplo para el control de usuarios.
    como puedo hacer para saber el tiempo que un usuario como este ejemplo, estuvo utilizando internet, hora de ingreso yhora de salida. existe alguna manera.
    att.
    mrpusda@yahoo.com

  57. waldo 15.02.2004 - 17:04 - # edit

    Al momento de entrar a mi index.php siempre me sale que el usuario no ha sido identificado y no le da ningun valor a mi variable

  58. koke 27.02.2004 - 13:16 - # edit

    lo hago todo, me registro, se hace bien,voy a hacer login, me dice que esta bien, me manda a la pagina index.php pero me dice que soy visitante, que no me a reconocido, y no puedo entrar a la restringida,xq?

  59. Unregistered 27.02.2004 - 14:02 - # edit

    todos dicen que esta muy bien o dicen problemas, pero nadie da soluciones!

  60. koke 29.02.2004 - 08:37 - # edit

    como se hace el logout?? No lo consigo

  61. florlangosta 29.02.2004 - 21:22 - # edit

    AYUDA!!!
    el articulo esta bueno, igualmente les recomiendo el Dreamweaver MX 2004 que realiza automaticamente todas estas operaciones y generacion de codigos en PHP y ASP, son Mysql.
    Es mas, trae ya hechas unas funciones de login, logout, logcheck y demas.

    Por otro lado.
    Lo que necesito es que el usuario se registre con su nombre y e-mail, y que el sistema le envie a ese e-mail un password aleatorio, y que el usuario se loguee con ese password aleatorio.

    Porque sino de la otra manera, el usuario se registra con un passsword y con una direccion de e-mail falsa y no tengo control sobre el mismo.

    gracias

  62. koke 02.03.2004 - 10:11 - # edit

    Todo funciona perfectamente, y el ejemplo que hay aquí mismo para hacer logut funciona. excelente

  63. chem 05.03.2004 - 12:14 - # edit

    Saludos.Diooooooos m voi a volber loco con las cookies!!!!

    Lo e intentado x todos los medios y no hay manera d q se cumpla la condicion:

    ————————————————————————————
    if(isset($HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"]))
    ————————————————————————————

    x lo tanto nunca se puede reconocer al usuario. He intentado con variables globales ($_COOKIE) y nada, e configurao mi IE para permitir todas las cookies y tampoco. El caso es q las cookies se crean pero no son reconocidas.
    Leyendo he comprobado q somos varios los q tenemos este problema, asiq si alguien upiera la solucion seria dioss!!!

    OTROS DATOS:

    Estoi alojado en miarroba.com (¿puede q sea problema d miarroba q no soporte cookies?)

    La conexion a la base de datos q utilizo es:

    conexion.inc.php
    ————————————————————————————

    < ? // Fichero con los datos de conexion a la BBDD

    function Conectarse()

    {

    $db_host=”mihost”; // Host al que conectar, habitualmente es el ?localhost?

    $db_nombre=”nombre_BD”; // Nombre de la Base de Datos que se desea utilizar

    $db_user=”nombre_usu”; // Nombre del usuario con permisos para acceder

    $db_pass=”mi_contraseña”; // Contraseña de dicho usuario

    // Ahora estamos realizando una conexión y la llamamos ?$link?

    $link=mysql_connect($db_host, $db_user, $db_pass) or die (”Error conectando a la base de datos.”);

    // Seleccionamos la base de datos que nos interesa

    mysql_select_db($db_nombre ,$link) or die(”Error seleccionando la base de datos.”);

    // Devolvemos $link porque nos hará falta más adelante, cuando queramos hacer consultas.

    return $link;

    }

    ?>
    ————————————————————————————

    y la incluyo en la cabecera del siguiente modo
    ————————————————————————————
    include(’conexion.inc.php’);
    $link = Conectarse();
    ————————————————————————————

    Muchas gracias de antemano.

    ************************CHEM************************

  64. Unregistered 10.03.2004 - 13:06 - # edit

    Me funciona todo bien, se registra, entra, logout, todo, pero en todas las pantallas me aparece arriba el siguiente texto…

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /public_html/prueba/formulario.php:8) in /public_html/prueba/formulario.php on line 10

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /public_html/prueba/formulario.php:8) in /public_html/prueba/formulario.php on line 10

    La verdad que mi conocimiento de PHP es muy muy basico, alguien me puede ayudar??
    gracias!

  65. Unregistered 17.03.2004 - 04:01 - # edit

    hola estube aplicando el codigo de php para crear el registro y reconocimiento de usuarios pero a la hora de registrar un usuario me sale el siguiente error:

    Parse error: parse error, unexpected ‘;’ in C:\Archivos de programa\Apache Group\Apache2\htdocs\registro\registrar.php on line 31

  66. Unregistered 17.03.2004 - 05:22 - # edit

    Hola,cuando intento identificarme pongo mi pass y mi nik
    entoces me aparece este mensaje:

    Unknown column ’sid’ in ‘field list’

    espero y me puedan ayudar

  67. fbosch 22.03.2004 - 10:07 - # edit

    Hola… acabo de crear todos los archivos para hacer el registro de los usuarios… lo q no se es como conectarme con mi base de datos… mySQL… alguien me puede decir como hago?

    Gracias

  68. fbosch 22.03.2004 - 13:28 - # edit

    No estoy logrando hacerlo… no q me sale mal.. ya he creado los archivos todos, me he conectado a la base de datos (he substituido la linea de conexion por

    $link = mysql_connect(”62.149.150.21″, “MI CODIGO”, “SfIPR1A0″)
    or die(”No he podido conectar: ” . mysql_error());
    print (”Conectado”);

    Y no se q pasa…

    rellenando el form de registro, me sale “registro exitoso”.. pero luego en los demas me sale usuario inexistente en la BD

    q hago?

    Gracias

  69. fbosch 23.03.2004 - 08:35 - # edit

    he conseguido todo.. conectar a la base de datos y crear el usuario (q ya esta en mi base de datos)… pero creo q el LOGIN.PHP tiene algun problema, pues no consiguo q en la pagina INDEX me salude como usuario registrado

    alguin me puede ayudar?

  70. fbosch 23.03.2004 - 08:35 - # edit

    he conseguido todo.. conectar a la base de datos y crear el usuario (q ya esta en mi base de datos)… pero creo q el LOGIN.PHP tiene algun problema, pues no consiguo q en la pagina INDEX me salude como usuario registrado

    alguin me puede ayudar?

  71. fbosch 24.03.2004 - 13:33 - # edit

    POR FAVOR!! ESTO NO FUNCIONA!! NO SE CREAN LOS COOKIES!! YO HE HECHO TODO BIEN Y EL SISTEMA NO ME RECONOCE… AYUDA PLEASEEEEEEEE!!!

    por q se tarda tando en contestar en este foro?? no sirve de nada dejar comentarios…

  72. N4x0 30.03.2004 - 10:59 - # edit

    Esta muy bien, yo hice un sistema de login, de usuarios, administradores etc..
    xro solo x dbs
    Si alguien qere + informacion sobre esto
    mandadme un mail a
    naxo_12@hotmail.com

  73. sagapast 01.04.2004 - 17:14 - # edit

    Warning: Accès refusé pour l’utilisateur: ’sagapast@localhost’ (mot de passe: OUI) in c:\php\www\v2.0\registrar.php on line 6

    Warning: MySQL Connection Failed: Accès refusé pour l’utilisateur: ’sagapast@localhost’ (mot de passe: OUI) in c:\php\www\v2.0\registrar.php on line 6

    Warning: Accès refusé pour l’utilisateur: ‘ODBC@localhost’ (mot de passe: NON) in c:\php\www\v2.0\registrar.php on line 21

    Warning: MySQL Connection Failed: Accès refusé pour l’utilisateur: ‘ODBC@localhost’ (mot de passe: NON) in c:\php\www\v2.0\registrar.php on line 21

    Warning: MySQL: A link to the server could not be established in c:\php\www\v2.0\registrar.php on line 21

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\php\www\v2.0\registrar.php on line 22

    Warning: Accès refusé pour l’utilisateur: ‘ODBC@localhost’ (mot de passe: NON) in c:\php\www\v2.0\registrar.php on line 34

    Warning: MySQL Connection Failed: Accès refusé pour l’utilisateur: ‘ODBC@localhost’ (mot de passe: NON) in c:\php\www\v2.0\registrar.php on line 34

    Warning: MySQL: A link to the server could not be established in c:\php\www\v2.0\registrar.php on line 34
    Registro exitoso!
    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\php\www\v2.0\registrar.php on line 37

    Warning: mysql_close(): no MySQL-Link resource supplied in c:\php\www\v2.0\registrar.php on line 43

  74. Unregistered 01.04.2004 - 21:06 - # edit

    Increible, nada mas que decir
    El equipo de insociables.com y rexservers.com

  75. Unregistered 13.04.2004 - 22:19 - # edit

    a mi si me funciona, y un consejo:No hagan el include del login.php, simplemente copien el codigo al index, pongale una conexión al index tambien y listo.

  76. Unregistered 19.04.2004 - 13:00 - # edit

    el manual de autentificación de http://www.desarrolloweb.com es mucho mejor que este

  77. PEDRO 23.04.2004 - 15:36 - # edit

    ALA PERSONA QUE PUSO ESTE DOCUMENTO COMO COMENTARIO, ERES MUY BUENO TU UNICO DEFECTO ES QUE ERES MUY DESPOTA Y MENOSPRECIAS A LOS QUE BUSCAMOS INFORMACION PARA MEJORAR NUESTROS CONOCIMIENTOS.
    NOS TRATAS COMO SI FUERAMOS TONTOS.

  78. Unregistered 30.04.2004 - 12:53 - # edit

    bunas tardes soy nueva en el mundo php he intale appserv 2 algo, quisisra saber en que parte gusrdo mis paginas realizadas en php para que las pueda visualizar en mi IE explorer. gracias

    repsonder a lorenahr79@hotmail.com
    gracias por su ayuda

  79. feder 30.04.2004 - 17:45 - # edit

    esta todo bien le entendi la mayoria del codigo, solo un problemilla, dice que inserta en la tabla pero hago un select y no me muestra nada solo me va incrementando el id. que creen que sea

  80. Unregistered 02.05.2004 - 07:40 - # edit

    A los que el sistema les identifique bien pero al ir al index no les salga como identificados, que cambien estas lineas del ingresar.php:

    //90 dias dura la cookie
    setcookie(”usNick”,$nickN,time()+7776000);
    setcookie(”usPass”,$passN,time()+7776000);

    Por estas:

    //90 dias dura la cookie
    setcookie(”unombre”,$nombreN,time()+7776000,”/”,”sudominio.com”);
    setcookie(”ucontrasena”,$passN,time()+7776000,”/”,”sudominio.com”);

    Al menos a mi me salió así, especificando el dominio donde tiene valor la cookie. Poniendo dominio.com, la cookie servirá para dominio.com y http://www.dominio.com

    Espero haber ayudado! Este tutorial sirve mucho y a mi me inició al php!!

    Un saludo :)

  81. Unregistered 02.05.2004 - 07:43 - # edit

    Me equivoqué al poner la líneas cambiadas, ya que las adapté para mi. Lo pongo todo bien.

    En ingresar.php, cambiar:

    //90 dias dura la cookie
    setcookie(”usNick”,$nickN,time()+7776000);
    setcookie(”usPass”,$passN,time()+7776000);

    Por esto:

    //90 dias dura la cookie
    setcookie(”usNick”,$nickN,time()+7776000,”/”,”dominio.com”);
    setcookie(”usPass”,$passN,time()+7776000,”/”,”dominio.com”);

    Y si el dominio es http://www.forosdelweb.com, por ejemplo, habría que poner:

    //90 dias dura la cookie
    setcookie(”usNick”,$nickN,time()+7776000,”/”,”forosdelweb.com”);
    setcookie(”usPass”,$passN,time()+7776000,”/”,”forosdelweb.com”);

  82. bety 09.05.2004 - 22:19 - # edit

    me paresio estupenda su forma de ingesar al usuario es la forma mas segura de evitar los virus gracias.

  83. espectro 11.05.2004 - 15:45 - # edit

    me salio un erro.. buen dos

    Warning: Supplied argument is not a valid MySQL result resource in /web/ale/login/registrar.php on line 23
    Registro exitoso!
    Warning: Supplied argument is not a valid MySQL result resource in /web/ale/login/registrar.php on line 38

  84. omarcass 14.05.2004 - 17:04 - # edit

    me gusto mucho, no tienes uno parecido con un ejempllo de formularios electronicos?

  85. Yrinna 02.06.2004 - 13:20 - # edit

    Bueno recién estoy entrando a este fascinante mundo del DESARROLLO WEB y este ejemplo me ayudó bastante, ya que estoy haciendo un sistema en el cual se necesita este módulo. Ejecuté los scripts y bacán funcionan. Ningún problema
    Gracias!!1

  86. Kernell_bip 17.06.2004 - 13:58 - # edit

    Bueno, yo tambien escogi ese manual. Me gusto, pero siempre me hacia el mismo fallo que le hace a usted. Es porque no has puesto las rutas de conexion a MYSQL. Aqui tiene lo que debe poner en los pricinpios de ingresar.php, registrar.php y restringida.php:

    $dbhost=”localhost”; // host del MySQL (generalmente localhost)
    $dbusuario=”root”; // aqui debes ingresar el nombre de usuario
    // para acceder a la base
    $dbpassword=”"; // password de acceso para el usuario de la
    // linea anterior
    $db=”tubasededatos”; // Seleccionamos la base con la cual trabajar

    $conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);
    mysql_select_db($db, $conexion);

    Pones tu base de datos y yasta.
    Si esto no ha sido tu problema no te podre ayudar. Pero weno, espero que te habre ayudado saludos!

  87. escan_0 25.07.2004 - 08:59 - # edit

    Si no es mucha molestia y ya que son muchos los que lo piden podrian decir que codigo podriamos poner dentro de un logout para borrar las cokkies?

    un saludo.

  88. Gloria Rojas 10.08.2004 - 15:23 - # edit

    El script es muy entendible, pero al momento de ejecutarlo bota el siguiente error:

    Warning: Supplied argument is not a valid MySQL result resource in d:/archivos de programa/abria merlin/apache/htdocs/impactoweb/proyecto3/ingresar.php on line 20

    No se si es abusar del autor de este script pero le voy a pedir el favor de que me aclare esta duda es muy importante para mi llevo bastante tiempo tratando de hacer esto yo tengo una BD de datos en mysql con un registro usuario donde hay 3 campo id nombre y password este password es el que debe validar al momento de ingresar, por favor ayudeme mil gracias…..

  89. cherubene 23.08.2004 - 17:48 - # edit

    El registro me funciona bien. Lo que no sé como hacer es que una vez registrado el usuario reciba por mail sus datos y que recupere la contraseña si se la olvida.
    Si alguien puede darme una mano le estoy agredecido.
    Muy bueno el sitio.
    Gracias

  90. DaNi___ 28.08.2004 - 08:21 - # edit

    seria muy bueno ke se pusiera el resultado de este turorial en practico, es decir, ke dieran el registro ya echo para comparar y aprender como van colocadas y donde y como clasificarlo es decir los documentos ke serian necesarios y kual seria el aspecto final y esto ke fuera como comentandolo y explikando el ejemplo, kreo ke seria mucho mas productivo, practico y la gente aprendreria con mayor facilidad incluyendome a mi entre esa gente ;) x lo demas esta muy bien este tutorial

  91. NRLABS 02.09.2004 - 15:25 - # edit

    a los que no les reconozca, es asi… =))

    < ?php

    include(”login.php”);

    if($loginCorrecto=true)
    {
    echo “Aqui el contenido solo para usuarios registrados”;
    }
    else
    {
    echo “El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area”;
    }
    ?>

  92. No Registrado 15.09.2004 - 18:15 - # edit

    - Hola, antes de nada enorabuena por la web que tienen.

    el motivo por el cual escribo esto es para saber como tengo que hacer para un menú para que el usuario registrado pueda cambiar sus datos.

    Otro menú podia ser el de Administrador, por el cual, podria modificar cualquier parámetro de cada usuario.

    Por ultimo, un pequeño fallo (si se puede llamar asi) es que se podia poner una doble casilla para el password y email para que no se equivocase el usuario al registrarse y al hacer login (solo password).

    Bueno, ahi queda mis dudas si quieren saber mas envien un correo a: diabli_yo1@terra.es

    Un saludo y gracias ;)

  93. Tmcsk 19.09.2004 - 13:44 - # edit

    Pues la verdad es que en medio del script hay un $row que no se de donde lo agarra

  94. Cluster 19.09.2004 - 17:16 - # edit

    NRLABS, a los que no les reconozca, es asi… =))

    < ?php

    include(”login.php”);

    if($loginCorrecto=true)
    {
    echo “Aqui el contenido solo para usuarios registrados”;
    }
    else
    {
    echo “El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area”;
    }
    ?>

    Entonces .. si hago:

    http://www.tusitio.tal/pagina_segura.php?loginCorrecto=TRUE

    Entraría a tu sitio? .. XDD.. Deben usar los arrays superglobales y si se trata de cookies o sesiones .. usar sus respectivos: $_SESSION o $_COOKIE ..

    Un saludo,

    PD:
    Esto:
    if($loginCorrecto=true)

    En tal caso sería:
    if($loginCorrecto==true)

    Doble igual .. compara .. uno sólo asigna y triple compara por valor y tipo .. (más seguro si cabe).

  95. No Registrado 24.09.2004 - 12:34 - # edit

    fbosch, POR FAVOR!! ESTO NO FUNCIONA!! NO SE CREAN LOS COOKIES!! YO HE HECHO TODO BIEN Y EL SISTEMA NO ME RECONOCE… AYUDA PLEASEEEEEEEE!!!

    por q se tarda tando en contestar en este foro?? no sirve de nada dejar comentarios…

    el tema es que da false el if y por lo tanto destruye las galleta creada pon esto en la linea [PHP]if(mysql_num_rows($result) > 0){
    $row = mysql_fetch_array($result);[/PHP]
    Eso lo ejecuta si en la fila hay mas de 0 resultados

    Saludos

  96. invitado 28.10.2004 - 22:45 - # edit

    haz el cambio de conexion, es decir crea un sarchivo conexion.php y luego en todas las paginas que lo requieras pon un include
    < ?
    $servidor=”localhost”;
    $user=”";
    $pass=”";
    $db=”tuvoz”;
    $conexion = mysql_connect($servidor, $user, $pass);
    mysql_select_db($db, $conexion);
    ?>

    cualquier duda rparabaviz@hotmail.com

  97. gaitagarcia 09.11.2004 - 15:43 - # edit

    en esta parte del codido

    $sql .= “,’”.quitar($HTTP_POST_VARS["tdd1"]).”‘”;
    $sql .= “,’”.quitar($HTTP_POST_VARS["tdd2"]).”‘”;
    $sql .= “,’”.quitar($HTTP_POST_VARS["f_nacimiento"]).”‘%d-%m-%Y”;

    tengo un error, me podrian ayudar, lo que quiero es insertar una fecha, la fecha de nacimiento, en el html, tengo un campo que se llama f_nacimiento y el la db ese campo esta como DATE.

    Gracias

  98. Somel 28.11.2004 - 18:20 - # edit

    cherubene, El registro me funciona bien. Lo que no sé como hacer es que una vez registrado el usuario reciba por mail sus datos y que recupere la contraseña si se la olvida.
    Si alguien puede darme una mano le estoy agredecido.
    Muy bueno el sitio.
    Gracias

    Pero bueno me he leido todo el foro y no entiendo el porque las personas que les ha funcionado no sean capaces de meter todos los archivos en un .Zip y dejar el link en el foro para que otros usuarios que se han matado tratando de realizarlo puedan lograrlo.

    vamos a al mayoria les ha funcionao
    sean solidarios
    Gracias

  99. albi 03.12.2004 - 17:20 - # edit

    quiero tener un password login para mi pagina ,ya que quiero hacer un area de miembros pero nose como.?

    me pueden ayudar?

  100. No Registrado 09.12.2004 - 09:08 - # edit

    Wenass!!
    Soy un nuevo webmaster de la red, que esta creando una web xD (logiko) Pero tngo un problema muy grave!! No sé que programa usar para que pueda realizar un registro y reconocimienton de usuarios! Si sabeis del programa que se tiene que usar os agradeceria que me lo dijierais o me agregarais a: llopin@hotmail.com para poder interkmbiar cosas de webmasters.

    Asias x su atencion! slaudoss


-


Maestros del Web es el punto de encuentro para los entusiastas de la red.

Creative Commons by-nc-sa 3.0 | Política de Privacidad | CMS: Wordpress