Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/08/2008, 10:03
Avatar de memoo
memoo
 
Fecha de Ingreso: marzo-2008
Mensajes: 89
Antigüedad: 16 años, 2 meses
Puntos: 1
clase usuario y clase mysql, error de declaración

Bien al grano, tengo 2 clases, una para conectarme al servidor y BD (clase_mysql.php) , y otra para controlar las actividades del usuario (clase_usuario.php), por ejemplo el login.

A la clase_mysql.php la incluyo en clase_usuario.php para hacer el query de login, y también la incluyo (clase_mysql) en otro archivos para conectarme al servidor y hacer querys.

Dentro de clase_usuario.php hago el query de login (select) y si existe el usuario creo las variables de sesión. Otra duda que tengo es que si las creo ahí, dentro de esa clase, siguen disponibles para que las use cuando quiera no? solo falta incluir el archivo clase_usuario.php en donde requiera usarlas no?

Cabe mencionar que apenas empecé a implementar clases, todo iba bien hasta que ahorita intenté hacer eso, me marca el siguiente error:

Fatal error: Cannot redeclare class Clase_MySQL in /home/WWW/jgcruz/transportes/clase_mysql.php on line 13

Yo supongo que es por que como incluyo el archivo clase_usuario.php en dos archivos ha de haber algún conflicto de instanciación o algo, si alguien me puede echar una mano les agradeceré mucho, les dejo mi código.

acceso.php , aqui llamo primero a clase_usuario.php, para hacer el query de login con el objeto $objUsr.
Código PHP:
<?php
    
require("clase_usuario.php");

    
//Verificamos si se va a salir de sesión.
    
session_start();
    if ( (isset(
$_GET['do'])) ) //con isset determinamos si la variable de sesión está inicializada
    
{
          
$_SESSION=array();
          
session_destroy();
          
header("Location:login.php");
    }

    else {
        
$objUsr=new Clase_Usuario();

        
$usuario=$_POST["txt_usuario"];  //Obtenemos los datos introducidos por el usuario
        
$password=$_POST["txt_password"];

        
$numUsuario=$objUsr->login($usuario,$password);
        if(
$numUsuario==1)
            
header ("Location: principal.php");
        else
            
header ("Location: login.php");
    }
?>
clase_usuario.php, aqui hago el query de login con una función e incluyo a clase_mysql.php para hacer la conexión a server y bd.
Código PHP:
<?php    
require("clase_mysql.php");
class 
Clase_Usuario extends Clase_MySQL
{    
    public function 
__construct(){
        
session_start();
    }
    public function 
login($usuario$password)
    {

        try {
            
$objMySQL = new Clase_MySQL();
            
$objMySQL->query("SELECT * FROM tbl_usuarios WHERE usuario='$usuario' AND password='$password'");

            if((
$objMySQL->cuentaFilas())==1) {
                
//Si hubo éxito en la consulta, creamos las variables de sesión
                
$_SESSION['usuario']['id_usuario']    =$objMySQL->valorCampo("id_usuario");
                
$_SESSION['usuario']['usuario']        =$objMySQL->valorCampo("usuario");
                
$_SESSION['usuario']['nombre']        =$objMySQL->valorCampo("nombre");
                
$_SESSION['usuario']['ap_paterno']    =$objMySQL->valorCampo("ap_paterno");
                
$_SESSION['usuario']['ap_materno']    =$objMySQL->valorCampo("ap_materno");
                
$_SESSION['usuario']['permisos']    =$objMySQL->valorCampo("permisos");
                
$_SESSION['numfilas']                =$objMySQL->cuentaFilas();
                return 
$_SESSION['numfilas'];
            }
            else {
                return 
0;
            }
        }
        catch (
Exception $e) {
            echo 
"Excepción atrapada: ",$e;
        }
    }
    public function 
__destruct(){
        
session_unset();
    }
}
?>
finalmente en principal.php mando a llamar de nuevo a clase_usuario.php para checar las variables de sesion, pero me marca el error que les digo, ya probé quitarlo y si no incluyo la clase, no me deja ver las variables de sesión.

Código PHP:
<HTML>
<HEAD>
</HEAD>
<BODY>
<?php 
  
require("config/config_func.php");
  include(
"clase_usuario.php");
  if(!isset(
$_SESSION['usuario']['id_usuario'])){
      echo 
"Error, necesitas identificarte";
      exit();
  }
  else{
      echo 
"Bienvenido, ".$_SESSION['usuario']['id_usuario']." ".$_SESSION['usuario']['ap_paterno'].".";
      if(!
grant('ADMINISTRADOR'))
          echo 
"<br>Usuario normal.";
      else{
          echo 
"<br>ADMINISTRADOR";
          echo 
"<br><a href='frm_nuevousuario.php'>Crear nuevo usuario.</a>";
       }
      echo 
"<br>Num de filas con coincidencias: ".$_SESSION['numfilas'];
   }
?>
  <br><input type="button" value="Salir" onclick="opcion('salirSesion');">

</BODY>
</HTML>
se que es mucho código pero está entendible según yo, gracias y cualquier ayuda o tip es bienvenido!
__________________
And how can't we win? When fools can be kings, don't waste your time, or time will waste you...
Knights Of Cydonia
MUSE ROCKS