Jump to content

Como crear una página para mayores de 18 años


Recommended Posts

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 by Agusjar (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

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

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 by Agusjar (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...