Foros del Web » Programando para Internet » PHP »

Aceptar términos y condiciones

Estas en el tema de Aceptar términos y condiciones en el foro de PHP en Foros del Web. Hola a tod@s, Estoy creando una página sencilla para dos productos que estoy vendiendo. Como son solo dos no he instalado ningún ecommerce ya que ...
  #1 (permalink)  
Antiguo 27/03/2012, 06:15
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 3 meses
Puntos: 2
Aceptar términos y condiciones

Hola a tod@s,

Estoy creando una página sencilla para dos productos que estoy vendiendo. Como son solo dos no he instalado ningún ecommerce ya que no merece la pena.

Tengo todo listo, solo me falta que los clientes acepten unos "términos y condiciones" antes de proceder a la compra.

La cosa sería así:

Ellos entran a la página de términos y condiciones, rellenan unos datos (nombre, email, dni, dirección, localidad y provincia), únicamente si aceptan en la casilla pueden hacer click en continuar, enviando estos datos con los términos y condiciones a mi y al cliente y les llevará a otra página que yo elija (obviamente la de pago)
Espero que puedan orientarme, sigo buscando por si hay algún módulo prefabricado.

Un saludo y gracias de antemano.


EDIT: He pensado que por seguridad, si es posible, que se envíe también la IP del cliente. Por si hay problemas después..

Última edición por srwik; 27/03/2012 a las 06:23
  #2 (permalink)  
Antiguo 27/03/2012, 08:00
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Aceptar términos y condiciones

y cual sería tu consulta específicamente ?

si es lo de poner un checkbox en el formulario eso es tema de HTML
y si es por validar ANTES de enviar el formulario sería tema de Javascript
ahora si quieres hacer una POST verificación de que este seleccionado el chekbox basta con consultar si el valor desde php

Código HTML:
Ver original
  1. <form action="" method="post">
  2.     <input type="checkbox" name="acepto" />
  3.     <input type="submit" />
  4. </form>
Código PHP:
<?php 
if (isset($_POST['acepto'])) {
    echo 
'here we go!';
}
saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 27/03/2012, 14:08
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Aceptar términos y condiciones

Gracias por la respuesta. He intentado hacer uno que por el momento no va nada mal. Pero me gustaría que las casillas a rellenar fuesen obligatorias y el aceptar condiciones también.

Por el momento va así.

HTML:
Código:
<form name="form1" method="post" action="enviar.php">
  <p>
    <label for="nombre">Nombre</label>
    <input type="text" name="nombre" id="nombre">
    <br>
    <label for="apellidos">Apellidos</label>
    <input type="text" name="apellidos" id="apellidos">
    <br>
    <label for="dni">NIF/DNI</label>
    <input type="text" name="dni" id="dni">
    <br>
    <label for="mail">Email</label>
    <input type="text" name="mail" id="mail">
    <br>
    <label for="telefono">Teléfono</label>
    <input type="text" name="telefono" id="telefono">
    <br>
    <label for="direccion">Dirección</label>
    <input type="text" name="direccion" id="direccion">
    <br><label for="condiciones">Acepta las <a href="pagina_condiciones.html">condiciones</a> y blah blah</label><input type="checkbox" name="condiciones" />
  </p>
  <p>Enviar
    <input type="submit" name="enviar" id="enviar" value="Enviar">
  </p>
</form>
PHP:
Código:
<?php
$nombre = $_POST['nombre'];
$apellidos = $_POST['apellidos'];
$dni = $_POST['dni'];
$mail = $_POST['mail'];
$telefono = $_POST['telefono'];
$direccion = $_POST['direccion'];
$ip = $_SERVER['REMOTE_ADDR'];
  if( isset( $_POST['condiciones'] ) ) { 
    // El cliente aceptó las condiciones 
  } else { 
    // El cliente no aceptó las condiciones 
  } 

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . ", con apellidos " . $apellidos . " \r\n";
$mensaje .= "Condiciones: " . $_POST['condiciones'] . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Dni: " . $_POST['dni'] . " \r\n";
$mensaje .= "Teléfono: " . $_POST['telefono'] . " \r\n";
$mensaje .= "Dirección: " . $_POST['direccion'] . " \r\n";
$mensaje .= "Su ip: " . $ip . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';
$asunto = 'Cliente nuevo';

mail($para, $asunto, utf8_decode($mensaje), $header);

echo 'Mensaje enviado';

?>
Gracias de antemano!
  #4 (permalink)  
Antiguo 27/03/2012, 14:30
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Aceptar términos y condiciones

aunque la validación en el servidor es la mas importante, la validación en el cliente hace que el usuario no se desespere a la hora de enviar el form. en el servidor, Hidek1 , ya te ha dado una idea. ahora, qué quieres hacer??
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 27/03/2012, 17:26
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Aceptar términos y condiciones

Pues como ya dije, me gustaría que las casillas a rellenar fuesen obligatorias y el aceptar condiciones también.

Sigo investigando!

EDIT: lo intenté utilizando en php esto:

Código:
if(empty($_POST['dni'])) {
     echo "El campo dni está vacio"; 
}
Lo que ocurre es que al ser en php los datos se envían igualmente y aunque de el error el mensaje queda enviado.
Quizás lo suyo sea javascript con una función de validez y alertas con retorno...no lo manejo bien pero voy a intentarlo y os cuento :)

Última edición por srwik; 27/03/2012 a las 17:36
  #6 (permalink)  
