Regresar a la página www.ComoCrearTuWeb.com
Resultados 1 al 7 de 7

Tema: Aceptar términos y condiciones

  1. #1
    Recien Llegado! Habitual
    Fecha de Ingreso
    27 mar, 12
    Mensajes
    10
    Poder de Reputación
    4

    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). Si es posible, que se envíe también la IP del cliente. Por si hay problemas después..
    Espero que puedan orientarme, sigo buscando por si hay algún módulo prefabricado.

    Un saludo y gracias de antemano.

  2. #2
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    1,515
    Poder de Reputación
    13
    Hola:

    La típica casilla que te pregunta si aceptas las condiciones sería así:

    html
    Código:
    <form action="procesar_datos.php" method="post">
      <label for="condiciones">Acepta las <a href="pagina_condiciones.html">condiciones</a> y blah blah</label><input type="checkbox" name="condiciones" />
      <input type="submit" value="Enviar" />
    </form>
    Los checkbox marcados se envían al archivo que procesa los datos como 'on', de lo contrario, el índice 'condiciones' no existirá en el arreglo $_POST. Entonces, la validación quedaría así:

    procesar_datos.php
    Código PHP:
    <?php
      
    if( isset( $_POST['condiciones'] ) ) {
        
    // El cliente aceptó las condiciones
      
    } else {
        
    // El cliente no aceptó las condiciones
      
    }
    ?>
    Aquí se valida el índice 'condiciones' para ver si existe dicho índice; si existe, significa que el usuario aceptó las condiciones, si no existe, entonces mostrarás un mensaje diciendo que debe aceptar las condiciones.

    Espero que te sirva, saludos.

  3. #3
    Recien Llegado! Habitual
    Fecha de Ingreso
    27 mar, 12
    Mensajes
    10
    Poder de Reputación
    4
    Gracias por la respuesta. La verdad que ando algo verde...entiendo en parte el código pero ¿Cómo añado las otras casillas y cómo hago para que se envíe a mi email y al del cliente? Y si es posible lo de la IP.

    Muchas gracias!

  4. #4
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    1,515
    Poder de Reputación
    13
    Hmmmm, a ver... ¿que tienes hecho hasta ahora? ¿Tienes el formulario con el que el usuario interactua? ¿Tienes el archivo que procesa los datos?

    La IP del cliente es fácil de obtener:

    Código:
    <?php $ip = $_SERVER['REMOTE_ADDR']; ?>
    Luego haces lo que quieras con la $ip.

    Saludos.

  5. #5
    Recien Llegado! Habitual
    Fecha de Ingreso
    27 mar, 12
    Mensajes
    10
    Poder de Reputación
    4
    Pues mira, lo hice yo así que no se si estará bien.

    Este es el HTML con el formulario:
    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">
      </p>
      <p>Enviar
        <input type="submit" name="enviar" id="enviar" value="Enviar">
      </p>
    </form>
    Y este el php donde se procesan los datos y se envían:
    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'];
    
    $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 .= "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 = 'contacto@web.es';
    $asunto = 'Cliente nuevo';
    
    mail($para, $asunto, utf8_decode($mensaje), $header);
    
    echo 'Mensaje enviado';
    
    ?>
    Como verás ya puse lo de la ip, lo cual va genial!

    Voy a intentar insertar en ese código lo que me pusiste en el primer post, espero no liarme!



    EDITO:

    Vale así queda.
    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>

    y 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 = 'contacto@web.es';
    $asunto = 'Cliente nuevo';
    
    mail($para, $asunto, utf8_decode($mensaje), $header);
    
    echo 'Mensaje enviado';
    
    ?>
    Va genial, lo único que me gustaría que la casilla de aceptar fuese obligatoria, al igual que todos los campos de texto. ¿Cómo sería? Muchas gracias!
    Última edición por lauramendez; 27/03/2012 a las 20:07

  6. #6
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    1,515
    Poder de Reputación
    13
    Ok, el formulario HTML está bien y para hacer que la casilla de condiciones sea obligatoria el código queda así:

    Código PHP:
    <?php
      
    // Primero debes verificar que la casilla de las condiciones fue marcada:
      
    if( isset( $_POST['condiciones'] ) && $_POST['condiciones'] == 'on' ) { // El cliente acepta las condiciones, entonces se envía el e-mail:
        // Nunca utilices las variables sin limpiarlas. Utiliza la función strip_tags( $cadena_texto ) para eliminar algunas etiquetas peligrosas
        
    $nombre strip_tags$_POST['nombre'] );
        
    $apellidos strip_tags$_POST['apellidos'] );
        
    $dni strip_tags$_POST['dni'] );
        
    $mail strip_tags$_POST['mail'] );
        
    $telefono strip_tags$_POST['telefono'] );
        
    $direccion strip_tags$_POST['direccion'] );
        
    $ip $_SERVER['REMOTE_ADDR'];
        
        
    $eol PHP_EOL// PHP_EOL devuelve el salto de línea correspondiente. \r\n es sólo para Windows.
        // Puedes enviar mensajes con HTML también. Por ejemplo:
        // $mensaje = "<p style='color: green;'>Mi mensaje</p>";

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

        
    $subject 'Cliente nuevo';
        
    $to 'contacto@web.es';
        
    $CC $mail// CC significa Carbon Copy (envía copias del email a los destinatarios especificados).
        // BCC significa Blind Carbon Copy y hace lo mismo que CC, sólo que oculta los email de los destinatarios en los correos.
        //$BCC = $mail; // Quita el comentario de esta línea si quieres usar la copia ciega (Blind Carbon Copy) y comenta la línea de $CC.
      
    } else { // El cliente no aceptó las condiciones:
        
    echo "<p>Aquí pondrías el mensaje si el cliente no acepta las condiciones</p>";
      }

      
    // Esta función se encarga de enviar el correo (no modifiques nada, pues tal cual esta funciona correctamente):
      
    function sendit($from ''$to ''$subject 'Sin asunto'$html_msg ''$plain_msg ''$CC ''$BCC ''$sIP '') {
        
    $eol     PHP_EOL;
        if(
    $sIP == '')
          
    $sIP md5($subject.date('dmY'));
        if(
    $from == '')
          
    $from '<noreply@' $_SERVER['SERVER_NAME'] . '>'.$eol;
        
    $header  'From: ' $from $eol;
            
    // Responder a:
        
    $header .= 'Reply-To: ' $from $eol;
            
    // Responder acuse de recibo a:
        
    $header .= 'Return-Receipt-To: ' $from $eol;
            
    // Responder:
        
    $header .= 'Return-Path: ' $from $eol;
            
    // Con copia:
        
    if($CC != '')
          
    $header .= 'CC: ' $CC $eol;
            
    // Con copia ciega (Blind Carbon Copy, conceal ):
        
    if($BCC != '')
          
    $header .= 'BCC: ' $BCC $eol;

        
    $header .= 'Message-ID: <' time() . ' no-reply@' $_SERVER['SERVER_NAME'] . '>' $eol;
        
    $header .= 'Content-Type: multipart/alternative; boundary="' $sIP'"' $eol $eol;
        
    $header .= 'MIME-Version: 1.0' $eol;
        
        
    // PLAIN TEXT
        
    $msg  "Content-Type: multipart/alternative".$eol;
        
    $msg .= '--' .$sIP.$eol;
        
    $msg .= 'Content-Type: text/plain; charset=utf-8' .$eol;
        
    $msg .= 'Content-Transfer-Encoding: 7bit' .$eol.$eol;
        
    $msg .= $plain_msg $eol $eol;
        
    $msg .= 'Para ver correctamente este mensaje, usted necesita activar el contenido HTML.'.$eol;
        
    $msg .= 'Si usted está leyendo esto, por favor actualice su cliente de correo electrónico o active el contenido HTML.'.$eol;
        
        
    // HTML MESSAGE
        
    $msg .= '--'.$sIP.$eol;
        
    $msg .= 'Content-Type: text/html; charset=utf-8'.$eol;
        
    $msg .= 'Content-Transfer-Encoding: 7bit'.$eol.$eol;
        
    $msg .= $html_msg $eol $eol;
        
    $msg .= '--' .$sIP.$eol;

        
    ini_set('sendmail_from'$from);
        if (
    mail($to$subjectwordwrap($msg70$eol), $header)) {
          @
    ini_restore('sendmail_from');
          return 
    true;
        }
        else {
          @
    ini_restore('sendmail_from');
        }
        
        return 
    false;
      }
    ?>
    Si los comentarios no son suficiente explicación avísame :D.

    Saludos y suerte.

  7. #7
    Recien Llegado! Habitual
    Fecha de Ingreso
    27 mar, 12
    Mensajes
    10
    Poder de Reputación
    4
    Te agradezco mucho la colaboración. Con tiempo que tuve lo dejé así:

    Código PHP:
    <?php
    $nombre 
    $_POST['nombre'];
    $apellidos $_POST['apellidos'];
    $dni $_POST['dni'];
    $mail $_POST['mail'];
    $telefono $_POST['telefono'];
    $direccion $_POST['direccion'];
    $ip $_SERVER['REMOTE_ADDR'];

    $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 'contacto@web.es';
    $asunto 'Cliente nuevo';

    mail($para$asuntoutf8_decode($mensaje), $header);

    echo 
    'Mensaje enviado';

    ?>
    Lo otro lo dejé con javascript.

    Lo que ocurre es que me han recomendado filtrar las variables para evitar inyecciones. ¿Saben como sería? No estoy nada puesta en eso

    Saludos!

Temas Similares

  1. Aceptar terminos y condiciones en el registro de usuarios
    Por AmandaFdez en el foro Sistema de Registro de Usuarios
    Respuestas: 6
    Último Mensaje: 15/11/2011, 19:31
  2. Respuestas: 3
    Último Mensaje: 27/05/2008, 10:52
  3. DICCIONARIO DE TERMINOS PAINT SHOP PRO
    Por labrujidesigns en el foro Paint Shop Pro
    Respuestas: 0
    Último Mensaje: 12/03/2007, 01:04
  4. Guia: Cambiar las condiciones de registro
    Por -ZAP- en el foro Foros
    Respuestas: 1
    Último Mensaje: 20/01/2007, 20:53

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •