как санкционирование формата электронной почты с php

привет у меня формуляр контакта есть и мне удалось санкционировать, что поля были наполнены, но не, как способствовать тому, чтобы у электронной почты был правильный формат и а он бросал ошибку, как я могу проверять, что он содержал контент в этом поле, или как делается это утверждение? Я перемещаю то, что у меня есть:

HTML

<div id="contact_form">
                <form action="confFormulario3.php" id="form1" name="form1" method="post">
                    <input type="text" id="email" class="boton" name="email" placeholder="Tu email">
                    <input type="text" id="nombre" class="boton" name="nombre" placeholder="Cómo te llamas">
                    <textarea name="mensaje" id="mensaje" class="boton"  placeholder="En qué podemos ayudarte?"></textarea>
                    <input type="submit" name="Submit" id="buttonEnviar" class="boton" value="ENVIAR">
                </form>
            </div>

PHP

<?php
/*Capturamos las variables del POST con operadores ternarios*/
$email=   ( empty($_POST["email"])   )  ?  NULL : $_POST["email"];
$name=    ( empty($_POST["nombre"])    )  ?  NULL : $_POST["nombre"];
$message= ( empty($_POST["mensaje"]) )  ?  NULL : $_POST["mensaje"];
/*Verificamos que los tres datos fueron posteados*/
if ($email && $name && $message){
   $para = 'timondigitalweb@gmail.com';
   $asunto = "mensaje de la web de el punto!!!!!!!!!!!!";
   $mailheader = "From: ".$email."\r\n";
   $mailheader .= "Reaply-To:".$email."\r\n";
   $mailheader .= "Content-type: text/html; charset=utf-8\r\n";

   $MESSAGE_BODY = "Nombre: ".$name."\n";
   $MESSAGE_BODY .= "\n<br>Email: ".$email."\n";
   $MESSAGE_BODY .= "\n<br>Mensaje: ".nl2br($message)."\n";

   mail($para, $asunto, $MESSAGE_BODY, $mailheader) or die("error al enviar mensaje, intente nuevamente");
   echo "<script>
            alert('Gracias por tu contacto! en breves nos estaremos comunicando 1');

        </script>";


}else{
    //Aquí puedes también redirigir con un mensaje de error
    echo "<script>alert('Controla la informacion ingresada, el mensaje NO se ha enviado');</script>";
}
?>
2
задан 18.03.2019, 15:56
3 ответа

Чтобы решать проблему, которую ты описываешь, есть два способа это делать. Первые

opciГіn:

Для этого случая mГЎs простой, который ты можешь делать, состоит в том, чтобы менять признак неудара в лунку где digita электронная почта этой формы type="text" на type="email". Вторые

<input type="email" id="email" class="boton" name="email" placeholder="Tu email">

opciГіn

Использовать plugin Хкери Валидатион, с которым ты санкционируешь формуляр и ademГЎs этого смоги показывать твои собственные сообщения ошибки.

AquГ - оставил тебя cГіdigo как quedarГ - в твой формуляр применяя plugin Хкери Валидатион

1В ° Иметь формульный HTML

<div id="contact_form">
  <form action="confFormulario3.php" id="form1" name="form1" method="post">
    <input type="text" id="email" class="boton" name="email" placeholder="Tu email">
    <input type="text" id="nombre" class="boton" name="nombre" placeholder="Cómo te llamas">
    <textarea name="mensaje" id="mensaje" class="boton"  placeholder="En qué podemos ayudarte?"></textarea>
    <input type="submit" name="Submit" id="buttonEnviar" class="boton" value="ENVIAR">
  </form>
</div>

2В ° Создавать файл Javascript, где реализуют соответствующие утверждения, в который llamarГ© validacion.js

