Вот сам код:
Код
<?php
function show_form()
{
?>
<form action="" method=post enctype="multipart/form-data">
<div align="center">
<table class="lesson" align="center">
<tbody>
<tr>
<td class="lesson_title">
<p align="left"><font color="red"><b>* Помечены поля, которые необходимо заполнить</b></font></p>
<br /><b>Типа услуги</b><font color="red">*</font><br />
<input type="text" name="tip" size="40">
<br><b>Имя</b><font color="red">*</font><br />
<input type="text" name="name" size="40">
<br /><b>Контактный телефон</b><br />
<input type="text" name="tel" size="40">
<br /><b>Контактный email</b><font color="red">*</font><br />
<input type="text" name="email" size="40">
<br /><b>Ваш ICQ</b><font color="red">*</font><br />
<input type="text" name="ice" size="40">
<br /><b>Teма сообщения</b><br />
<input type="text" name="title" size="40">
<br /><b>Сообщение</b><font color="red">*</font><br />
<textarea rows="10" name="mess" cols="30"></textarea>
<br /><b>Срок заказа</b><font color="red">*</font><br />
<input type="text" name="srok" size="40">
<br /><b>Паспологаемая сумма</b><font color="red">*</font><br />
<input type="text" name="summa" size="40">
<br /><b>Выберите вид оплаты</b><font color="red">*</font><br />
<input type="text" name="money" size="40">
<br /><b>Примерочное изображение желаемого сайта</b><br />
<input name="attachimage" type="file" size="28">
<br /><br /><input type="submit" value="Отправить" name="submit">
</div>
</form>
</tr>
</tbody>
</table>
<?
}
function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
$_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 30);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 30);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50);
$_POST['ice'] = substr(htmlspecialchars(trim($_POST['ice'])), 0, 9);
$_POST['money'] = substr(htmlspecialchars(trim($_POST['money'])), 0, 100);
$_POST['summa'] = substr(htmlspecialchars(trim($_POST['summa'])), 0, 30);
$_POST['srok'] = substr(htmlspecialchars(trim($_POST['srok'])), 0, 15);
$_POST['tip'] = substr(htmlspecialchars(trim($_POST['tip'])), 0, 15);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['name']))
output_err(0);
// если неправильно заполнено поле email - показываем ошибку 1
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
output_err(1);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(empty($_POST['mess']))
output_err(2);
// обратите внимание, теперь мы можем писать красивые письма, с помощью html тегов;-)
$mess = '
<b>Тип заказа:</b>'.$_POST['tip'].'<br />
<b>Имя отправителя:</b>'.$_POST['name'].'<br />
<b>Контактный телефон:</b>'.$_POST['tel'].'<br />
<b>Контактный email:</b>'.$_POST['email'].'<br />
<b>ICQ:</b>'.$_POST['ice'].'<br />
<b>Вид оплаты:</b>'.$_POST['money'].'<br />
<b>Распологаемая сумма:</b>'.$_POST['summa'].'<br />
<b>Срок заказа:</b>'.$_POST['srok'].'<br />
'.$_POST['mess'];
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = 'test@test.ru'; // от кого
$mail->FromName = 'Клиент с WebtoPit.com'; // от кого
$mail->AddAddress('cyxapuka@gmail.com', '-=[MaPuK]=-'); // кому - адрес, Имя
$mail->IsHTML(true); // выставляем формат письма HTML
$mail->Subject = $_POST['title']; // тема письма
// если был файл, то прикрепляем его к письму
if(isset($_FILES['attachfile'])) {
if($_FILES['attachfile']['error'] == 0){
$mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
}
}
// если было изображение, то прикрепляем его в виде картинки к телу письма.
if(isset($_FILES['attachimage'])) {
if($_FILES['attachimage']['error'] == 0){
if (!$mail->AddEmbeddedImage($_FILES['attachimage']['tmp_name'], 'my-attach', 'image.gif', 'base64', $_FILES['attachimage']['type']))
die ($mail->ErrorInfo);
$mess .= 'А вот и наша картинка:<br /><img src="cid:image.gif" border=0><br />я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма;-) ';
}
}
$mail->Body = $mess;
// отправляем наше письмо
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
echo 'Спасибо! Ваше письмо отправлено.';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
function show_form()
{
?>
<form action="" method=post enctype="multipart/form-data">
<div align="center">
<table class="lesson" align="center">
<tbody>
<tr>
<td class="lesson_title">
<p align="left"><font color="red"><b>* Помечены поля, которые необходимо заполнить</b></font></p>
<br /><b>Типа услуги</b><font color="red">*</font><br />
<input type="text" name="tip" size="40">
<br><b>Имя</b><font color="red">*</font><br />
<input type="text" name="name" size="40">
<br /><b>Контактный телефон</b><br />
<input type="text" name="tel" size="40">
<br /><b>Контактный email</b><font color="red">*</font><br />
<input type="text" name="email" size="40">
<br /><b>Ваш ICQ</b><font color="red">*</font><br />
<input type="text" name="ice" size="40">
<br /><b>Teма сообщения</b><br />
<input type="text" name="title" size="40">
<br /><b>Сообщение</b><font color="red">*</font><br />
<textarea rows="10" name="mess" cols="30"></textarea>
<br /><b>Срок заказа</b><font color="red">*</font><br />
<input type="text" name="srok" size="40">
<br /><b>Паспологаемая сумма</b><font color="red">*</font><br />
<input type="text" name="summa" size="40">
<br /><b>Выберите вид оплаты</b><font color="red">*</font><br />
<input type="text" name="money" size="40">
<br /><b>Примерочное изображение желаемого сайта</b><br />
<input name="attachimage" type="file" size="28">
<br /><br /><input type="submit" value="Отправить" name="submit">
</div>
</form>
</tr>
</tbody>
</table>
<?
}
function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
$_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 30);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 30);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50);
$_POST['ice'] = substr(htmlspecialchars(trim($_POST['ice'])), 0, 9);
$_POST['money'] = substr(htmlspecialchars(trim($_POST['money'])), 0, 100);
$_POST['summa'] = substr(htmlspecialchars(trim($_POST['summa'])), 0, 30);
$_POST['srok'] = substr(htmlspecialchars(trim($_POST['srok'])), 0, 15);
$_POST['tip'] = substr(htmlspecialchars(trim($_POST['tip'])), 0, 15);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['name']))
output_err(0);
// если неправильно заполнено поле email - показываем ошибку 1
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
output_err(1);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(empty($_POST['mess']))
output_err(2);
// обратите внимание, теперь мы можем писать красивые письма, с помощью html тегов;-)
$mess = '
<b>Тип заказа:</b>'.$_POST['tip'].'<br />
<b>Имя отправителя:</b>'.$_POST['name'].'<br />
<b>Контактный телефон:</b>'.$_POST['tel'].'<br />
<b>Контактный email:</b>'.$_POST['email'].'<br />
<b>ICQ:</b>'.$_POST['ice'].'<br />
<b>Вид оплаты:</b>'.$_POST['money'].'<br />
<b>Распологаемая сумма:</b>'.$_POST['summa'].'<br />
<b>Срок заказа:</b>'.$_POST['srok'].'<br />
'.$_POST['mess'];
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = 'test@test.ru'; // от кого
$mail->FromName = 'Клиент с WebtoPit.com'; // от кого
$mail->AddAddress('cyxapuka@gmail.com', '-=[MaPuK]=-'); // кому - адрес, Имя
$mail->IsHTML(true); // выставляем формат письма HTML
$mail->Subject = $_POST['title']; // тема письма
// если был файл, то прикрепляем его к письму
if(isset($_FILES['attachfile'])) {
if($_FILES['attachfile']['error'] == 0){
$mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
}
}
// если было изображение, то прикрепляем его в виде картинки к телу письма.
if(isset($_FILES['attachimage'])) {
if($_FILES['attachimage']['error'] == 0){
if (!$mail->AddEmbeddedImage($_FILES['attachimage']['tmp_name'], 'my-attach', 'image.gif', 'base64', $_FILES['attachimage']['type']))
die ($mail->ErrorInfo);
$mess .= 'А вот и наша картинка:<br /><img src="cid:image.gif" border=0><br />я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма;-) ';
}
}
$mail->Body = $mess;
// отправляем наше письмо
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
echo 'Спасибо! Ваше письмо отправлено.';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
Найти файл каптчи думаю все знаю где. Спасибо заранее.
Спустя 2 минуты, 36 секунд (15.02.2008 - 16:03) Infernal написал(а):
Создаешь таблицу в БД, далее создаешь дополнительную форму на сайте, с картинкой каптчи, и отправляешь данные на проверку в БД.
Спустя 15 минут, 53 секунды (15.02.2008 - 16:19) MaPuK написал(а):
А табюлице БД мне самому писать? Я ж неговорил что владею MySQL
Я пожтому и написал в разделе для начинающих, я с РНР только неделю знаком. Ещё неподружились.
Я пожтому и написал в разделе для начинающих, я с РНР только неделю знаком. Ещё неподружились.
Спустя 1 час, 39 минут, 21 секунда (15.02.2008 - 17:58) Infernal написал(а):
Используй PHP My ADMIN, там все легко и просто.
Создай таблицу, с тремя полями. 1 - ID - INT - 10. 2 - NUM - INT - 10. 3 - LINK - VARCHAR - 255. Кстати для первого поля ID, ставь auto_increment и первичный ключ. Потом заноси информацию о своей Captcha в БД, в эти самые поля и делай запрос с сайта.
Создай таблицу, с тремя полями. 1 - ID - INT - 10. 2 - NUM - INT - 10. 3 - LINK - VARCHAR - 255. Кстати для первого поля ID, ставь auto_increment и первичный ключ. Потом заноси информацию о своей Captcha в БД, в эти самые поля и делай запрос с сайта.
Спустя 1 час, 35 минут, 15 секунд (15.02.2008 - 19:33) Timok написал(а):
читать: Защита от ботов - CAPTCHA. Вполне можно обойтись без БД.
Спустя 32 минуты, 14 секунд (15.02.2008 - 20:06) MaPuK написал(а):
Почитал и для начинающего нечего непонял. Ну всмысле я понял что нужно скачать заливать папку и подключить к форме отправки, но некак выходит. Прбывал содержимое файлы index.php вставить в место проверки в форме, и невышло, кучи ошибок, проверяя их толку недало. Так как там ошибки на строках, где РНР код мне неизвестные алгоритмы.
Спустя 1 минута, 58 секунд (15.02.2008 - 20:08) MaPuK написал(а):
Цитата(Infernal @ 15.2.2008, 14:58) [snapback]33694[/snapback]
Используй PHP My ADMIN, там все легко и просто.
Создай таблицу, с тремя полями. 1 - ID - INT - 10. 2 - NUM - INT - 10. 3 - LINK - VARCHAR - 255. Кстати для первого поля ID, ставь auto_increment и первичный ключ. Потом заноси информацию о своей Captcha в БД, в эти самые поля и делай запрос с сайта.
Создай таблицу, с тремя полями. 1 - ID - INT - 10. 2 - NUM - INT - 10. 3 - LINK - VARCHAR - 255. Кстати для первого поля ID, ставь auto_increment и первичный ключ. Потом заноси информацию о своей Captcha в БД, в эти самые поля и делай запрос с сайта.
Потом заноси информацию о своей Captcha в БД, в эти самые поля и делай запрос с сайта.
Вот как делать информацию в каптче о БД, и запрос, не умею я. =) Мож подскажете поконктретнее. пасиб!
Спустя 57 минут, 40 секунд (15.02.2008 - 21:05) Timok написал(а):
какие именно ошибки? покажи то что ты сделал.
Спустя 6 минут, 6 секунд (15.02.2008 - 21:11) MaPuK написал(а):
Я вставил сюда этот код.
<br /><b>Примерочное изображение желаемого сайта</b><br />
<input name="attachimage" type="file" size="28">
<br /><br /><input type="submit" value="Отправить" name="submit">
</div>
</form>
</tr>
</tbody>
</table>
<?
}
Поясни как нужно делать?
<br /><b>Примерочное изображение желаемого сайта</b><br />
<input name="attachimage" type="file" size="28">
Код
<?php
error_reporting (E_ALL);
include('kcaptcha.php');
if(isset($_REQUEST[session_name()])){
session_start();
}
$captcha = new KCAPTCHA();
if($_REQUEST[session_name()]){
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
}
?>
error_reporting (E_ALL);
include('kcaptcha.php');
if(isset($_REQUEST[session_name()])){
session_start();
}
$captcha = new KCAPTCHA();
if($_REQUEST[session_name()]){
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
}
?>
<br /><br /><input type="submit" value="Отправить" name="submit">
</div>
</form>
</tr>
</tbody>
</table>
<?
}
Поясни как нужно делать?
Спустя 2 часа, 3 минуты, 20 секунд (15.02.2008 - 23:15) Timok написал(а):
ok, по порядку:
0) распаковываем архив с модулем каптчи в корень
1) создаем файл generate.php который будет генерировать картинку, туда вставляем код:
2) создаем файл index.php - там будет форма и проверка каптчи:
3) запускаем, проверяем, если работает - разбираемся в коде, если нет - пишем сюда
0) распаковываем архив с модулем каптчи в корень
1) создаем файл generate.php который будет генерировать картинку, туда вставляем код:
Код
<?php
include('kcaptcha.php');
if(isset($_REQUEST[session_name()])){
session_start();
}
$captcha = new KCAPTCHA();
if($_REQUEST[session_name()]){
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
}
?>
include('kcaptcha.php');
if(isset($_REQUEST[session_name()])){
session_start();
}
$captcha = new KCAPTCHA();
if($_REQUEST[session_name()]){
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
}
?>
2) создаем файл index.php - там будет форма и проверка каптчи:
Код
<?php
session_start();
?>
<form action="./" method="post">
<p>Enter text shown below:</p>
<p><img src="<?php echo 'generate.php?' . session_name() . '=' . session_id(); ?>"></p>
<p><input type="text" name="keystring"></p>
<p><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
echo "Correct";
}else{
echo "Wrong";
}
}
unset($_SESSION['captcha_keystring']);
?>
session_start();
?>
<form action="./" method="post">
<p>Enter text shown below:</p>
<p><img src="<?php echo 'generate.php?' . session_name() . '=' . session_id(); ?>"></p>
<p><input type="text" name="keystring"></p>
<p><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
echo "Correct";
}else{
echo "Wrong";
}
}
unset($_SESSION['captcha_keystring']);
?>
3) запускаем, проверяем, если работает - разбираемся в коде, если нет - пишем сюда
Спустя 2 года, 8 месяцев, 2 дня, 11 часов, 37 минут, 17 секунд (18.10.2010 - 09:52) Guest написал(а):
я запарилась с этой каптчей ! Никак к своей форме не могу привязать
_____________