note 42067 deleted from features.http-auth by tomsommer
| From: | tomsommer@php.net | Date: | Sat, 01 May 2004 22:24:54 +0000 |
| Subject: | note 42067 deleted from features.http-auth by tomsommer | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-69093@lists.php.net to get a copy of this message | ||
Note Submitter: javier@masplus.com
----
PARA USUARIOS EN ESPAÑOL.
(NOTA: Animo a la comunidad Hispaña a dejar el código y las esplicaciones en estas páginas en
idioma Español..... )
En versiones de PHP 4.2.0, el valor por defecto de register_globals era on (activado).
La comunidad PHP anima a no confiar en esta directiva ya que es preferible asumir que tiene el valor
off (desactivada) y programar teniendo en cuenta esto como medidas de seguridad.
Aqui proponemos entonces la ADAPTACIÓN de este código para IDENTIFICAR USUARIOS.
La aplicación nos pide el usuario y la clave de acceso para compararla con la existente en una base
de datos en MySQL.
Previamente tenemos que crear la base de datos y tambien la tabla que soportaria las claves de
ususarios, y que en un modelo básico podria ser...
PARA CREAR LA TABLA.
CREATE TABLE
Tabla_claves (
Id_claves int(11) unsigned NOT NULL auto_increment,
Clave_usuario varchar(20) binary NOT NULL default '',
Clave_clave varchar(20) binary NOT NULL default '',
PRIMARY KEY (id_cliente)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
ESTE SERIA EL CODIGO
<?php
function no_auth_msg() {
global $PHP_SELF;
$pagina = basename($PHP_SELF);
echo "<link rel='stylesheet' href='http://Su
dominio/css.css' /><style>";
echo "<!-- @import 'http://su
dominio/css_formularios.css'; --></style>";
echo "<p class='titular_cen'>AUTORIZACIÓN
REQUERIDA<br><br></p>";
echo "<p class='seccion_cen'>Este servidor no puede verificar su
autorización";
echo " a tener acceso al documento solicitado. </p>";
echo "<p class='seccion_cen'>Puede que usted introduzca
credenciales";
echo " incorrectas ";
echo "(Ej.- palabra de paso incorrecta), </p>";
echo "<p class='seccion_cen'>Puede ser también que su
browser ";
echo "no entienda cómo indicar las credenciales requeridas. </p>";
echo "<p class='seccion_cen'> Por favor<br>";
echo "<a href='$pagina'>click here </a>";
echo "<br>para intentarlo otra vez</p>";
echo "<p class='seccion_cen'><span style='text-decoration:
overline'>";
echo "</span></p>";
}
function authenticate() {
Header("WWW-Authenticate: Basic
realm=\"poner-aqui-el-directorio-donde-se-quiere-identificar\", stale=FALSE");
Header("HTTP/1.0 401 Unauthorized");
no_auth_msg();
exit;
}
if (isset($HTTP_SERVER_VARS['PHP_AUTH_USER'])) {
// VERIFICAR USUARIO Y CLAVE
$ser="servidor"; // Cambiar por los vuestros
$usu="usuario";// Cambiar por los vuestros
$pas="claves";// Cambiar por los vuestros
mysql_connect($ser,$usu,$pas) or die ("Incapaz conectar con el servidor del SQL");
$PHP_AUTH_USER=$HTTP_SERVER_VARS['PHP_AUTH_USER'];
$PHP_AUTH_PW=$HTTP_SERVER_VARS['PHP_AUTH_PW'];
//Conexion a una base de datos donde tenemos las claves de cada usuario para dar o no paso.
$sql = "SELECT * FROM Tabla_claves WHERE Clave_usuario=\"$PHP_AUTH_USER\" AND
Clave_clave=\"$PHP_AUTH_PW\" ";
if (!($result = mysql_db_query($basedatos, $sql))) {die ("Incapaz tener acceso a la base de
datos. Por favor intento otra vez más adelante.");
}
if (mysql_num_rows($result) >0) {
// Usuario Valido esta identificado
} else {
// El utilizador es inválido
authenticate();
}
} else {
// el username todavía no se fija
// Show authentication dialogue
authenticate();
}
?>