Регистрация
Вход через соцсети
Восстановление пароля

Столкнулся с проблемой php.

Новый топик
12.03.2010, 17:44
Ответить | Цитировать
BizaRD

Зарегистрирован:
2010-03-12
Сообщений: 2

Здравствуйте с толкнулся с такой проблемой имеется форма для отправки почты в php вот код:

<?php
// Настраиваем отправку
if( (!isset($page_address)) || (!is_array($page_address)) )
$page_address = array("bizard2@yandex.ru");
$post_subj .= "Вакансия: ".$export[name];
$post_subj .= " * ".$field1;
$post_subj .= " * ".$_SERVER['HTTP_HOST']; // Тема письма
$post_dot = "<i><small>Отправлено со страницы http://".$_SERVER['HTTP_HOST'].$PHP_SELF; // Начало письма
$maxleght_field[1] = "10000";
$maxleght_field[2] = "10000";
$maxleght_field[3] = "10000";
$maxleght_field[4] = "10000";
$maxleght_field[5] = "50";
$maxleght_field[6] = "10000";
$maxleght_field[7] = "10000";
$maxleght_field[8] = "10000";
$maxleght_field[9] = "10000";
$maxleght_field[10] = "10000";
$maxleght_field[11] = "10000";
$maxleght_field[12] = "10000";
$maxleght_field[13] = "10000";
$maxleght_field[14] = "10000";
$maxleght_field[15] = "10000";
$maxleght_field[16] = "10000";
$maxleght_field[17] = "10000";
$maxleght_field[18] = "10000";
$maxleght_field[19] = "10000";
$maxleght_field[20] = "10000";

