Код магнитолы

Оппозиция в России ?

Россия и Украина

Мысли в слух...

Российская...власть ?

Skype

Создаём сайт

JS - телефон

Любимые сериалы


На главную



Следующий файл, который нам понадобиться, будет отвечать за обработку формы отзывов:
action.php

<?php
require_once("connect.php");
  
// добавляем данные в таблицу comments:
try
{  
  // проверяем заполненость полей формы: 
  if(empty($_POST['name'])){exit('<font color="coral">He заполнено поле "Ник/имя"</font>');} 
  if(empty($_POST['mesage'])){exit('<font color="coral">He заполнено поле "Сообщение"</font>');}
  // добавляем данные в таблицу comments: 
  $query = "INSERT INTO comments VALUES (NULL, NOW(), :name, :mesage)"; 
  $comments = $pdo->prepare($query);  
  $comments->execute(['name'=>$_POST['name'], 'mesage'=>$_POST['mesage']]);  
  // осуществляем переадресацию на главную страницу: 
  header("Location:index.php");
} 
  catch(PDOException  $e){echo"<font color='coral'>Oшибка выполнения запроса: </font>".$e->getMessage();}
?> 
Форма будет снабжена защитой от ботов, эдаких противных программ, которые лезут в форму со всякой рекламой. Защищать форму мы будем при помощи капчи. Для этого создадим файл capcha.php. Имя файла - произвольное:
capcha.php

<?php
/* Задаем параметры капчи(при желании можно вынести в отдельный файл - config)
   Переменная, в которой храниться список символов, используемых в капче */
$let = "0123456789abcdefgABCDEFG";  
// количество символов в капче:
$len = 7;
// шрифт символов на капче( шрифт поместим в папку со скриптом):
$dir = dirname(realpath(__FILE__));
$sep = DIRECTORY_SEPARATOR;   
$font = $dir.$sep."georgia.ttf"; 
// Размер шрифта: 
$fontsize = 25; 
// Размер капчи:
$width = 130; // длина
$height = 50; // высота
// Задаем заголовок для вывода картинки:
header("Content-type: image/png");  
// Создаем изображение:
$img = imagecreatetruecolor($width, $height);  
// фон для капчи:
$white = imagecolorallocate($img, 220, 220, 220); 
imagefill($img, 0, 0, $white); 
// Переменная, для хранения значения капчи:
$capchaText = " "; 
// Заполням изображение символами:
for ($i = 0; $i < $len; $i++)
{ 
  // Из списка символов, берем случайный символ: 
  $capchaText .= $let[rand(0, strlen($let)-1)];  
  // Вычесляем положение одного символа:
  $x = ($width - 20) / $len * $i + 10; 
  $y = $height - (($height - $fontsize) / 2);     
  // Укажем случайный цвет для символа:
  $color = imagecolorallocate($img, rand(0, 150), rand(0, 150), rand(0, 150) );  
  // Генерируем угол наклона символа:
  $naklon = rand(-30, 30);  
  // Рисуем символы:
  imagettftext($img, $fontsize, $naklon, $x, $y, $color, $font, $capchaText[$i]); 
}  
$_POST["capcha"] = $capchaText; 
// вывод капчи на страницу:
imagepng($img);  
// чистим память, корторую мы заняли при создании картинки:
imagedestroy($img);
?>
В результате это будет выглядеть примерно так:



Главное преимущество этого метода защиты - файл капчи хранится отдельно, на web-сервере, а не на страничке. Особое внимание хочется уделить двум элементам этого кода:
$font - это переменная, отвечающая за шрифт из которого будет формироватся контрольное изображение; файл шрифта ttf (150-250 кВ) можно взять из папки WINDOWS компа;
header - это папка и формат в котором web-сервер будет хранить контрольное изображение;
Изображение будет представлено в трёх цветах : белом, сером и чёрном. Но можно и поэкспериментировать, если есть желание.
Предполагается, что вы завели базу данных (БД) на hoste, ознакомились с её структурой и управлением. В таблице будет четыре колонки (это - в нашем случае, а так - сколько угодно) : id, data, name и mesage (имена можете выбрать свои).
В первом случае (id) - порядковый номер будет автоматически задаваться БД. Выводить - ли его на страничку - вам решать. Во втором случае (data) - время отзыва будет задаваться специальной функцией РНР NOW();. Два последних элемента (name и mesage) - будут заносится гостем в специальные поля формы. К слову сказать - количество полей в форме (<input ...>) зависит только от вашего желания.
дальше...
...назад