Problemas al logear
  • Estoy construyen un pequeña aplicación en kumpiaphp sb2, pero me he encontrado con este error y he podido resolverlo. Voy a mostrar la estructura de mi aplicación. 

    Modelos: appweb\default\app\models\usuarios.php
    <?php
    class Usuarios extends ActiveRecord {
     
    }
    ?>

    Controladores: appweb\default\app\controllers\sitio_controller.php
    <?php
    View::template('appweb_admin');
    class SitioController extends AppController {
    function after_filter(){
    if(!Auth::is_valid()){
    Router::redirect("login/index");
    }
    }
    public function index() {}
    }
    ?>

    appweb\default\app\controllers\login_controller.php
    <?php
    View::template('appweb');
    class LoginController extends AppController {
    function index() {
    Auth::destroy_identity();
    }
    function logear() {
    try {
    View::select(NULL);
    if (Input::hasPost("usuario","password")){
    $usuario = Input::post("usuario");
    $pwd = Input::post("password");
    $auth = new Auth("model","class: usuarios", "login: $usuario", "password: $pwd");
    if($auth->authenticate()){
    Router::redirect("index/sitio");
    }else{
    Router::redirect("login/index");
    }
    }
    } catch (KumbiaException $e) {
    View::excepcion($e);
    }
    }
    }
    ?>

    luego cuando dígito el usuario y la contraseña mi navegador se posiciona en http://localhost/appweb/login/logear y se visualizan estas lineas de codigo 

    Notice: Undefined index: campana in C:\wamp\www\appweb\core\libs\db\db.php on line 77
    Fatal error: Unsupported operand types in C:\wamp\www\appweb\core\libs\db\db.php on line 81
  • Revisando las líneas que mencionas, es cuando se conecta al motor de la base de datos.
    ¿Has configurado correctamente tu archivo app/config/dabase.ini? Copia y pega el contenido de tu archivo database.ini así vemos si no hay nada incorrecto.
    Saludos

  • Veo varios errores de estructuras de tu codigo, usar un after_filter para validar si está logueado no es lo mas correcto. Una redirección para login incorrecto tampoco me parece lo más adecuado
  • Buenas Reinaldo,
    simplemete tienes mal el databases.ini
  • ya encontre el problemas es cierto... tenia mal configurado el database.ini, este era mi config.ini, mi parametro database = campana. Pero en database.ini me faltaba el [campana], el algún momento pense q como tenia, production = OFF el me tomaba en database [development].

    config.ini
    [application]
    name = "KUMBIA PROJECT"
    timezone = "America/New_York"
    production = OFF
    database = campana
    dbdate = YYYY-MM-DD
    debug = On
    log_exceptions = On
    charset = UTF-8
    cache_driver = file
    metadata_lifetime = "+1 year"
    namespace_auth = "default"
    locale = es_ES
    ----------------------------------------------------------------
    database.ini
    [development]
    host = localhost
    username = root
    password = 
    name = campana
    type = mysql
    charset = utf8  
    ;este valor es necesario para abrir conexiones UTF-8

    [campana]
    host = localhost
    username = root
    password = 
    name = campana
    type = mysql
    charset = utf8  

    Gracias señores...
  • "Veo varios errores de estructuras de tu codigo, usar un after_filter para validar si está logueado no es lo mas correcto. Una redirección para login incorrecto tampoco me parece lo más adecuadoashrey y cual seria lo adecuado?? 
  • Fijate, para verificar si estas logueado deberias usar initialize o el before_filter, ya que el after_filter se ejecuta una vez que se ha ejecutado la acción. Se supone que si el usuario no está logueado no debería ejecutarse la acción.
  • Si tienes toda la razon... Gracias...