Ver Mensaje Individual
  #8 (permalink)  
Antiguo 22/11/2005, 07:50
Tigervlc
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 10 meses
Puntos: 3
Cluster, si te fijas, donde uso @ hago control de errores con die(). Símplemente es una forma más elegante de mostrar el error. Excepto en las declaraciones de nombres cortos para las variables de formulario, que en realidad no tendrían que dar ningún error (en mi servidor símplemente me salía un "Notice:" indicándome que tal vez se le podría asignar un valor inexistente, cosa que arreglaba con el @). Pero en el resto de líneas donde uso @ es en las funciones de bases de datos, y fíjate que aunque evite el error por defecto del servidor, hago después una validación y si hay error lo muestro de forma personalizada con el die(). Además, en mi servidor de hosting (no el local) tienen la opción de errores desactivada por motivos de seguridad, por eso uso die(), para poder ver el error.

El session_start() se encuentra al principio de index.php. Como he dicho, he puesto el código de login.php que va incluido dentro de index.php. Bueno, ha sido un error mío no haberlo avisado antes. Pero estar está. Al inicio de index.php

Te he hecho caso en lo de definir la cookie tras la validación del usuario, eso es verdad, no debería ser antes. Reescribo el código tras este cambio, y también he usado !empty en lugar de isset:

Código PHP:
<!-- el session_start() se encuentra al inicio del archivo index.php. Lo siguiente es el archivo login.php incluído en una sección DIV de index.php -->
<?php 
        
@$us_registrado $_SESSION['us_registrado']; 
        echo 
'<h1>Cuenta de usuario:</h1>'
        if (!empty(
$_POST["log_in"]) && !empty($_POST["password"])) 
        
// Se acaba de enviar el formulario de log in 
        

            @
$log_in $_POST["log_in"]; 
            @
$password $_POST["password"]; 
            @
$recordar $_POST["recordar"]; 
             
            @
$link mysql_connect('localhost''registrador''passwordDelRegistrador'); 
            if (!
$link) { 
                   die(
'No se ha podido conectar al servidor. Error: ' mysql_error()); 
            } 
            @
$db mysql_select_db('auth'$link); 
            if (!
$db) { 
                die(
'Error en el acceso a la base de datos. Inténtalo más tarde. Error<br />'.mysql_error()); 
            } 
             
            
$query "SELECT * FROM authorized_users WHERE name='".$log_in."' AND password='".sha1($password)."'"
            @
$result mysql_query($query$link); 
            if (!
$result) { 
                   die(
'Error en la consulta: ' mysql_error()); 
            } 
            
$num_results mysql_num_rows($result); 
             
            if (
$num_results 0) { 
                
// Se ha encontrado alguna coincidencia. Usuario válido. Se crea variable de sesión. 
                
$_SESSION['us_registrado'] = $log_in
                                                                   
// Si se ha marcado la casilla recordar, poner una cookie en ese equipo para recordar 
                
if ($_POST["recordar"]=='si') { 
                    
setcookie('loginWebVN',"$log_in,$password",false); 
                } 
                
// Se vacían las vbles del login para no repetir este proceso 
                
unset($_POST["log_in"]); 
                unset(
$_POST["password"]); 
            } 
             
            
mysql_free_result($result); 
            
mysql_close($link); 
        } 

        if (!empty(
$_SESSION['us_registrado']) && $_POST["desconectar"]!="on"
        { 
            
// Ya se ha registrado el usuario actual y no ha hecho log out 
?>   
            <form name="registrado" method="post" action="index.php"> 
                <p>Usuario conectado:<br /> 
                  <strong><?php echo $_SESSION['us_registrado']; ?></strong> 
                  <input type="hidden" name="desconectar" value="on"> 
              </p> 
                <p><input name="logout" type="submit" id="logout" value="Log out"></p> 
            </form> 
<?php 
        

        else 
        { 
// El usuario no es válido y ha intentado conectarse, o acaba de hacer log out, o no ha hecho login ni registro 
            
if ($_POST["desconectar"] == "on") { 
                
// Se ha hecho log out. Destruimos la variable de sesión. 
                
unset($_SESSION['us_registrado']); 
            } 
             
            if (!empty(
$log_in) || !empty($password)) { 
                
// Aunque no tenemos id de sesión, hay valores en los campos del log in, o sea: usuario no válido 
                
echo '<strong>Usuario o contraseña incorrectos.</strong><br />'
            } 
             
            else { 
                
// Usuario que no se ha conectado aún, o ha hecho log out 
                
echo 'Usuario desconectado o no registrado.<br />'
            }     
?> 
            <form name="form2" method="post" action="index.php"> 
                <table width="100%" border="0"> 
                  <tr> 
                    <td>Conexi&oacute;n:</td> 
                    <td>&nbsp;</td> 
                  </tr> 
                  <tr> 
                    <td>log in</td> 
                    <td><input name="log_in" type="text" size="15" value="<?php if (!empty($_COOKIE["loginWebVN"])) 
                                                                                { 
                                                                                        
$partes explode(',',$_COOKIE["loginWebVN"]); 
                                                                                        echo 
$partes[0]; 
                                                                                } 
                                                                                
?>"/> 
                                                                                </td> 
                  </tr> 
                  <tr> 
                    <td>password</td> 
                    <td><input name="password" type="password" size="15" value="<?php if (!empty($_COOKIE["loginWebVN"])) 
                                                                                { 
                                                                                        
$partes explode(',',$_COOKIE["loginWebVN"]); 
                                                                                        echo 
$partes[1]; 
                                                                                        } 
                                                                                
?>"/> 
                                                                                </td>                  </tr> 
                  <tr> 
                    <td><div class="Estilo1"> 
                      <div>Recordar en este equipo (necesita 
                    tener cookies habilitadas): </div> 
                    </div></td> 
                    <td><input name="recordar" type="checkbox" id="recordar" value="si" /></td> 
                  </tr> 
                  <tr> 
                    <td colspan="2"><div align="center"> 
                      <input name="signIn" type="submit" id="signIn" value="Enviar" /> 
                    </div></td> 
                  </tr> 
                </table> 
</form> 
            <form name="form1" method="post" action="index.php"> 
                    Usuario no registrado: 
                    <input name="registro" type="submit" id="registro" value="Registrarse"> 
                    <input type="hidden" name="registrar" value="on"> 
                    <br> 
            </form> 
<?php 
        

?>