$(function(){
  $('#form1').validate({
    //En rules defines los campos que quieres validar, con el nombre de los id de cada input
      rules: {
        email: {
          required: true,
          email: true
        },
        nombre: {
          required: true,
          minlength: 3
        }
      },
      //En messages describes el mensaje que quieres el usuario visualice por cada cada validación que aplicaste en rules
      messages: {
        email: {
          required: "Este campo es obligatorio",
          email: "El email no tiene el formato correcto"
        },
        nombre: {
          required: "Este campo es obligatorio",
          minlength: "El nombre debe tener al menos 3 caracteres"
        }
      }
}
});

ЗАМЕЧАЕТ: Для того, чтобы это функционировало, ты не забыл включить книжный магазин plugin и сделать вызов validacion.js внутри файла, где находится твой формульный HTML, противоположный случай не funcionarГЎ. Я рекомендую тебе читать ее documentaciГіn Ваш pГЎgina чиновник, так как пример, который я показываю тебе, что-то bГЎsico многих вещей, которые ты можешь делать.

https://jqueryvalidation.org/documentation /

3
ответ дан 02.12.2019, 05:29
  • 1
    когда вы говорите " включать книжный магазин plugin" к чему вы передаете тебя? поскольку я включаю ее. У меня книжный магазин JQUERY есть, не, если это то же самое?? – Fernanda 18.03.2019, 16:29
  • 2
    @Fernanda Jquery и Хкери Валидате не то же самое, но plugin зависит от Jquery для того, чтобы он реализовал Вашу работу, если уже у тебя есть Jquery, ты идешь из-за хорошей дорожки. Сейчас, когда ты нуждаешься в том, чтобы сделать он состоит в том, чтобы загружать librerí которую находят в соединении, которое я поместил в мой ответ, уже в pá gina ты направляешься к pestañ в Home, где ты увидишь первой ví deo как включать plugin и ниже ссылка разряда. – Diego Gallo 18.03.2019, 17:06
  • 3
    ok, в немного я это тестирую и рассказываю тебе, как он я пошел. спасибо за твой интерес – Fernanda 18.03.2019, 18:26
  • 4
    я функционирую совершенно, большое спасибо – Fernanda 18.03.2019, 19:39
  • 5
    Гениальный, как хорошо, что он тебе был полезен. – Diego Gallo 18.03.2019, 21:17

В этом типе случаев годится делать одну двойной validaciГіn: стороны клиента и стороны сервера.

Из стороны клиента

С HTML5 существует тип email для элементов input, с которыми ты бы это помещал:

 <input type="email" id="email" class="boton" name="email" placeholder="Tu email">

Ты validarГЎ электронная почта стороны клиента.

Из стороны сервера

ты Можешь использовать filter_var, чтобы санкционировать электронную почту.

Ввиду того, что filter_var возвращает санкционированные данные или FALSE, ты можешь захватывать следовательно электронную почту asГ - прямо:

$email =  filter_var(

В этом типе случаев годится делать одну двойной validaciГіn: стороны клиента и стороны сервера.

Из стороны клиента

С HTML5 существует тип email для элементов input, с которыми ты бы это помещал:

[110]

Ты validarГЎ электронная почта стороны клиента.

Из стороны сервера

ты Можешь использовать filter_var, чтобы санкционировать электронную почту.

Ввиду того, что filter_var возвращает санкционированные данные или FALSE, ты можешь захватывать следовательно электронную почту asГ - прямо:

[111]

И потом if quedarГ - в, поскольку это у тебя есть оригинально в cГіdigo:

if ($email && $name && $message){
    // ... código
} else {
    // ... código
}
POST["email"], FILTER_VALIDATE_EMAIL);

И потом if quedarГ - в, поскольку это у тебя есть оригинально в cГіdigo:

if ($email && $name && $message){
    // ... código
} else {
    // ... código
}
6
ответ дан 02.12.2019, 05:29
  • 1
    я сделал изменения, которые ты предлагаешь мне, и сейчас санкционируй mail правильно, но всегда он показывает мне, что есть ошибка, что я должен проверять данные.... – Fernanda 18.03.2019, 16:19
  • 2
    ¿ Qué сообщение выходит точно @Fernanda, будьте: error al enviar mensaje, intente nuevamente или этот Controla la informacion ingresada, el mensaje NO se ha enviado? – A. Cedano 18.03.2019, 16:23
  • 3
    проконтролируй вошедшую информацию, сообщение не ах посланный – Fernanda 18.03.2019, 16:30
  • 4
    @Fernanda, кажется, что ты совершил algú n ошибка распределяя переменные, сравнивает твой có я говорю с моим ответом как está сейчас. Если ты хочешь, отложи переменные с var_dump($email); и var_dump($name); и var_dump($message);, чтобы видеть в cuá l он (принадлежит) им у тебя есть проблема. И проверь, что if quedó таким образом: if ($email && $name && $message){ – A. Cedano 18.03.2019, 16:32
  • 5
    это у ошибки было в менянии $mail =... на оригинал, который у меня был, и не из-за оригинала твоего ответа. Тысяча спасибо функционировала совершенно – Fernanda 18.03.2019, 19:40

QuizГЎs это смогло стоить тебе для того, чтобы сделать утверждения, в которых ты нуждаешься, и tambiГ©n, чтобы вводить в твоей базе данных:

HTML (contacto.html)

<form action="javascript:void(0);" method="post" id="form-contacto">
  <input type="text" id="nombre" name="nombre" placeholder="Nombre" onkeypress="return alfabetico(event);">
  <input type="email" id="email" name="email" placeholder="Mail">
  <input type="submit" id="enviar" name="enviar" value="Enviar">
</form>

JS (validaciones.js)

$(document).ready(function() { 

    $("#enviar").click(function(e){
        e.preventDefault();
        $("#form-contacto").submit();
    });

    $("#form-contacto").validate({
        rules: {
            nombre: {
                required: true
            },
            email: {
                required: true,
                emailExt: true
            }
        },
        messages: {
            nombre: "Ingrese Nombre",
            email: {
                required: "Ingrese Email",
                email: "Ingrese un Email válido"
            }
        },
        submitHandler: function (form) {
            $('#enviar').attr("disabled", true);
            enviarForm();
        }   
    });
});

function enviarForm(){
    var parametros = {
        nombre: $('#nombre').val(),
        email: $('#email').val()
    }

    $.ajax({
        data:  parametros,
        url:  'procesar.php', /* Aqui mandas a tu archivo php para insertar los datos */
        type:  'post',
        async: false,
        success:  function (response) {
            /* Puedes elegir entre mostrar un alert o llevarlo a una paginas estatica des respuesta*/
            alert ("Tus datos se enviaron de forma exitosa!");
        },
        error : showError
    });
}

function showError(XMLHttpRequest, textStatus, errorThrown) {
    alert("Ha ocurrido un error procesando la información");
}

/* Validador alfabetico */
function alfabetico(e){
    kc=e.keyCode?e.keyCode:e.which;
    if(kc<32) return true;
    kc=String.fromCharCode(kc);
    if(/[^a-zA-ZüÜáéíóúÁÉÍÓÚñÑ ]/.test(kc)) return false;
}
/* Validador de Correo */
jQuery.validator.addMethod("emailExt", function(value, element, param) {
    return value.match(/^[a-zA-Z0-9_\.%\+\-]+@[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,}$/);
},'Ingrese un Email válido');

В твоем файле php только достаточен того, что ты взял данные и они ввел внутри твоей базы данных остальные (утверждения) dГ©jalo в файл JS. Я надеюсь, что он подает тебя!

0
ответ дан 02.12.2019, 05:29