// Сама html форма
function html_form() {
global $maxleght_field;
global $page_address;
$ret = <<<HTML
<script language="JavaScript"><!--
function TestForm(f){
if(f.field1.value=="" ||
f.field2.value=="" ||
f.field5.value==""){
alert("Необходимо заполнить обязательные поля");
return false; }
return true; }
--></script>
HTML;
$qs = $_SERVER['QUERY_STRING'];
if($qs != "")
$qs .= "&";
$qs .= "mode=post";
$ret .= "<center><form method="post" action="?" id="f" name="f" onSubmit="if(!TestForm(this)) return false;" enctype="multipart/form-data">";
$ret .= <<< HTML
<table cellspacing=0 cellpadding=0 border=0 width="100%"><tr><td align=center>
<h3>Анкета</h3>
<p>Одна из составляющих данной вакансии - презентабельная внешность, поэтому к анкете необходимо прикрепить крупное фото (желательно без Фотошопа). Размер файлов не имеет значения.</p>
<p>Внимание! Пожалуйста, заполняйте анкету согласно всем нашим требованиям. Полупустые анкеты и анкеты без фото удаляются сразу без рассмотрения. </p>
Фамилия, имя, отчество
<br><input type="text" name="field1" maxlength="$maxleght_field[1]" value="$_POST[field1]" class=cont><br><br>
Возраст (полных лет)
<br><input type="text" name="field2" maxlength="$maxleght_field[2]" value="$_POST[field2]" class=cont><br><br>
Район города (ближайшее метро), где Вы живете
<br><input type="text" name="field3" maxlength="$maxleght_field[3]" value="$_POST[field3]" class=cont><br><br>
Телефон для связи
<br><input type="text" name="field4" maxlength="$maxleght_field[4]" value="$_POST[field4]" class=cont><br><br>
E-mail (заполняйте внимательно!)
<br><input type="text" name="field5" maxlength="$maxleght_field[5]" value="$_POST[field5]" class=cont><br><br>
Журнал или сайт, на которых Вы нашли нашу вакансию
<br><input type="text" name="field6" maxlength="$maxleght_field[6]" value="$_POST[field6]" class=cont><br><br>
Город, где Вы родились. Если это не Москва, то укажите, как долго Вы живете в Москве
<br><input type="text" name="field7" maxlength="$maxleght_field[7]" value="$_POST[field7]" class=cont><br><br>
Вы закончили ВУЗ? Если да, то укажите какой
<br><textarea type="text" name="field8" maxlength="$maxleght_field[8]" value="$_POST[field8]" class=cont cols=51 rows=2></textarea><br><br>
Подробно опишите Ваше последнее место работы, где, кем, чем занимались, дата прихода и ухода, почему ушли. Если Вы не работали последние 3 месяца, укажите почему
<br><textarea type="text" name="field9" maxlength="$maxleght_field[9]" value="$_POST[field9]" class=cont cols=51 rows=4></textarea><br><br>
Среднемесячная зарплата на последнем месте работы
<br><input type="text" name="field10" maxlength="$maxleght_field[10]" value="$_POST[field10]" class=cont><br><br>
Ваши остальные места работы, где, кем, чем занимались, дата прихода и ухода, почему ушли - каждое
<br><textarea type="text" name="field11" maxlength="$maxleght_field[11]" value="$_POST[field11]" class=cont cols=51 rows=12></textarea><br><br>
Какой уровень зарплаты Вы хотите на ближайшие полгода
<br><input type="text" name="field12" maxlength="$maxleght_field[12]" value="$_POST[field12]" class=cont><br><br>
На какой минимальный оклад Вы согласны пойти на первый месяц испытательного срока
<br><input type="text" name="field13" maxlength="$maxleght_field[13]" value="$_POST[field13]" class=cont><br><br>
Какие программы на компьютере знаете
<br><input type="text" name="field18" maxlength="$maxleght_field[18]" value="$_POST[field18]" class=cont><br><br>
Знаете ли Вы бренды модной одежды. Насколько хорошо, почему, откуда. Какие бренды Вы можете узнать, не глядя на логотип.
<br><textarea type="text" name="field19" maxlength="$maxleght_field[19]" value="$_POST[field19]" class=cont rows=12></textarea><br><br>
Ваше здоровье
<br><textarea type="text" name="field14" maxlength="$maxleght_field[14]" value="$_POST[field14]" class=cont cols=51 rows=2></textarea><br><br>
Семья, дети, их возраст. Профессия мужа, жены (включая гражданский брак).
<br><textarea type="text" name="field15" maxlength="$maxleght_field[15]" value="$_POST[field15]" class=cont cols=51 rows=2></textarea><br><br>
Какие спиртные напитки Вы предпочтете на корпоративном вечере
<br><input type="text" name="field16" maxlength="$maxleght_field[16]" value="$_POST[field16]" class=cont><br><br>
Сколько сигарет в день Вы выкуриваете
<br><input type="text" name="field17" maxlength="$maxleght_field[17]" value="$_POST[field17]" class=cont><br><br>
1. Дополнительная информация, которую Вы считаете важным сообщить. Например, чем Вы лучше других кандидатур.
<br>
2. Если Вы считаете, что мы указали мало информации в вакансии, задайте дополнительные вопросы.
<br><textarea type="text" name="field20" maxlength="$maxleght_field[20]" value="$_POST[field20]" class=cont rows=12></textarea><br><br>
Прикрепить файл:
<br>1. <input type="file" name="attach1">
<br>2. <input type="file" name="attach2">
<br>3. <input type="file" name="attach3">
<br><br><br>
<img src="-/contacts.php"><br><br>
Зашита безопасности сообщений. Введите цифры с картинки:<br><br>
<input type="text" name="int" style="width:160;height:24;text-align:center;font-size:12pt"><br><br>
<input type="submit" name="post" value="Отправить">
</td></tr></table>
</form></center>
HTML;
return $ret; }
// Конец html формы
// Обработка ссылок
function get_link ($string) {
global $page_address;
$string = " ".$string;
$string = eregi_replace ("[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*","<a href="mailto:\0">\0</a>", $string);
$string = eregi_replace ('([[:space:]]|n|<br>)(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a href="http://\2" target="_blank">\2</a>', $string);
$string = eregi_replace ('([[:space:]]|n|<br>)(http://.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1<a href="\2" target="_blank">\2</a>', $string);
// XXX
$string = str_replace("r", "", $string);
$string = str_replace("n", "<br>", $string);
return trim($string); }
// Конец обработки ссылок
// Если нужно отправить форму, стартуем проверку на заполнение обязательных полей
if( isset($_POST['post']) )
{
// Проверяем поля на корректность заполнения
if (!empty($_POST['field1']) // если не пусто первое поле
and !empty($_POST['field2']) // и не пусто второе поле
and preg_match("/[-0-9a-z_]+@[-0-9a-z_]+.[a-z]{2,6}/i", $_POST['field5']) // и корректно заполнен e-mail
and $_SESSION['confirm'] == $_POST['int'] ) {
// Если все в порядке, собираем сообщение
$post_body .= "<b><small>Запрос на вакансию <font color=#800000>".$export[name]."</font></b><br>";
$post_body .= "<b>ФИО, возраст: </b>".get_link ($_POST['field1']).", ";
$post_body .= " ".get_link ($_POST['field2'])." <br>";
$post_body .= "<b>Семья, дети, профессия супруга: </b>".get_link ($_POST['field15'])."<br>";
$post_body .= "<b>З/п: на последней работе</b> ".get_link ($_POST['field10'])."";
$post_body .= ", <b>на 1-й месяц</b> ".get_link ($_POST['field13'])."";
$post_body .= ", <b>через полгода</b> ".get_link ($_POST['field12'])."<br>";
$post_body .= "<b>Последнее место работы: </b>".get_link ($_POST['field9'])."<br>";
$post_body .= "<b>Остальные места работы: </b><br>".get_link ($_POST['field11'])."<br>";
$post_body .= "<b>Знание моды: </b><br>".get_link ($_POST['field19'])."<br>";
$post_body .= "<b>Где родился, как давно в Москве: </b>".get_link ($_POST['field7'])." ";
$post_body .= "<b>Где найдена вакансия: </b>".get_link ($_POST['field6'])."<br>";
$post_body .= "<b>ВУЗ: </b>".get_link ($_POST['field8'])." ";
$post_body .= "<b>Знание компьютера: </b>".get_link ($_POST['field18'])."<br>";
$post_body .= "<b>Здоровье: </b>".get_link ($_POST['field14'])." ";
$post_body .= "<b>Алкоголь: </b>".get_link ($_POST['field16'])." ";
$post_body .= "<b>Сигареты: </b>".get_link ($_POST['field17'])."<br>";
$post_body .= "<b>Дополнительная информация: </b><br>".get_link ($_POST['field20'])."<br>";
$post_body .= "<b>Район Москвы (метро), телефон, e-mail: </b>".get_link ($_POST['field3'])." / ";
$post_body .= "".get_link ($_POST['field4'])." / ";
$post_body .= "".get_link ($_POST['field5'])."<br>";
$message = $post_body;
// Зная что имена формы у нас идут как attach1...attach3 собираем их названия
for ($i=1; $i<=3; $i++) {
$value = 'attach'.$i;
// создаем массив из файлов-аттачей
$att_arr[]=$_FILES[$value]['tmp_name'];
$att_arr_type[]=$_FILES[$value]['type'];
$att_arr_name[]=$_FILES[$value]['name']; }
// объявление в заголовке письма параметр From - от кого.
$headers = "From: <".$_POST['field5'].">";
// Оформляем boundary string - строку-разделитель
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
// определяем, был ли отправлен файл с письмом
if (sizeof($att_arr) > 0) {
// если файл отправлен,
// Добавляем к заголовку письма тип передаваемых данных
$headers .= "nMIME-Version: 1.0n" .
"Content-Type: multipart/mixed;n" .
" boundary="{$mime_boundary}"";
// Добавляем к сообщению multipart boundary и тип передаваемых данных, а затем присоединяем текст письма
$message = "This is a multi-part message in MIME format.nn" .
"--{$mime_boundary}n" .
"Content-Type: text/html; charset="windows-1251"n" .
"Content-Transfer-Encoding: 7bitnn" .
$message . "nn"; } else {
// если письмо без приаттаченных файлов
// Добавляем к заголовку письма тип передаваемых данных
$headers .= "nMIME-Version: 1.0n" .
"Content-Type: text/html; charset="windows-1251"n" .
" boundary="{$mime_boundary}"";
// Добавляем к сообщению boundary и тип передаваемых данных (текст),
// а затем присоединяем текст письма
$message = "Content-Type: text/html; charset="windows-1251"n" .
"Content-Transfer-Encoding: 7bitnn" .
$message . "nn"; }
// перебираем имеющиеся приаттаченные файлы, если их нет, то аттач производиться не будет
for ($files=0; $files<sizeof($att_arr); $files++) {
$fileatt=$att_arr[$files];
$fileatt_type=$att_arr_type[$files];
$fileatt_name=$att_arr_name[$files];
if (is_uploaded_file($fileatt)) {
// проверяем, верно ли заапплоаден файл
// Читаем файл аттача ('rb' = читаем в двоичном виде)
$file = fopen($fileatt,'rb');// открываем поток
$data = fread($file,filesize($fileatt));
fclose($file);// закрываем поток
// Кодируем Base64 содержимое файла
$data = chunk_split(base64_encode($data));
// Добавляем содержимое файла к сообщению с соответствующими заголовком и описанием типа данных
$message .= "--{$mime_boundary}n".
"Content-Type: {$fileatt_type};n".
" name="{$fileatt_name}"n".
"Content-Transfer-Encoding: base64nn".
$data."nn"; }
// так перебираем все отправляемые файлы
} $message .= "--{$mime_boundary}--n";
// в конец сообщения добавляем разделительную строку с окончанием сообщения

// Отправляем сообщение
foreach($page_address as $addr) {
// XXX
//echo $addr."<br>";
@mail($addr, $post_subj, $message, $headers);
//echo "mail($addr, <br>$post_subj, <br>$message, <br>$headers);";
}
echo "<br><h3><a href=/ style=text-decoration:none title="ВЕРНУТЬСЯ НА ГЛАВНУЮ СТРАНИЦУ">Сообщение отправлено.
<br><br><br>Спасибо.
<br><br><br>Если мы не ответили Вам
<br>по e-mail или по телефону
<br>в течение 2 недель,
<br>значит Ваша кандидатура нам не подошла.
<br><br><br>В этом случае мы искренне желаем Вам удачи в дальнейших поисках</a></h3>
<br><br><br><br><br><br><br><br>"; }
// если поля заполнены некорректно, выводим сообщение об ошибке и форму
else {
echo "<b>Ошибка.
<br>Следует заполнить все поля
<br>Нужно указать один правильный e-mail,
<br>Визуальный код должен совпадать с цифрами на картинке
<br><br><br>
Если Вы считаете, что все заполнили верно,
<br>а в форме ошибка,
<br>- сообщите администратору по адресу crownhost (собака) gmail.com </b>";
echo html_form(); }
$_SESSION['confirm'] = "";
// Убиваем сессию картинки
} else {
// если значение mode не равно post, выводим форму
echo html_form(); }
?>

Как мне из нее сделать компонент который можно будет указывать а дальнейших сайтах.

Пробовал функцию
";
php
echo"

Не помогает. Заранее спасибо.
14.03.2010, 17:53
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

1. Почитайте документацию по созданию компонента.
2. Посмотрите пример других компонентов, например "Обратная связь".

Temet nosce...
198 196 2010-03-14 17:53:24 9883
Описание проекта