Ответы пользователя по тегу PHP
  • Как предотвратить спам через форму обратной связи?

    Zakonoposlushniy
    @Zakonoposlushniy Автор вопроса
    Решил проблему таким способом :
    В форму добавил поле
    <input id="check" name="check" type="hidden" value="" />

    Потом в кнопку, через которую идёт отправка, добавил
    onclick="document.getElementById('check').value = 'secretcode';"

    Вышло что-то вроде этого
    <button onclick="document.getElementById('check').value = 'secretcode';" type="submit">Отправить</button>

    И в php-обработчике, добавил это
    if ($_POST['check'] != 'secretcode') exit('Spam decected');


    Возможно кому-то поможет.
    Удачи!
    Ответ написан
    9 комментариев
  • Не работает форма обратной связи. Что делать?

    Zakonoposlushniy
    @Zakonoposlushniy Автор вопроса
    Вот 3 файла формы :
    - Form-u388 - это походу основной
    - Form_throttle - я не знаю за что он отвечает
    - Form_check -я не знаю за что он отвечает

    Вот файл "Form - u388" :
    <?php 
    /* 	
    If you see this text in your browser, PHP is not configured correctly on this webhost. 
    Contact your hosting provider regarding PHP configuration for your site.
    */
    
    require_once('form_throttle.php');
    
    if ($_SERVER['REQUEST_METHOD'] == 'POST') 
    {
    	if (formthrottle_too_many_submissions($_SERVER["REMOTE_ADDR"]))
    	{
    		echo '{"MusePHPFormResponse": { "success": false,"error": "Too many recent submissions from this IP"}}';
    	} 
    	else 
    	{
    		emailFormSubmission();
    	}
    } 
    
    function emailFormSubmission()
    {
    	$to = 'caruza@catridge.xyz';
    	$subject = 'Отправка Форма Домашняя страница';
    	
    	$message = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><title>' . htmlentities($subject,ENT_COMPAT,'UTF-8') . '</title></head>';
    	$message .= '<body style="background-color: #ffffff; color: #000000; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: 18px; font-family: helvetica, arial, verdana, sans-serif;">';
    	$message .= '<h2 style="background-color: #eeeeee;">Отправка новой формы</h2><table cellspacing="0" cellpadding="0" width="100%" style="background-color: #ffffff;">'; 
    	$message .= '<tr><td valign="top" style="background-color: #ffffff;"><b>Имя:</b></td><td>' . htmlentities($_REQUEST["custom_U412"],ENT_COMPAT,'UTF-8') . '</td></tr>';
    	$message .= '<tr><td valign="top" style="background-color: #ffffff;"><b>Электронная почта:</b></td><td>' . htmlentities($_REQUEST["Email"],ENT_COMPAT,'UTF-8') . '</td></tr>';
    	$message .= '<tr><td valign="top" style="background-color: #ffffff;"><b>Сообщение:</b></td><td>' . htmlentities($_REQUEST["custom_U417"],ENT_COMPAT,'UTF-8') . '</td></tr>';
    
    	$message .= '</table><br/><br/>';
    	$message .= '<div style="background-color: #eeeeee; font-size: 10px; line-height: 11px;">Формы, отправленные с веб-сайта: ' . htmlentities($_SERVER["SERVER_NAME"],ENT_COMPAT,'UTF-8') . '</div>';
    	$message .= '<div style="background-color: #eeeeee; font-size: 10px; line-height: 11px;">IP-адрес посетителя: ' . htmlentities($_SERVER["REMOTE_ADDR"],ENT_COMPAT,'UTF-8') . '</div>';
    	$message .= '</body></html>';
    	$message = cleanupMessage($message);
    	
    	$formEmail = cleanupEmail($_REQUEST['Email']);
    	$headers = 'From:  caruza@catridge.xyz' . "\r\n" . 'Reply-To: ' . $formEmail .  "\r\n" .'X-Mailer: Adobe Muse 7.2.232 with PHP/' . phpversion() . "\r\n" . 'Content-type: text/html; charset=utf-8' . "\r\n";
    	
    	$sent = @mail($to, $subject, $message, $headers);
    	
    	if($sent)
    	{
    		echo '{"FormResponse": { "success": true}}';
    
    	}
    	else
    	{
    		echo '{"MusePHPFormResponse": { "success": false,"error": "Failed to send email"}}';
    	}
    }
    
    function cleanupEmail($email)
    {
    	$email = htmlentities($email,ENT_COMPAT,'UTF-8');
    	$email = preg_replace('=((<CR>|<LF>|0x0A/%0A|0x0D/%0D|\\n|\\r)\S).*=i', null, $email);
    	return $email;
    }
    
    function cleanupMessage($message)
    {
    	$message = wordwrap($message, 70, "\r\n");
    	return $message;
    }
    ?>
    Ответ написан