note 42067 added to features.http-auth

From: Date: Sat, 01 May 2004 21:19:37 +0000
Subject: note 42067 added to features.http-auth
Groups: php.notes 
Request: Send a blank email to php-notes+get-69091@lists.php.net to get a copy of this message
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.&nbsp;</p>"; echo "<p class='seccion_cen'>Puede que usted introduzca&nbsp; credenciales"; echo " incorrectas&nbsp;"; echo "(Ej.- palabra de paso incorrecta),&nbsp;</p>"; echo "<p class='seccion_cen'>Puede ser también&nbsp; que su&nbsp; browser "; echo "no entienda cómo indicar las credenciales requeridas.&nbsp;</p>"; echo "<p class='seccion_cen'> Por favor<br>"; echo "<a href='$pagina'>click here&nbsp;</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(); } ?> ---- Manual Page -- http://www.php.net/manual/en/features.http-auth.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+42067 Delete -- http://master.php.net/manage/user-notes.php?action=delete+42067&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+42067&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#69091) next »