Antiguo 27/03/2012, 17:45
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Aceptar términos y condiciones

a eso me refería

Cita:
con php ---> if(isset($_POST['control']) && $_POST['control'] != '')
con javascript ---> if(document.getElementById('control').value == '')
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 27/03/2012, 17:49
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Aceptar términos y condiciones

Pues debe ser la hora que no entendí la primera vez tu post, a que te ibas a referir si no!
Aquí lo dejo, mañana lo intento con menos sueño :P

Mil gracias!
  #8 (permalink)  
Antiguo 27/03/2012, 17:56
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Aceptar términos y condiciones

lo que pasa es que con php tienes que darle el curso correcto, es decir, hacer esto
Código PHP:
Ver original
  1. if(empty($_POST['dni'])) {
  2.      echo "El campo dni está vacio"; //no envia datos
  3. }else{
  4.     mail(); //si envia datos
  5. }

como ves no es php el problema, es que no lo estas atacando como debe ser.
  #9 (permalink)  
Antiguo 28/03/2012, 04:56
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Aceptar términos y condiciones

Bueno pues ya está listo. Comiéndome unos cuantos tutos de javascript y tras mil intentos ha quedado así el HTML que es lo único que he vuelto a modificar:

Código:
<script>

function valida_envia(){
	//valido el nombre
	if (document.fvalida.nombre.value.length==0){
		alert("Tiene que escribir su nombre")
		document.fvalida.nombre.focus()
		return 0;
	}
	
	//Apellidos
	if (document.fvalida.apellidos.value.length==0){
		alert("Tiene que escribir sus apellidos")
		document.fvalida.apellidos.focus()
		return 0;
	}
	
		//NIF/DNI
	if (document.fvalida.dni.value.length==0){
		alert("Tiene que escribir su NIF/DNI")
		document.fvalida.dni.focus()
		return 0;
	}
	
		//EMAIL
	if (document.fvalida.mail.value.length==0){
		alert("Tiene que escribir su email")
		document.email.nombre.focus()
		return 0;
	}
	
		//TELÉFONO
	if (document.fvalida.telefono.value.length==0){
		alert("Tiene que escribir su teléfono")
		document.fvalida.telefono.focus()
		return 0;
	}
	
		//DIRECCIÓN
	if (document.fvalida.direccion.value.length==0){
		alert("Tiene que escribir su dirección")
		document.fvalida.direccion.focus()
		return 0;
	}
	
			//CONDICIONES
	if (document.fvalida.condiciones.checked==false){
		alert("Tiene que aceptar las condiciones.")
		document.fvalida.condiciones.focus()
		return 0;
	}

	//el formulario se envia
	alert("Todo correcto.");
	document.fvalida.submit();
}
</script>
</head>

<body>
<form name="fvalida" method="post" action="enviar.php">
  <p>
    <label for="nombre">Nombre</label>
    <input type="text" name="nombre" id="nombre">
    <br>
    <label for="apellidos">Apellidos</label>
    <input type="text" name="apellidos" id="apellidos">
    <br>
    <label for="dni">NIF/DNI</label>
    <input type="text" name="dni" id="dni">
    <br>
    <label for="mail">Email</label>
    <input type="text" name="mail" id="mail">
    <br>
    <label for="telefono">Teléfono</label>
    <input type="text" name="telefono" id="telefono">
    <br>
    <label for="direccion">Dirección</label>
    <input type="text" name="direccion" id="direccion">
    <br><label for="condiciones">Acepta las <a href="pagina_condiciones.html">condiciones</a> y blah blah</label><input type="checkbox" name="condiciones" />
  </p>
  <p>
    <input type="button" value="Enviar" onclick="valida_envia()" >
  </p>
</form>

Es justo lo que quería. Agradezco mucho vuestro apoyo!
  #10 (permalink)  
Antiguo 28/03/2012, 05:52
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Aceptar términos y condiciones

no es la manera correcta de validar y enviar un formulario del lado del cliente. tal y como lo tienes, el envió del formulario está supeditado a que javascript esté activado. lo cual es una pésima idea. en lugar de usa un input button, usa un input submit. de tal modo que quedaría algo así
Cita:
<form name="fvalida" method="post" action="enviar.php" onsubmit="return valida_envia(this)">
.......
<input type="submit" value="Enviar" />
por otro lado, la validación de los controles
Cita:
function valida_envia(val){
//valido el nombre
if (val.nombre.value== ''){
alert("Tiene que escribir su nombre")
val.nombre.focus();
return 0;
}

//Apellidos
else if (val.apellidos.value== ''){
alert("Tiene que escribir sus apellidos")
val.apellidos.focus();
return 0;
}
.......

} else {
return true;
}
}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #11 (permalink)  
Antiguo 29/03/2012, 04:07
 
Fecha de Ingreso: enero-2010
Mensajes: 99
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Aceptar términos y condiciones

Voy a probar a ver que tal. Te lo agradezco

¿Me recomiendan filtrar variables para evitar inyecciones?

Saludos
  #12 (permalink)  
Antiguo 29/03/2012, 05:33
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Aceptar términos y condiciones

Cita:
Iniciado por srwik Ver Mensaje
Voy a probar a ver que tal. Te lo agradezco

¿Me recomiendan filtrar variables para evitar inyecciones?

Saludos
siempre, pero eso es del lado del servidor
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: aceptar, condiciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:43.