Почему функция чистой строки не препятствует отправке html-ссылок в поле комментариев - PullRequest
0 голосов
/ 23 января 2019

Вот мой скрипт обработки формы.Тем не менее, я все еще получаю ссылки HTML в своем поле для комментариев.Может кто-нибудь объяснить, как работает функция чистой строки (или, скорее, почему она не работает)?

<?php
header('Content-Type: text/html; charset=utf-8');
if(isset($_POST['email'])) {
$email_to = "myemail address here";
$email_subject = "Request from my Website";
$email_header = "my email address here"; 
$name = $_POST['name']; // required 
$company = $_POST['phone']; // required 
$email_from = $_POST['email']; // required
$demowhat = $_POST['message']; // required
$email_message = "Form details below.\n\n";

function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);                }

$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "Phone: ".clean_string($company)."\n";
$email_message .= "Email Address: ".clean_string($email_from)."\n";
$email_message .= "Message: ".clean_string($demowhat)."\n";
// create email headers
$headers = 'From:'.$email_header."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers); 
?>

1 Ответ

0 голосов
/ 23 января 2019

Поскольку я пока не могу комментировать, это пойдет как ответ.

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

function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href"); //an array strings

return str_replace($bad,"",$string);  //str_replace(find,replace,string)
}
  1. str_replace принимает $ bad какаргумент find , поиск любых совпадающих строк из массива.

  2. str_replace занимает "" в качестве аргумента заменить аргумент, заменив все найденные строки ни на что "".

  3. str_replace принимает $ строку в качестве аргумента string , то есть строка, которая будет проверяться на любые совпадения из аргумента find .

Таким образом «очистка» строки $ , переданной ей от любого $ bad section.

Но что касается поля для комментариев, то выЯ не вижу кода, представляющего такую ​​коробку?Что вы можете сделать, это отображать результаты после каждого использования вашего clean_string () и убедитесь, что вы получите ожидаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...