Как использовать функцию htmlspecialchars() в контактной форме php (с использованием функции mail())

У меня есть контактная форма php, которая отправляет данные по электронной почте и хотела бы ее дезинфицировать. Я понимаю, что метод php для этого выполняется с помощью функции htmlspecialchars().

Я новичок в php и не могу понять, как применить это к моему контакту из данных? Я помещаю в него свою функцию mail()?

Любая помощь будет потрясающей.

PHP

if($_POST['submit']) {

    if(!$_POST['name']) {
        $error="<br>- Please enter your name";
    }
    if(!$_POST['email']) {
        $error.="<br>- Please enter your email";
    }
    if(!$_POST['telephone']) {
        $error.="<br>- Please enter your telephone number";
    }
    if(!$_POST['message']) {
        $error.="<br>- Please enter your message";
    }
    if(!$_POST['radio']) {
        $error.="<br>- Please confirm you agree to the Privacy Policy";
    }

    if ($error) {
        $result='<div class="alert error">Whoops, there is an error. Please correct the following: '.$error.'</div>';
    } else {
        mail("[email protected]", "Contact Message", "Name: ".$_POST['name']."
        Email: ".$_POST['email']."
        Telephone: ".$_POST['telephone']."
        Company: ".$_POST['company']."
        Budget: ".$_POST['budget']."
        Message: ".$_POST['message']);

        {
            $_POST= array();
            $result='<div class="alert thankyou" role="alert">THANK YOU! WE\'LL BE IN TOUCH SHORTLY...</div>';
        }

    }
}

person The Chewy    schedule 21.01.2019    source источник


Ответы (1)


Функция htmlspecialchars() используется для экранирования специальных символов для предотвращения возможных XSS-атак, если вы используете эту функцию правильно. Вы можете использовать эту функцию для message.

Например:

mail("[email protected]", "Contact Message", "Name: ".htmlspecialchars($_POST['name'])."
    Email: ".htmlspecialchars($_POST['email'])."
    Telephone: ".htmlspecialchars($_POST['telephone'])."
    Company: ".htmlspecialchars($_POST['company'])."
    Budget: ".htmlspecialchars($_POST['budget'])."
    Message: ".htmlspecialchars($_POST['message']));

    {
        $_POST= array();
        $result='<div class="alert thankyou" role="alert">THANK YOU! WE\'LL BE IN TOUCH SHORTLY...</div>';
    }

Любой html, который у вас есть в вашем сообщении, будет экранирован. Я предлагаю вам прочитать эту статью, чтобы получить полное представление о том, как правильно использовать эту функцию. При правильном использовании достаточно ли htmlspecialchars для защиты от все XSS?

person Variable    schedule 21.01.2019
comment
@TheChewy Вы изменили [email protected] на свой адрес электронной почты? См. руководство для mail(). - person Variable; 21.01.2019