|
Гостевая - делаю сам, нужна помощьОбсуждение темы Гостевая - делаю сам, нужна помощь в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; я чайник вот так чтоль PHP код: <?php // LiteGuestBook v 1.0 - 06d.10m.09y. #error_reporting (E_ALL); include "config.php" ; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //нафиг не надо /* $shapka=" <!--шапка для всех рабочих окон--> <html> <head> <META content='text/html; charset=windows-1251' http-equiv=Content-Type> <title>Тенториум г.Выкса | Книга для гостей</title> <!--стиль--> ... |
|
Опции темы |
21.03.2010, 18:01 | #11 |
|
я чайник вот так чтоль
PHP код:
незнай может я что-то не так говорю но у новой странице где уведомления вот такой адрес http://beekeep.ru/g/index.php?event=add так значит где-то надо запретить туда ходить Последний раз редактировалось kostia; 21.03.2010 в 18:01.. Причина: Добавлено сообщение |
|
21.03.2010, 19:28 | #12 |
|
Я, конечно, мог бы все за вас написать, но, пожалуй, не буду.
Буду задавать наводящие вопросы. В каком случае сработает условие PHP код:
|
|
24.03.2010, 07:15 | #13 |
|
Вот как вариант форма обратной связи с неплохой системой проверки введённых данных, сообщение после редиректа вылазит возле формы.. короче в коде итак всё понятно - переделать под гостевую не составит труда..
Код:
<?php session_start(); // открытие сессии - обязатеьлный параметр $admin = '[email protected]'; // майл-адрес, на который будут приходить письма 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" должно соответствовать формату [email protected]</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> |
|
27.03.2010, 14:04 | #14 |
|
orlenkokn, вот зря вы так. Лучше научить ловить рыбу.
|
|
30.03.2010, 11:46 | #15 |
|
Лучше. Но для этого надо отослать человека к азам, к тому же учебнику PHP. Здесь проблема в том что человек не может даже вопрос сформулировать понятно (ну и не видит сейчас отличий между серверным и клиентским языком).
Впрочем, скрипт от orlenkokn все равно не поможет. Насколько я понял, kostia просто хочет чтобы сразу была проверка через JS, и надо как-то мягко донести, что нужно посмотреть на валидатор из поста #4, а выдачу окошек в PHP коде убрать, так как они отправляются уже после передачи данных на сервер, то есть после ухода со страницы формы (но оставить проверку и выдачу ошибок в виде надписей, или другую реакцию - ибо проверка на стороне сервера, все же, обязательна). Добавлено через 19 минут kostia, попробую разъяснить на пальцах что куда бегает. У нас есть сервер с этой несчастной формой, и PHP скриптом. Ход выполнения можно представить так: Страница_формы -> PHP_обработчик -> Страница_результата это значит, что как только сработал Submit, мы уже ушли со страницы. Если нам нужно сделать предварительную проверку, то она должна быть не в PHP, а в JS в коде страницы с формой, и выглядит она именно так, как показал Scroll. Последний раз редактировалось lifecoder; 30.03.2010 в 11:46.. Причина: Добавлено сообщение |
|
03.04.2010, 20:54 | #16 |
|
lifecoder
спасибо, ещё раз так значит, как только я нажал на кнопочку у меня отсылается на страницу, с результатами обработки на сервере, аха, значит, ту проверку на php придётся убрать, а поставить на jave, сама проверка я примерно, знаю как проверять форму ввода на наличие, буковок, а как её проверить на наличие правилього мыла и одреса сайта не понимаю, так же есть ввод цыфр, для защиты от спама, как быть с этим?? идея то в том чтоб проверка была не куда не бегая с восклицанием. и копкой "ОК", на тойже странице и сама кидала курсор в то место где не правильно |
|
06.04.2010, 17:12 | #17 |
|
Значится так: проверку на php убирать _не_ надо, но надо добавить еще одну на JavaScript. За ней возвращаемся на первую страницу и смотрим написанное by Scroll. Суть простая: onSubmit формы передает по сабмиту управление скрипту проверки. Тот выполняет все, что туда забито, и при явных ляпах выдает окошки (при этом он возвращает false, так что передачи на сервер не происходит). Если хочется готового решения - можно потыняться по гуглу в поисках проверок формы, и надергать уже готовых кусочков. Возможно, есть комплексные решения "для чайника" в jQuery и ему подобных.
У php роль вторичной защиты: у нас нет гарантии, что пользователь ввел данные через форму, поэтому php-скрипт должен проверить все то же самое, плюс КАПЧУ ("ввод цифр для защиты от спама" или любой другой метод), чтобы не было беды. |
|
05.05.2010, 16:24 | #18 |
|
В гостевухе надо сделать чтобы ссылки на сайты других открывались в новом окне а не поверх вашего.
|
|
28.05.2010, 15:42 | #19 |
|
всё исправил спасибо!
Последний раз редактировалось kostia; 28.05.2010 в 15:43.. Причина: Добавлено сообщение |
|
14.07.2010, 12:12 | #20 |
|
как будет выглядеть проверка e-mail, адрес сайта, цыфрозащита. на java скрипт, в этих облостях нужна правильность ввода, а в почте и где сайт пишут нужно также учесть что этих полей может и не быть (пользователь не указал их).
в остальном где нужно только наличие я разобрался |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна управляемая гостевая книга | Leila | ASP, Perl, PHP и MySQL | 7 | 18.05.2009 13:45 |
Нужна гостевая для локал.сети | Ослик Катя | ASP, Perl, PHP и MySQL | 6 | 02.10.2006 13:45 |
Делаю меню для Cd. Очень нужна подсказака!! | Graft | Технологии Flash | 4 | 04.02.2005 19:18 |
Нужна помощь! | Миран | Растровая графика | 2 | 23.12.2004 15:56 |
Оч. нужна гостевая на РНР с ограничеными правами | AVOcb | HTML, CSS, JavaScript | 3 | 12.11.2003 17:48 |
Реклама на форуме
Условия размещения рекламы
Биржа ссылок
Заработай на сайте!
|