Foros del Web » Programando para Internet » PHP »

[script] Sistema con claves de un solo uso

Estas en el tema de [script] Sistema con claves de un solo uso en el foro de PHP en Foros del Web. Bueno pues yo soy nuevo en este foro pero ya he usado los scripts de la pagina y es por eso que pongo este script ...
  #1 (permalink)  
Antiguo 31/03/2005, 15:50
 
Fecha de Ingreso: marzo-2005
Mensajes: 3
Antigüedad: 12 años, 8 meses
Puntos: 0
[script] Sistema con claves de un solo uso

Bueno pues yo soy nuevo en este foro pero ya he usado los scripts de la pagina y es por eso que pongo este script que es para crear un sistema con claves de un solo uso
Que es eso ? bueno pues es un sistema que tiene claves que cuando la introduce si esta bien entras y luego si intentas entrar con ella otra vez ya no puedes tienes que introducir otra clave.

[script]

Creas una tabla llamada clave



Código:
CREATE TABLE `clave` (
`id` BIGINT( 7 ) NOT NULL AUTO_INCREMENT ,
`clave` VARCHAR( 12 ) NOT NULL ,
PRIMARY KEY ( `id` ) 
);

creas index.php y escribes lo siguiente:



Código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Claves</title>
</head>

<body>


<center>
<form action="claves2.php" method="post">
Clave: <input name="clave" type="text" size="12" maxlength="12"><br><br>
<input name="Enviar" type="submit" value="Enviar">
</form>
</center>


</body>
</html>
creas claves2.php y escribes:



Código:
<?php 
$dbh=mysql_connect ("localhost", "usuario", "pass") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("tabla");

$_POST["clave"];
$result = mysql_query("SELECT * FROM `claves` WHERE clave ='$clave'");
$row = mysql_fetch_array( $result ); 
if ($row['clave']==$clave)
{
mysql_query("DELETE FROM claves WHERE clave='$clave'");
setcookie("clave", $clave, time()+36000);
echo "<META HTTP-EQUIV='refresh' CONTENT='0; URL=claves3.php'>"; 
} 
else {
echo "Clave incorrecta o ya ha sido utilizada.";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Claves</title>
</head>

<body>

</body>
</html>

ahora creeas claves3.php y escribes:



Código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<br><br><br>
<?php
if (isset($_COOKIE["clave"]))
{
echo "<center>";
echo "Esto lo puedes ver solo si has ingresado una clave correctamente.";
echo "Recuerda que la clave una vez usada ya no podra ser utilizada otra vez.";
echo "</center>";
echo "Cuando termines click <a href='logout.php'>aqui.</a>";
}
else {
echo "No haz ingresado una clave correcta. <a href='index.php'>Regresar.</a>";
}
?>

</body>
</html>

y por ultimo creas logout.php



Código:
<?php
setcookie("clave");
echo "<META HTTP-EQUIV='refresh' CONTENT='0; URL=index.php'>";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>

<body>

</body>
</html>

recuerda poner al ultimo de la pagina claves3.php el logout porke si no te das logout e intentas entrar te da error
  #2 (permalink)  
Antiguo 01/04/2005, 07:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En claves2.php ....

El HTML que compones no es correcto (la página) .. estás enviando un "mensaje" y luego todo las cabeceras y HTML en general que definen una página HTML standard y correcta.

En realidad todo ese HTML -sobra- de claves2.php .. debes redireccionar con cabeceras desde PHP:

Código PHP:
header ("Location: dondesea.php");
exit; 
En claves3.php .. (o mejor dicho página que requiera autentificación) .. la validación puedes hacerla tipo:

Código PHP:
<?
if (isset($_COOKIE["clave"])){
   
header ("Location: index.php?error");
   exit;
}
// resto de tu página autentificada ..
si no existe tu cookie (púes no se autentificó tu usuario . .redireccionas hacia el formulario de login ... le paso una varaible de control "error" por GET .. para que puedas dar un mensaje de error en index.php diciendo:

Código PHP:
if (isset($_GET['error'])){
   echo 
"Ingreso no autorizado . .debe autentificarse";

Por lo demás . .cuidado con el uso de cookies para sistemas de autentificación . .intenta usar SESIONES en lugar de cookies. Y menos propagar en una cookie una "clave" sin encriptación!!!. Solo con hechar un viztazo a esas cookies se verá tu contraseña .. Imagina usar esto en un PC "público", lease; universidades, empresas, cibercafes .. .


Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.