Формы

#
Формы
Помогите я уже закипел  
ЗАМЕЧАНИЕ: Undefined variable: PHP_SELF в файле  msg.php (строка 14)это с верху
ЗАМЕЧАНИЕ: Undefined variable: userfile в файле msg.php (строка 92)  Это с низу

Вот фаил msg.php

<?
$mymail="vasya@mail.ru"; // адрес email, на который будет высылаться почта (например, infln@znvy.eh)
$updir="upload/"; // директория сайта, в которую будет производиться закачка файлов (например, upload/). Слэш в конце обязателен
$after_sent="/sent.shtml"; // страница, на которую будет перенаправлен пользователь после отправки письма
$max="2097152"; // максимальный размер файла, который сможет закачивать пользователь (в байтах)

## не меняйте ничего ниже

if(empty($go)) {
if (file_exists("header.html") {
include ("header.html";
}
?>
<p style="margin-left: 30" align="justify"><form ENCTYPE="multipart/form-data" action="<?echo $PHP_SELF;?>" method=post>
  <table border="0" width=83%>
    <tr>
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Ваше имя: </td>
      <td width=70%>
        <input type=text name=name>
      </td>
    </tr>
    <tr>
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Ваш E-mail: </td>
      <td width=70%><input type=text name=mail></td>
    </tr>
<tr>
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Тема: </td>
      <td width=70%>
        <input type="text" name="subject">
      </td>
    </tr>
    <tr>
      <td width=30%>Текст сообщения:</td>
      <td width=70%>
        <textarea name="message" rows="10" cols="40"></textarea>
      </td>
    </tr>
    <tr>
      <td width=30%>Прикрепить файл (max. 2 MB): </td>
      <td width=70%><INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="<?echo $max;?>"><INPUT NAME="userfile" TYPE="file" SIZE="40"></td>
    </tr>
    <tr>
      <td colspan="2">
        <center>
          <input type="submit" name=go value="Отправить">
       </center>
      </td></tr></table></form></p>
<?
if (file_exists("footer.html") {
include ("footer.html";
}
}
else {

if(empty($name)) {
$bad = "Вы не подписались<br>";
}

if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mail)) // проверка правильности введенного e-mail адреса
{
$bad .= "Неправильный e-mail<br>";
}

if(empty($subject)) {
$bad .= "Отсутствует тема сообщения<br>";
}

if ($bad)
{
echo $bad;
?>
<a href="javascript:history.back(1)">Заполните, пожалуйста, пустые поля</a>
<?
exit;
}
if (is_uploaded_file($userfile)) {
if (filesize($userfile)<=$max){
$fi = "K письму был прикреплен файл $userfile_name размером $userfile_size байт, который был закачан в директорию $updir";
}
}
$ip = getenv("REMOTE_ADDR";
$usa = getenv("HTTP_USER_AGENT";
$temp = "$fi\n\nВам было отправлено сообщение:\n\n$message\n\nIP-адрес отправителя: $ip\nuser-agent: $usa";
$subj = "$subject";
$body = $temp;
$adds = "From: $mail\n";
$adds .= "X-Sender: < $mail >\n";
$adds .= "Content-Type: text/plain; charset=windows-1251\n";
mail($mymail,$subj,$body,$adds);
Header("Location: $after_sent";
}
if (is_uploaded_file($userfile)) {
if (filesize($userfile)<=$max){
$dest=$updir.$userfile_name;
    move_uploaded_file($userfile, $dest);
}
}
?>
Прошу прощения ну что токо не делал выскакивают ошибки а отключать контроль я думаю не выход.
#
Формы
Модератор
#
Re: Формы
Дмитрий Евгеньевич писал(а):
Помогите я уже закипел
ЗАМЕЧАНИЕ: Undefined variable: PHP_SELF в файле msg.php (строка 14)это с верху
ЗАМЕЧАНИЕ: Undefined variable: userfile в файле msg.php (строка 92) Это с низу


итак, смотрим что написано у Вас в коде:
Дмитрий Евгеньевич писал(а):
<p style="margin-left: 30" align="justify"><form ENCTYPE="multipart/form-data" action="<?echo $PHP_SELF;?>" method=post>

т.к. register_globals выключен, Вы не можете обращаться таким образом. Используйте суперглобальные массивы, в данном случае Вы вообще можете указать путь явно.

Далее, Вы используете Дмитрий Евгеньевич писал(а):
if(empty($subject)) {
, а необходимо использовать суперглобальный массив:

if(empty($_POST['subject'])) {


и так далее по коду все перменные, которых не существует, включая $userfile
#
Re: Формы
Уважаемые разработчики у меня к вам предложение а что если всетаки включить в бесплатную версию формы ведь это крайне необходимо даже если с ограничениями.Причем даже не модулем а статической страничкой.Заранее признателен за понимание.
Модератор
#
Re: Формы
Дмитрий Евгеньевич,
Вы практически реализовали простую форму запроса на странице, нужно заменить вызовы переменных, это работы на две минуты.

P.S. С загрузкой файлов на сайте нужно быть очень аккуратными, т.к. это может вызвать нарушение безопасности сайта!
#
Re: Формы
<?php
/*<!-- $mailto="kustov@vipusknoybal.com"; --> */
$mailto="handball14@mail.ru";
if (empty($_POST['ok']))
{
?>
<p><strong>ЗАЯВКА НА УЧАСТИЕ</strong>
</p>
<form action="" method="post">
  <p>
  <label>Название фирмы<br />
  <input name="firm_name" type="text" id="firm_name" size="50" maxlength="150" />
  </label>
  </p>
  <p>
  <label>Адрес электронной почты<br />
  <input name="mail1" type="text" id="mail1" size="50" maxlength="50" />
  </label>
  </p>
   <p>
  <label>Контактное лицо<br />
  <input name="kontakt_name" type="text" id="kontakt_name" size="50" maxlength="50" />
  </label>
  </p>
  <p>
  <label>Количество необходимой выставочной площади (кв. м)<br />
  <input name="s" type="text" id="s" size="50" maxlength="4" />
  </label>
  </p>
  <p>
  <label>Перечень необходимого дополнительного оборудования (перечислить)<br />
  С ассортиментом оборудования (светильники, витрины, подиумы, бытовая техника и т.п.) можно ознакомиться <a href="/dopolnitelnoe-oborudovanie/" target="_blank">ЗДЕСЬ</a><br />
  <textarea name="dop" id="dop" cols="50" rows="5"></textarea>
  </label>                                                    <br />
</p>
<p>
  <label>Надпись на фризовой панели (в том  числе и цвет букв)<br />
  <input name="friz" type="text" id="friz" size="50" maxlength="50" />
  </label>
  </p>
  <p>
  <label>Дополнительные услуги<br />
  <textarea name="uslugi" id="uslugi" cols="50" rows="7"></textarea>
  </label>                                                    <br />
</p>

<input type="submit" name="ok" value="отправить" />
</form>
<p>Icq-консультатнт: 369&nbsp;096&nbsp;105</p>
<?php
}
else
{

    if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $_POST['mail1']))
    {
    $error = "Не верно заполнено поле: <b>Адрес электронной почты</b><br>";
    }

    if (empty($_POST['firm_name']))
    {
        $error .= "Не заполнено поле: <b>Название фирмы</b><br>";
    }
   if (empty($_POST['kontakt_name']))
    {
        $error .= "Не заполнено поле: <b>Контактное лицо</b><br>";
    }
   if (empty($_POST['s']))
    {
        $error .= "Не заполнено поле: <b>Количество необходимой выставочной площади</b><br>";
    }
   if (empty($_POST['friz']))
    {
        $error .= "Не заполнено поле: <b>Надпись на фризовой панели</b><br>";
    }

    if ($error)
    {
        echo $error;
        echo "<br /><a href='javascript:history.go(-1)'>Вернуться назад</a>";
        stop;
    }

    $subject="Заявка на участие в выставке от $_POST['firm_name']";
    $body="Название фирмы:<br />
  $_POST['firm_name']
  Адрес электронной почты:<br />
  $_POST['mail1']
  Контактное лицо:<br />
  $_POST['kontakt_name']
  Количество необходимой выставочной площади (кв. м):<br />
  $_POST['s']
  Перечень необходимого дополнительного оборудования:<br />
  $_POST['dop']
  Надпись на фризовой панели:<br />
  $_POST['friz']
  Дополнительные услуги:<br />
  $_POST['uslugi']";

    $body=convert_cyr_string (stripslashes($body),w,k);
    $subject=convert_cyr_string (stripslashes($subject),w,k);
    $sucess = mail($mailto, $subject, $body,"From: $_POST['mail1'] X-Mailer: PHP/" . phpversion());

    if ($sucess)
    {
        echo "Спасибо. Ваш заявка отправлена.<br /><br />";
        echo "<a href='javascript:history.go(-1)'>Вернуться назад</a>";
    }

}
?>

выдает ошибку Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/r/radixnru/vipusknoybal/public_html/structure/Modules/Module84.php on line 84

вроде все как написано выше сделано, но не работает((( где еще искать ошибку
Модератор
#
Re: Формы
alexey_corenet,
а почему Вы так свободно
$_POST['xxx']
вставляете внутрь строки? Нужно правильно вставлять, например:
$sucess = mail($mailto, $subject, $body,"From: {$_POST['mail1']} X-Mailer: PHP/" . phpversion());
и выше по коду везде поправить.
Модератор
#
Re: Формы
alexey_corenet,
Кстати, приведенный Вами код опасен и может быть использован для рассылки спама с сайта, достаточно просто передать нужные заголовки в $_POST['mail1'].
#
Re: Формы
ЗАМЕЧАНИЕ: Undefined index: mail в файле /home/r/radixnru/vipusknoybal/public_html/structure/Modules/Module84.php (строка 104)


и не уходит почта, еще ругается на выделенные строчки, их закомментировали

<?
/*<!-- $mailto="kustov@vipusknoybal.com"; --> */
$mailto="handball14@mail.ru";
$error ='';
$sucess = '';
if (empty($_POST['ok']))
{
?>
<p><strong>ЗАЯВКА НА УЧАСТИЕ</strong>
</p>
<form action="" method="post">
  <p>
  <label>Название фирмы<br />
  <input name="firm_name" type="text" id="firm_name" size="50" maxlength="150" />
  </label>
  </p>
  <p>
  <label>Адрес электронной почты<br />
  <input name="mail1" type="text" id="mail1" size="50" maxlength="50" />
  </label>
  </p>
   <p>
  <label>Контактное лицо<br />
  <input name="kontakt_name" type="text" id="kontakt_name" size="50" maxlength="50" />
  </label>
  </p>
  <p>
  <label>Количество необходимой выставочной площади (кв. м)<br />
  <input name="s" type="text" id="s" size="50" maxlength="4" />
  </label>
  </p>
  <p>
  <label>Перечень необходимого дополнительного оборудования (перечислить)<br />
  С ассортиментом оборудования (светильники, витрины, подиумы, бытовая техника и т.п.) можно ознакомиться <a href="/dopolnitelnoe-oborudovanie/" target="_blank">ЗДЕСЬ</a><br />
  <textarea name="dop" id="dop" cols="50" rows="5"></textarea>
  </label>                                                    <br />
</p>
<p>
  <label>Надпись на фризовой панели (в том  числе и цвет букв)<br />
  <input name="friz" type="text" id="friz" size="50" maxlength="50" />
  </label>
  </p>
  <p>
  <label>Дополнительные услуги<br />
  <textarea name="uslugi" id="uslugi" cols="50" rows="7"></textarea>
  </label>                                                    <br />
</p>

<input type="submit" name="ok" value="отправить" />
</form>
<p>Icq-консультатнт: 369&nbsp;096&nbsp;105</p>
<?
}
else
{

    if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/",$_POST['mail1']))
    {
    $error = "Не верно заполнено поле: <b>Адрес электронной почты</b><br>";
    }

    if (empty($_POST['firm_name']))
    {
        $error .= "Не заполнено поле: <b>Название фирмы</b><br>";
    }
   if (empty($_POST['kontakt_name']))
    {
        $error .= "Не заполнено поле: <b>Контактное лицо</b><br>";
    }
   if (empty($_POST['s']))
    {
        $error .= "Не заполнено поле: <b>Количество необходимой выставочной площади</b><br>";
    }
   if (empty($_POST['friz']))
    {
        $error .= "Не заполнено поле: <b>Надпись на фризовой панели</b><br>";
    }

    if ($error != '')
    {
        echo $error;
        echo "<br /><a href=\"javascript:history.go(-1)\">Вернуться назад</a>";
        exit;
    }

    $subject = "Заявка на участие в выставке от {$_POST['firm_name']}";
    $body = "Название фирмы:<br />
  {$_POST['firm_name']}
  Адрес электронной почты:<br />
  {$_POST['mail1']}
  Контактное лицо:<br />
  {$_POST['kontakt_name']}
  Количество необходимой выставочной площади (кв. м):<br />
  {$_POST['s']}
  Перечень необходимого дополнительного оборудования:<br />
  {$_POST['dop']}
  Надпись на фризовой панели:<br />
  {$_POST['friz']}
  Дополнительные услуги:<br />
  {$_POST['uslugi']}";

    /*$body = convert_cyr_string (stripslashes($body),w,k);
    $subject = convert_cyr_string (stripslashes($subject),w,k); */
    $sucess = mail($mailto, $subject, $body,"From: {$_POST['mail']} X-Mailer:PHPMail Tool");


     if ($sucess != '')
    {
        echo "Спасибо. Ваш заявка отправлена.<br /><br />";
        echo "<a href=\"javascript:history.go(-1)\" >Вернуться назад</a>";
    }

}
?>


письма не отправляет(((
#
Re: Формы
ПАМАГИТЕ!!!! ГОРИТ ПРОЕКТ!!!
Авторизация