Un poco de diseño de sistemas

kraneok

Hola gente que tal, hoy vengo con una dudita bastantes asquerosa xd.

Para mis proyectos utilizo CodeIgniter ( ya, ya, es una mierda, pásate a Symfony2, etc, xd ), pero yendo al grano debo realizar algunas preguntas.

Después ya de bastante tiempo programando, uno siempre intenta crear una forma de trabajar, una forma de organizar todo, bloques de código, archivos, etc, utilizar unas nomenclaturas explicativas pero a la misma vez no engorrosas, en fin, ir aliviando el trabajo para el futuro, con lo que se va aprendiendo con el tiempo y la experiencia.

Resulta que a mi, particularmente, y supongo que a mucha gente también, me gusta separar totalmente todos los sistemas de los que este compuesta una app web.

En este caso, me encuentro con que quiero dejar totalmente solo un controlador encargado del login de la web, básicamente este solo tendría dos métodos + su constructor.
Dichos métodos serían login y logout, bien, hasta aquí supongo que es sencillo reconocer el tema.

La cosa es que, a mi me gustaría, y de verdad ( seré tonto o algo así ) no consigo hacer, es que si estamos en la sección Nosotros de la página web, y hacemos login, posteriormente me redirija a Nosotros, que es donde estábamos.

Esto es fácil solucionarlo, siempre y cuando pasemos desde el form la sección en la que estamos.

<?php echo form_open("login/" . $this->uri->uri_string() . ""); ?>

<?php echo form_label('Usuario'); ?>
<?php echo form_error('email'); ?>
<input type="text" name="email" value="Sucorreo@...."><br /><br />

<?php echo form_label('Contraseña'); ?>
<?php echo form_error('password'); ?>
<input type="password" name="password"><br />

<input type="submit" value="Conectar">
<a href="registrarse">¿ Aún no es cliente ?</a>
<hr />
</form>

¿ Cual es el problema de esto ?, básicamente la URI, que queda bastante fea, pues queda algo como

dominio/login/nosotros

Cuando lo ideal sería

dominio/login/

Bien, después de esto me gustaría lanzar las siguientes preguntas.

1º ¿ Como habéis realizado vuestros sistemas de login en CI ( quien lo haya usado claro ), mirando desde capas, una clase sola, integrado el método en otro controlador, etc ?
2º ¿ Como podría solucionar esto de alguna forma ?

Gracias y espero que alguien pueda ayudarme.
Un besito.

eXtreM3

No entiendo tu pregunta. Primero dices esto

si estamos en la sección Nosotros de la página web, y hacemos login, posteriormente me redirija a Nosotros

y luego el resultado:

dominio/login/nosotros

No es ahí donde querías que te redirigiera si haces login desde Nosotros?

1 respuesta
kraneok

#2 Es que login es un controlador que solamente tiene dos métodos, de logear y de logout, el nosotros se lo he pasado yo para luego redirigir, pero es que no quiero que aparezca el "nosotros" xDD, queda muy muy feo.

MTX_Anubis

Haz que el formulario de login pase la url actual y luego redireccionas

Algo así:

<?php echo form_open("login/"); ?>

<?php echo form_label('Usuario'); ?>
<?php echo form_error('email'); ?>
<input type="hidde" name="current_url" value="<?php echo current_url(); ?>"><br /><br />
<input type="text" name="email" value="Sucorreo@...."><br /><br />

<?php echo form_label('Contraseña'); ?>
<?php echo form_error('password'); ?>
<input type="password" name="password"><br />

<input type="submit" value="Conectar">
<a href="registrarse">¿ Aún no es cliente ?</a>
<hr />
</form>
1 respuesta
txandy

Seguro que con php puedes acceder alguna variable $_SERVER que contiene la URL de donde viene el usuario.

1 respuesta
kraneok

#4 Es un poco sucio no ? o es válido hacerlo de esa forma ?
#5 Es una de las formas que he pensado, tengo que rebuscar a ver que tal.

PiradoIV

Para eso está URI Routing de CodeIgniter, trastea con application/config/routes.php

Oooops, ninja edit :ninjaedit:, no leí bien el post:

<?php
$this->load->library('user_agent');
$referrer = $this->agent->referrer();
// $referrer debería tener la URL desde donde entraste a login

Con esta URL, la puedes guardar como session, en un campo hidden, en un parámetro de URL "?onLogin=/otraurl" o cualquier cosita que se te ocurra. Yo elegiría una variable de sesión.

Si lo que quieres es la URL actual...

<?php
$this->load->helper('url');
$currentUrl = current_url();
1 respuesta
kraneok

#7 Bien voy a revisar el tema del routing, ya estuve tocando pero no conseguía nada. Voy a ver. Gracias.

1 respuesta
txandy

#8 muchas web lo pasan a saco por get. MV si no recuerdo mal lo hace así. Los foros vbulletin también.

1 respuesta
kraneok

#9 He conseguido hacerlo con la opción de PiradoIV, la verdad que creo que es la mas limpia y correcta.

Muchas gracias a todos:D

Usuarios habituales

  • kraneok
  • txandy
  • PiradoIV
  • MTX_Anubis
  • eXtreM3