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");
}
?>
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();
}
}
?>
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>