Raul
13/08/2009, 19:14
Estimados, soy nuevo con esto de las sesiones y queria ver si este script que modifique para mi uso es viable en lo seguro.
Que tipo de ventajas o desventajas posee.
Se incorporaria en un sitio con una validacion simple.
Consta de 3 archivos.
index.php (documento de acceso restringido).
<?php
ob_start();
require('acceso.php');
ob_end_flush();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
<style type="text/css">
<!--
input {border:1px solid #606060; background: #DDDDDD}
-->
</style>
</head>
<body> Usuario y Password correctos <br /><br /><br />
<?=$logout_button?>
</body>
</html>
acceso.php (documento que solicita usuario y contraseña lo cual se encuentra encriptada por md5 en un documento de texto).
<?php
/* configuracion */
$cookiename = 'golegrolksnndmksiiJKJJSks';
$expirytime = time()+3600;
$msg = 'usuario/password incorrecto.';
/* End Configuracion */
/* Logout */
if (isset($_REQUEST['logout'])) {
setcookie($cookiename,'',time() - 3600);
if (substr($_SERVER['REQUEST_URI'],-12)=='?logout=true') {
$url=str_replace('?logout=true','',$_SERVER['REQUEST_URI']);
header('Location: '.$url);
}
show_login_page('');
exit();
}
$logout_button='<form action="'.$_SERVER['REQUEST_URI'].'" method="post"><input type="submit" name="logout" value="Logout" /></form>';
$logout_text='<a href="'.$_SERVER['REQUEST_URI'].'?logout=true">Logout</a>';
/* End Logout */
/* FUNCTIONS */
function setmycookie() {
global $cookiename,$encrypt_pass,$expirytime;
setcookie($cookiename,$encrypt_pass,$expirytime);
}
function show_login_page($msg) {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Autorizacion Requerida</title>
<style type="text/css">
<!--
.error {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #A80000;
font-weight: bold;
}
input {border:1px solid #606060; background: #DDDDDD}
.Estilo1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #333333;
font-weight: bold;
}
-->
</style>
</head>
<body>
<form action="" method="POST">
<table width="400" border="0" align="center" cellpadding="0" cellspacing="3">
<tr>
<td width="127" align="right"><span class="Estilo1">usuario:</span></td>
<td width="264"><label><input name="usuario" type="text" id="usuario" size="20" maxlength="20" />
(admin)</label></td>
</tr>
<tr>
<td align="right" class="Estilo1">password:</td>
<td><input type="password" name="password" size="20">
(demo)</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="login"><input type="hidden" name="sub" value="sub"></td>
</tr>
<tr>
<td> </td>
<td><div class=error><?=$msg?></div></td>
</tr>
</table>
</form>
</body>
</html>
<? }
/* END FUNCTIONS */
$errormsg='';
if (substr($_SERVER['REQUEST_URI'],-7)!='acceso.php') {
if (isset($_POST['sub'])) {
$submitted_pass=md5($_POST['password']);
$submitted_usua=$_POST['usuario']; //$submitted_usua=md5($_POST['usuario']);
$fich = file($_SERVER['DOCUMENT_ROOT']."usuarios.txt");
$i=0; $validado=false;
while ($fich[$i] && !$validado) {
$campo = explode("|",$fich[$i]);
if (($submitted_usua==$campo[0]) && ($submitted_pass==chop($campo[1]))) $valida=true;
$i++;
}
if (!$valida) {
$errormsg=$msg;
show_login_page($errormsg);
exit();
} else {
setmycookie();
}
} else {
if (isset($_COOKIE[$cookiename])) {
if ($_COOKIE[$cookiename]==$encrypt_pass) {
} else {
show_login_page($errormsg);
exit();
}
} else {
show_login_page($errormsg);
exit();
}
}
} else {
}
?>
usuarios.txt (Documento que contiene usuario y contraseñas - encriptadas md5 -).
admin|fe01ce2a7fbac8fafaed7c982a04e229
NOTA:
Para su funcionamiento, como se observa en index.php se debe de incorporar al principio del archivo a protejer el siguiente codigo:
(Este archivo a protejer puede estar en cualquier directorio dentro del sitio)
<?php
ob_start();
require('acceso.php');
ob_end_flush();
?>
Gracias, espero comentarios.
Raul :D
Que tipo de ventajas o desventajas posee.
Se incorporaria en un sitio con una validacion simple.
Consta de 3 archivos.
index.php (documento de acceso restringido).
<?php
ob_start();
require('acceso.php');
ob_end_flush();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
<style type="text/css">
<!--
input {border:1px solid #606060; background: #DDDDDD}
-->
</style>
</head>
<body> Usuario y Password correctos <br /><br /><br />
<?=$logout_button?>
</body>
</html>
acceso.php (documento que solicita usuario y contraseña lo cual se encuentra encriptada por md5 en un documento de texto).
<?php
/* configuracion */
$cookiename = 'golegrolksnndmksiiJKJJSks';
$expirytime = time()+3600;
$msg = 'usuario/password incorrecto.';
/* End Configuracion */
/* Logout */
if (isset($_REQUEST['logout'])) {
setcookie($cookiename,'',time() - 3600);
if (substr($_SERVER['REQUEST_URI'],-12)=='?logout=true') {
$url=str_replace('?logout=true','',$_SERVER['REQUEST_URI']);
header('Location: '.$url);
}
show_login_page('');
exit();
}
$logout_button='<form action="'.$_SERVER['REQUEST_URI'].'" method="post"><input type="submit" name="logout" value="Logout" /></form>';
$logout_text='<a href="'.$_SERVER['REQUEST_URI'].'?logout=true">Logout</a>';
/* End Logout */
/* FUNCTIONS */
function setmycookie() {
global $cookiename,$encrypt_pass,$expirytime;
setcookie($cookiename,$encrypt_pass,$expirytime);
}
function show_login_page($msg) {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Autorizacion Requerida</title>
<style type="text/css">
<!--
.error {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #A80000;
font-weight: bold;
}
input {border:1px solid #606060; background: #DDDDDD}
.Estilo1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #333333;
font-weight: bold;
}
-->
</style>
</head>
<body>
<form action="" method="POST">
<table width="400" border="0" align="center" cellpadding="0" cellspacing="3">
<tr>
<td width="127" align="right"><span class="Estilo1">usuario:</span></td>
<td width="264"><label><input name="usuario" type="text" id="usuario" size="20" maxlength="20" />
(admin)</label></td>
</tr>
<tr>
<td align="right" class="Estilo1">password:</td>
<td><input type="password" name="password" size="20">
(demo)</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="login"><input type="hidden" name="sub" value="sub"></td>
</tr>
<tr>
<td> </td>
<td><div class=error><?=$msg?></div></td>
</tr>
</table>
</form>
</body>
</html>
<? }
/* END FUNCTIONS */
$errormsg='';
if (substr($_SERVER['REQUEST_URI'],-7)!='acceso.php') {
if (isset($_POST['sub'])) {
$submitted_pass=md5($_POST['password']);
$submitted_usua=$_POST['usuario']; //$submitted_usua=md5($_POST['usuario']);
$fich = file($_SERVER['DOCUMENT_ROOT']."usuarios.txt");
$i=0; $validado=false;
while ($fich[$i] && !$validado) {
$campo = explode("|",$fich[$i]);
if (($submitted_usua==$campo[0]) && ($submitted_pass==chop($campo[1]))) $valida=true;
$i++;
}
if (!$valida) {
$errormsg=$msg;
show_login_page($errormsg);
exit();
} else {
setmycookie();
}
} else {
if (isset($_COOKIE[$cookiename])) {
if ($_COOKIE[$cookiename]==$encrypt_pass) {
} else {
show_login_page($errormsg);
exit();
}
} else {
show_login_page($errormsg);
exit();
}
}
} else {
}
?>
usuarios.txt (Documento que contiene usuario y contraseñas - encriptadas md5 -).
admin|fe01ce2a7fbac8fafaed7c982a04e229
NOTA:
Para su funcionamiento, como se observa en index.php se debe de incorporar al principio del archivo a protejer el siguiente codigo:
(Este archivo a protejer puede estar en cualquier directorio dentro del sitio)
<?php
ob_start();
require('acceso.php');
ob_end_flush();
?>
Gracias, espero comentarios.
Raul :D