Как сделать такую форму чтобы сообщения от нее отправлялись прямиком в бд. и посоветуете что нибуть по поводу антиспама, может есть уже готовые движки которые генерируют картинки и проверяют.
Просто тему начал читать get post в php хотелось бы на практике разобрать, да и для нынешних\будущих новичков тема будет весьма интересна.
Да и чуть не забыл как стиль формы?)
Спустя 9 минут, 11 секунд (27.04.2011 - 20:33) Игорь_Vasinsky написал(а):
Цитата |
движки которые генерируют картинки и проверяют. |
это каптча (captcha) - в инете полно примеров
Спустя 2 минуты, 27 секунд (27.04.2011 - 20:35) quickxyan написал(а):
тут
вот в той теме показал пример работы с БД - перечитай тему она небольшая и поймешь что к чему.
кстати когда-то была самописная капча - мне нравилась, но потом с винта полетела вся инфа и пфффф
так бы свою подогнал
вот в той теме показал пример работы с БД - перечитай тему она небольшая и поймешь что к чему.
кстати когда-то была самописная капча - мне нравилась, но потом с винта полетела вся инфа и пфффф
так бы свою подогнал
Спустя 3 минуты, 27 секунд (27.04.2011 - 20:38) quickxyan написал(а):
нет нашел скрипт капчи на своем бессплатном хостинге
прикрепил архив, думаю разберешся что к чему. возможно надо будет его затачивать, но у меня вроде работал на ура
добавишь в папку шрифты comic.ttf и arial.ttf
прикрепил архив, думаю разберешся что к чему. возможно надо будет его затачивать, но у меня вроде работал на ура
добавишь в папку шрифты comic.ttf и arial.ttf
Спустя 17 минут, 28 секунд (27.04.2011 - 20:56) T.R.A.T.I.L написал(а):
Спасибо, завтра попробую отпишусь. Если у кого есть другие варианты буду рад посмотреть)
Спустя 4 минуты, 5 секунд (27.04.2011 - 21:00) Игорь_Vasinsky написал(а):
Спустя 1 минута, 16 секунд (27.04.2011 - 21:01) Guest написал(а):
не подскажите как сделать рабочей вот эту форму внизу страницы: http://www.bbapple.ru/goods.html
Спустя 6 минут, 36 секунд (27.04.2011 - 21:08) Игорь_Vasinsky написал(а):
а в чём прблема?
Спустя 10 минут, 7 секунд (27.04.2011 - 21:18) Guest написал(а):
не знаю не работает, вот код внутри самой страницы с формой:
<form action="send.php" method="post">
<div class="form_settings">
<p><span>Ваш e-mail</span>
<input type="text" name="name" value="" /></p>
<p><span>Сюда писать текст обращения</span>
<textarea rows="8" cols="50" name="name"></textarea></p>
<p><span>Пишешь по делу</span>
<input class="checkbox" type="checkbox" name="name" value="" /></p>
<p><span>Тема обращения</span>
<select name="name" id="id">
<option value="1">Покупка</option>
<option value="2">Вопрос</option>
</select></p>
<p style="padding-top: 15px"><span> </span>
<input name="Отправить" type="submit" class="submit" value="Отправить" />
</p>
</div>
</form>
</div>
<div id="content_base"></div>
</div>
</div>
вот код файла send.php:
<?php
session_start();
$admin = 'n_s.s87@mail.ru';
if ( isset( $_POST['sendMail'] ) ) {
$name = substr( $_POST['name'], 0, 64 );
$email = substr( $_POST['email'], 0, 64 );
$subject = substr( $_POST['subject'], 0, 64 );
$message = substr( $_POST['message'], 0, 250 );
// обработка ошибок
$error = '';
if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
$error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
if ( !empty( $error ) ) {
$_SESSION['sendMailForm']['error'] = '<p>При заполнении формы были допущены ошибки:
</p><ul>'.$error.'</ul>';
$_SESSION['sendMailForm']['name'] = $name;
$_SESSION['sendMailForm']['email'] = $email;
$_SESSION['sendMailForm']['subject'] = $subject;
$_SESSION['sendMailForm']['message'] = $message;
header( 'Location: '.$_SERVER['PHP_SELF'] );
// перенаправление в корневую страницу если есть ошибки
die();
}
// формирование письма
$body = "АВТОР:\r\n".$name."\r\n\r\n";
$body .= "E-MAIL:\r\n".$email."\r\n\r\n";
$body .= "ТЕМА:\r\n".$subject."\r\n\r\n";
$body .= "СООБЩЕНИЕ:\r\n".$message;
$body = quoted_printable_encode( $body );
$theme = '=?windows-1251?B?'.base64_encode('Заполнена форма на сайте').'?=';
$headers = "From: ".$_SERVER['SERVER_NAME']." <".$email.">\r\n";
$headers = $headers."Return-path: <".$email.">\r\n";
$headers = $headers."Content-type: text/plain; charset=\"windows-1251\"\r\n";
$headers = $headers."Content-Transfer-Encoding: quoted-printable\r\n\r\n";
if ( mail($admin, $theme, $body, $headers) )
$_SESSION['success'] = true;
else
$_SESSION['success'] = false;
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
function quoted_printable_encode ( $string ) {
// rule #2, #3 (leaves space and tab characters in tact)
$string = preg_replace_callback (
'/[^\x21-\x3C\x3E-\x7E\x09\x20]/',
'quoted_printable_encode_character',
$string
);
$newline = "=\r\n"; // '=' + CRLF (rule #4)
// make sure the splitting of lines does not interfere with escaped characters
// (chunk_split fails here)
$string = preg_replace ( '/(.{73}[^=]{0,3})/', '$1'.$newline, $string);
return $string;
}
function quoted_printable_encode_character ( $matches ) {
$character = $matches[0];
return sprintf ( '=%02x', ord ( $character ) );
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Отправить письмо</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<?php
if ( isset( $_SESSION['success'] ) ) {
if ( $_SESSION['success'] )
echo '<p>Письмо успешно отправлено</p>';
else
echo '<p>Ошибка при отправке письма</p>';
unset( $_SESSION['success'] );
}
// если есть ошибки - выводим их
if ( isset( $_SESSION['sendMailForm'] ) ) {
echo $_SESSION['sendMailForm']['error'];
$name = htmlspecialchars ( $_SESSION['sendMailForm']['name'] );
$email = htmlspecialchars ( $_SESSION['sendMailForm']['email'] );
$subject = htmlspecialchars ( $_SESSION['sendMailForm']['subject'] );
$message = htmlspecialchars ( $_SESSION['sendMailForm']['message'] );
unset( $_SESSION['sendMailForm'] );
} else {
$name = '';
$email = '';
$subject = '';
$message = '';
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<table>
<tr><td>Имя:</td>
<td><input type="text" name="name" maxlength="64" value="<?php echo $name ?>" /></td></tr>
<tr><td>E-mail:</td>
<td><input type="text" name="email" maxlength="64" value="<?php echo $email ?>" /></td></tr>
<tr><td>Тема:</td>
<td><input type="text" name="subject" maxlength="64" value="<?php echo $subject ?>" /></td></tr>
<tr><td>Сообщение:</td>
<td><textarea name="message" rows="5" cols="30"><?php echo $message ?></textarea></td></tr>
<tr><td> </td>
<td><input type="submit" name="sendMail" value="Отправить" /></td></tr>
</table>
</form>
</body>
</html>
в итоге при нажити на кнопочку отправить выходит код php
не поможете?
<form action="send.php" method="post">
<div class="form_settings">
<p><span>Ваш e-mail</span>
<input type="text" name="name" value="" /></p>
<p><span>Сюда писать текст обращения</span>
<textarea rows="8" cols="50" name="name"></textarea></p>
<p><span>Пишешь по делу</span>
<input class="checkbox" type="checkbox" name="name" value="" /></p>
<p><span>Тема обращения</span>
<select name="name" id="id">
<option value="1">Покупка</option>
<option value="2">Вопрос</option>
</select></p>
<p style="padding-top: 15px"><span> </span>
<input name="Отправить" type="submit" class="submit" value="Отправить" />
</p>
</div>
</form>
</div>
<div id="content_base"></div>
</div>
</div>
вот код файла send.php:
<?php
session_start();
$admin = 'n_s.s87@mail.ru';
if ( isset( $_POST['sendMail'] ) ) {
$name = substr( $_POST['name'], 0, 64 );
$email = substr( $_POST['email'], 0, 64 );
$subject = substr( $_POST['subject'], 0, 64 );
$message = substr( $_POST['message'], 0, 250 );
// обработка ошибок
$error = '';
if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
$error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
if ( !empty( $error ) ) {
$_SESSION['sendMailForm']['error'] = '<p>При заполнении формы были допущены ошибки:
</p><ul>'.$error.'</ul>';
$_SESSION['sendMailForm']['name'] = $name;
$_SESSION['sendMailForm']['email'] = $email;
$_SESSION['sendMailForm']['subject'] = $subject;
$_SESSION['sendMailForm']['message'] = $message;
header( 'Location: '.$_SERVER['PHP_SELF'] );
// перенаправление в корневую страницу если есть ошибки
die();
}
// формирование письма
$body = "АВТОР:\r\n".$name."\r\n\r\n";
$body .= "E-MAIL:\r\n".$email."\r\n\r\n";
$body .= "ТЕМА:\r\n".$subject."\r\n\r\n";
$body .= "СООБЩЕНИЕ:\r\n".$message;
$body = quoted_printable_encode( $body );
$theme = '=?windows-1251?B?'.base64_encode('Заполнена форма на сайте').'?=';
$headers = "From: ".$_SERVER['SERVER_NAME']." <".$email.">\r\n";
$headers = $headers."Return-path: <".$email.">\r\n";
$headers = $headers."Content-type: text/plain; charset=\"windows-1251\"\r\n";
$headers = $headers."Content-Transfer-Encoding: quoted-printable\r\n\r\n";
if ( mail($admin, $theme, $body, $headers) )
$_SESSION['success'] = true;
else
$_SESSION['success'] = false;
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
function quoted_printable_encode ( $string ) {
// rule #2, #3 (leaves space and tab characters in tact)
$string = preg_replace_callback (
'/[^\x21-\x3C\x3E-\x7E\x09\x20]/',
'quoted_printable_encode_character',
$string
);
$newline = "=\r\n"; // '=' + CRLF (rule #4)
// make sure the splitting of lines does not interfere with escaped characters
// (chunk_split fails here)
$string = preg_replace ( '/(.{73}[^=]{0,3})/', '$1'.$newline, $string);
return $string;
}
function quoted_printable_encode_character ( $matches ) {
$character = $matches[0];
return sprintf ( '=%02x', ord ( $character ) );
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Отправить письмо</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<?php
if ( isset( $_SESSION['success'] ) ) {
if ( $_SESSION['success'] )
echo '<p>Письмо успешно отправлено</p>';
else
echo '<p>Ошибка при отправке письма</p>';
unset( $_SESSION['success'] );
}
// если есть ошибки - выводим их
if ( isset( $_SESSION['sendMailForm'] ) ) {
echo $_SESSION['sendMailForm']['error'];
$name = htmlspecialchars ( $_SESSION['sendMailForm']['name'] );
$email = htmlspecialchars ( $_SESSION['sendMailForm']['email'] );
$subject = htmlspecialchars ( $_SESSION['sendMailForm']['subject'] );
$message = htmlspecialchars ( $_SESSION['sendMailForm']['message'] );
unset( $_SESSION['sendMailForm'] );
} else {
$name = '';
$email = '';
$subject = '';
$message = '';
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<table>
<tr><td>Имя:</td>
<td><input type="text" name="name" maxlength="64" value="<?php echo $name ?>" /></td></tr>
<tr><td>E-mail:</td>
<td><input type="text" name="email" maxlength="64" value="<?php echo $email ?>" /></td></tr>
<tr><td>Тема:</td>
<td><input type="text" name="subject" maxlength="64" value="<?php echo $subject ?>" /></td></tr>
<tr><td>Сообщение:</td>
<td><textarea name="message" rows="5" cols="30"><?php echo $message ?></textarea></td></tr>
<tr><td> </td>
<td><input type="submit" name="sendMail" value="Отправить" /></td></tr>
</table>
</form>
</body>
</html>
в итоге при нажити на кнопочку отправить выходит код php
не поможете?
Спустя 2 минуты, 4 секунды (27.04.2011 - 21:20) Игорь_Vasinsky написал(а):
Цитата |
в итоге при нажити на кнопочку отправить выходит код php |
вы на чём тестируете?
сервер установлен?
скрин кода php хоть покажите
Спустя 6 минут, 13 секунд (27.04.2011 - 21:26) Guest написал(а):
так я же его вам выложил, у меня есть страничка goods.html она в html внизу форма связи на нее ссылаюсь <form action="send.php" method="post">, а в корне хостинга есть файл send.php код выложил
Спустя 9 минут, 50 секунд (27.04.2011 - 21:36) Игорь_Vasinsky написал(а):
у вас на хостинге в тарифном плане исполнение PHP cкриптов предусмотрено???
Спустя 1 минута, 28 секунд (27.04.2011 - 21:38) Игорь_Vasinsky написал(а):
вот кто это
http://www.bbapple.ru/about_us.html
http://www.bbapple.ru/about_us.html
Спустя 3 минуты, 49 секунд (27.04.2011 - 21:41) Guest написал(а):
из поддержки пока молчат сейчас сам еще раз посмотрел действительно не предусмотренно но все ли у меня правильно?
вот кто это
http://www.bbapple.ru/about_us.html
это я а что?
вот кто это
http://www.bbapple.ru/about_us.html
это я а что?
Спустя 8 минут, 44 секунды (27.04.2011 - 21:50) Игорь_Vasinsky написал(а):
Цитата |
это я а что? |
ничего.
Вы же этот код слизали от куда-то, наверно верно
испльзуйте BB-теги для оформления собщения и код будет более читабилен и интересен отвечающим.
Спустя 46 минут, 41 секунда (27.04.2011 - 22:37) Guest написал(а):
спасибо а как насчет php и формы обратной связи
Спустя 9 часов, 57 минут, 9 секунд (28.04.2011 - 08:34) Guest написал(а):
правильно ли написан код вот, что собственно меня волновало