Agusjar Posted February 6, 2013 Share Posted February 6, 2013 (edited) Buenas tardes. Hace poco buscaba como crear una landing page y las soluciones que me daban no me servían ya que se basaban en lo siguiente: 1.- Crear una página html 2.- Modificar el httaccess para que en vez de que arranque index.php arranque el html. El problema es que a la hora de realizar ciertas tareas el prestashop no funcionaba ya que se iba a la página principal que tenía httaccess y devolvía errores. Para solucionarlo realicé lo siguiente: 1.-Creo una tabla donde guardaré la IP de los usuarios que vallan entrando: CREATE TABLE `registro_ip` ( `reg_ip_id` int(11) NOT NULL auto_increment, `reg_date` date default NULL, `reg_ip` varchar(45) default NULL, PRIMARY KEY (`reg_ip_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ; Cada vez que un usuario acepte que es mayor de 18 años se realizará un insert en dicha tabla y después se deberá borrar con un cron. 2.-Creo una clase con las funciones (selects_web.class.php) para saber la ip del usuario y los inserts: <? include_once("conexion.class.php"); class selects_web{ //constructor var $con; function selects_web(){ $this->con=new DBManager; } function inserta_registro($v_ip){ if($this->con->conectar()==true){ // //Comprobamos si existe // if ($this->comprueba_registro_ip($v_ip) == "true") return "true"; else { // //Sino existe lo insertamos // $v_insert = "INSERT INTO registro_ip (reg_ip_id,reg_date,reg_ip) VALUES ('', '".date('Y-m-d H:i:s')."','".$v_ip."')"; //echo $v_insert; mysql_query ($v_insert); return "true"; } } } function comprueba_registro_ip($v_ip) { if($this->con->conectar()==true){ // $v_select = "select * from registro_ip where reg_ip like '".$v_ip."'"; $consulta_ip = mysql_query($v_select); $tabla = mysql_fetch_assoc($consulta_ip); // if (!empty($tabla["reg_ip"])) return "true"; else return "false"; } } function getRealIP() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP']; if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR']; return $_SERVER['REMOTE_ADDR']; } function refresca_registro_ip() { if($this->con->conectar()==true){ // $v_select = "select Date_format(reg_date,'%h') hora_insercion, Date_format(now(),'%h') hora_actual, reg_ip from registro_ip"; $consulta_ip = mysql_query($v_select); while ($tabla = mysql_fetch_assoc($consulta_ip)) { // if ($tabla["hora_insercion"] <> $tabla["hora_actual"]) mysql_query ("delete from registro_ip where reg_ip = '".$tabla["reg_ip"]."'"); } } } } ?> 3.- Creo la clase conexion.class.php para conectar a la base de datos: <?php class DBManager{ var $conect; var $BaseDatos; var $Servidor; var $Usuario; var $Clave; function DBManager(){ $this->Servidor = C_HOST; $this->Usuario = C_USUARIO; $this->Clave = C_PASSWORD; $this->BaseDatos = C_BD; } function conectar() { if(!($con=@mysql_connect($this->Servidor,$this->Usuario,$this->Clave))){ echo"<h1> [ ] Error al conectar a la base de datos</h1>"; exit(); } if (!@mysql_select_db($this->BaseDatos,$con)){ echo "<h1> [ ] Error al seleccionar la base de datos</h1>"; exit(); } $this->conect=$con; return true; } } ?> Nota: aquí cada uno que cambie los datos por los suyos. 4.- Modifico el index.php para que si el usuario no ha aceptado los terminos le salte la página. Por lo que después de la típica parrafada que pone prestashop eliminamos todo el código y lo sustituimos por este:: include "conexion/conexion.php"; include "clases/selects_web.class.php"; // $objselects_web = new selects_web; // if ($objselects_web->comprueba_registro_ip($objselects_web->getRealIP()) == "true") { require(dirname(__FILE__).'/config/config.inc.php'); Dispatcher::getInstance()->dispatch(); } else { header ("Location: [url="http://www.tupagina.com/entrada.php"]http://www.tupagina.com/entrada.php"[/url]); } 5.-Creo la página entrada.php: <? include "conexion/conexion.php"; include "clases/selects_web.class.php"; // $objselects_web = new selects_web; $v_inserta = $_GET["registro"]; // if (nvl_2($v_inserta, 'n') == 's') { $v_ip = $objselects_web->getRealIP(); // if ($objselects_web->inserta_registro($v_ip) == true ) { if ($_GET["email"] == 's') redireccion("http://tupaginaweb.com"); else redireccion("index.php"); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body bgcolor="#000000"> <table width="100%" border="0"> <tr> <td colspan="2" align="center"> </td> </tr> <tr> <td align="center" colspan="2" style="color:white"> </td> </tr> <tr> <td align="center" colspan="2" style="color:white"><p> </p></td> </tr> <tr> <td align="center"> <a href="index.php"><img src="images/entrar.png" id="entrar" /></a> <a href="" onclick="atras();return false;"><img src="images/salir.png" id="salir" /></a> </td> </tr> </table> </body> </html> 6.-Por último creamos un cron o job o como querais llamarlo para que cada X horas borre los datos. Para esto solo teneis que apuntar a la función refresca_registro_ip(). Y ya lo teneis, sin ningún tipo de problemas. Si os preguntais porque no uso cookies es debido a que ciertos navegadores las tienen deshabilitadas por lo que siempre les lanzaría la página entrada.php, y de esta forma me aseguro que siempre guarde el registro. Espero que ha alguién sirva de ayuda. Un saludo Edited February 6, 2013 by Agusjar (see edit history) Link to comment Share on other sites More sharing options...
thuxu007 Posted February 18, 2013 Share Posted February 18, 2013 Por que no creas un modulo para esto para la version 1.5? yo pago 5€ jeje Link to comment Share on other sites More sharing options...
sadlyblue Posted February 19, 2013 Share Posted February 19, 2013 I can read spanish, butnot write it... I have not tried your solution, but am thinking about it... But first, i want to give you an idea or two. Why not use a cookie to check the accept and instead of the html why not use a div in the index? Also, if the client already has the cookie, automatic login, it should see the warning... Thanks for sharing. Link to comment Share on other sites More sharing options...
Agusjar Posted February 19, 2013 Author Share Posted February 19, 2013 (edited) Hello sadlyblue. At the begining I thought to make it with cookies but they aren´t soported 100% on the web so if someone has disabled the cookies never get into our web so i dicede to use a table. In the index i thought the easy way (for me) to do it, you can do it on your way. P.D: English is not my first language so fogive me if anithyng is wrong Thanks Edited February 19, 2013 by Agusjar (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now