Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с обработчиком
 
 автор: kis-kis   (11.01.2007 в 21:01)   письмо автору
 
 

Смотрим прикрепленный файл.

- - -
Все работает, все проверяет, но как только добавляешь тип файла, который разрешен, то все перестает работать.
Спасибо.

   
 
 автор: kis-kis   (12.01.2007 в 09:43)   письмо автору
 
   для: kis-kis   (11.01.2007 в 21:01)
 

Проблема должна быть в неправильной постановке }...


<?php
    
if ($act=="")
   
$act="form";        
         if (
$act==form)
           {
           
?>
            <form name="add" method="post" action="?act=ok" enctype="multipart/form-data" onsubmit="return ValidateForm()">
              
  <table width="100%" border="0" cellspacing="0" cellpadding="5">
    <tr> 
      <td class="text" align="right">Ваше имя:<span class="textbr">*</span></td>
      <td width="100%"> 
        <input type="text" name="user" class="form" style="width: 60%";>
      </td>
    </tr>
    <tr> 
      <td class="text" align="right"><nobr>E-mail адрес:<span class="textbr">*</span></nobr></td>
      <td> 
        <input type="text" name="email" class="form" style="width: 60%";>
      </td>
    </tr>
    <tr> 
      <td class="text" align="right">Заголовок:</td>
      <td> 
        <input type="text" name="title" class="form" style="width: 100%";>
      </td>
    </tr>
    <tr> 
      <td class="text" align="right">Новость:<span class="textbr">*</span></td>
      <td> 
        <textarea name="news" style='width: 100%; height: 150px'; class="form"></textarea>
      </td>
    </tr>
    <tr> 
      <td class="text">&nbsp; </td>
      <td class="text"> 
        <hr size="1" noshade>
        <span class="text">Если Вы обладаете видео- или фото-материалами с места 
        происшествия: </span> 
        <hr size="1" noshade>
      </td>
    </tr>
    <tr> 
      <td class="text" align="right">Фото №1:</td>
      <td class="text"> 
        <input type="file" name="userfile" class="form" style="width: 60%";>
      </td>
    </tr>
    <tr> 
      <td class="text">&nbsp;</td>
      <td class="text"> 
        <input type="submit" name="Submit" value="Отправить сообщение" class="button">
      </td>
    </tr>
  </table>
</form>
<?php
}
if (
$act=="ok")
        {
if(empty(
$user)) { 
$bad .= "Вы не заполнили поле имя<br>";
}
if ((!
ereg("^[a-z0-9_\.-]+@([a-z0-9][a-z0-9-]+\.)+[a-z]{2,4}$"$GLOBALS["email"])) && (trim($GLOBALS["email"]) != '')) {
$bad .= "Некорректный E-mail адрес<br>";
}
if(empty(
$news)) { 
$bad .= "Отсутствует текст новости<br>";
}
if (
$bad
{
?>
                  <br>
                  <center>
                    <span class="textB">Обнаружены следующие ошибки:</span><br>
                    <br>
                    <span class="textBR"> 
                    <?php echo $bad?>
                    </span> <br>
                    <a href="javascript:history.back(1)" class="linkb">Назад</a><br>
                    <br>
                  </center>
<?php
}
else
{
if (
is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {

if ((
$_FILES['userfile']['type']!="image/gif") and ($_FILES['userfile']['type']!="image/pjpeg") and ($_FILES['userfile']['type']!="image/jpeg")) {
$bad .= "Недопустимый тип файла, используйте jpg или gif<br>";
}
$max_size "2000000";
if (
$HTTP_POST_FILES['userfile']['size']>$max_size) {
$bad .= "Размер файла, превышает допустимый<br>";
}
if (
$bad
{
?>
                  <br>
                  <center>
                    <span class="textB">Обнаружены следующие ошибки:</span><br>
                    <br>
                    <span class="textBR"> 
                    <?php echo $bad?>
                    </span> <br>
                    <a href="javascript:history.back(1)" class="linkb">Назад</a><br>
                    <br>
                  </center>
<?php
}
else
{
$path "/";
$res copy($HTTP_POST_FILES['userfile']['tmp_name'], $path .
$HTTP_POST_FILES['userfile']['name']);
}
}

else
{
$ip getenv("REMOTE_ADDR");
$date date("d-m-Y H:i:s");
$usa getenv("HTTP_USER_AGENT");
$ref getenv("HTTP_REFERER");
$server getenv("SERVER_SOFTWARE");
$site_name getenv("SERVER_NAME");
nl2br("$news");
$temp "\n\n<b>Сообщение о новости с Вашего сайта:</b>\n\n<br><br>$news\n\n<br><br>Дата отправки: $date\n\n<br><br>- - - - - \n<br>Служебная информация:\n<br>IP: <a href='https://www.nic.ru/whois/?ip=$ip'>$ip</a>\n<br>User-agent: $usa\n<br>Referer: <a href='$ref'>$ref</a>\n<br>Server: $server\n<br>Site: <a href='$site_name'>$site_name</a>";
$subj "$title";
$body $temp;
$adds .= "From: $user <$email>\n"
$adds .= "X-Sender: < $email >\n";
$adds .= "X-Priority: 2 (High)\n";
$adds .= "Content-Type: text/html; charset=windows-1251\n";
$mymail="$mm_admin_email"// email адрес  админа 
mail($mymail,$subj,$body,$adds); 
print 
"<br><center><span class=textB>Спасибо, $user, Ваше сообщение успешно отправлено</span>
<a href='/news.php' class=linkb><br>
<br>
Переадресация через 3 сек. Нажмите сюда, если вы не хотите больше ждать</a></center><br>
<SCRIPT LANGUAGE='JavaScript'>
            var shant='/news.php'
            function forPage() {
            location.href=shant    } 
            setTimeout ('forPage()', 3000);
            </SCRIPT>

"
;
}
}
}
?>

   
 
 автор: Trianon   (12.01.2007 в 09:58)   письмо автору
 
   для: kis-kis   (12.01.2007 в 09:43)
 

> Проблема должна быть в неправильной постановке }...
Что бы это значило?

>но как только добавляешь тип файла
Что бы это значило?

>то все перестает работать
Что бы это значило?

   
 
 автор: kis-kis   (12.01.2007 в 10:43)   письмо автору
 
   для: Trianon   (12.01.2007 в 09:58)
 

Если просто заполнить форму без добавления атача, то работает.

Если заполнить форму с добавлением атача (запрещенного типа) то работает.

Если заполнить форму с добавлением атача (разрешенного типа) то атач загружается, но письмо не отправляется.

Так понятно?

   
 
 автор: Trianon   (12.01.2007 в 11:24)   письмо автору
 
   для: kis-kis   (12.01.2007 в 10:43)
 

Да. Сразу бы так.
Смотреть на Ваш код , не матерясь при этом, невозможно.
Ни одного отступа нет. Как логика устроена, можно определить только самому выравнивая все if и else соответственно вложенности.
И после этого процесса становится ясно, что блок, отвечающий за отправку письма, находится в else-ветви условного оператора, определяющего, был ли загружен файл.
То есть если файл указан и загружен, то вызов mail() просто обходится.

Поэтому письмо и не отправляется.

   
 
 автор: kis-kis   (12.01.2007 в 12:02)   письмо автору
 
   для: Trianon   (12.01.2007 в 11:24)
 

Тогда, где должен быть блок mail?

   
 
 автор: Trianon   (12.01.2007 в 12:12)   письмо автору
 
   для: kis-kis   (12.01.2007 в 12:02)
 

Зависит от того, что делает сам скрипт. Он должен загруженный файл письмом отправить?

   
 
 автор: kis-kis   (12.01.2007 в 12:32)   письмо автору
 
   для: Trianon   (12.01.2007 в 12:12)
 

Нет, скрипт загружает вложения на сайт, а в письме будет просто написано, что есть вложенный файл.

   
 
 автор: kis-kis   (12.01.2007 в 17:49)   письмо автору
 
   для: kis-kis   (12.01.2007 в 12:32)
 

А что есть возможность отправки атача на email?

   
 
 автор: Trianon   (12.01.2007 в 17:55)   письмо автору
 
   для: kis-kis   (12.01.2007 в 17:49)
 

А почему нет?
Правда вызов mail() в этом случае будет сильно отличаться, так как и заголовки и тело сообщения готовятся весьма по-другому. Соответственно, придется писать два разных вызова mail().

   
 
 автор: Trianon   (12.01.2007 в 17:54)   письмо автору
 
   для: kis-kis   (12.01.2007 в 12:32)
 

Тогда, вероятно, вызов mail() нужно переместить ниже, за пределы условного оператора.

   
 
 автор: kis-kis   (12.01.2007 в 18:48)   письмо автору
 
   для: Trianon   (12.01.2007 в 17:54)
 

Извините, не понял Вас?

   
 
 автор: Trianon   (12.01.2007 в 18:57)   письмо автору
 
   для: kis-kis   (12.01.2007 в 18:48)
 

Вместо

if (is_uploaded_file(...) {
....

else
{
mail-блок
}
написать

if (is_uploaded_file(...) {
....


mail-блок

   
 
 автор: kis-kis   (15.01.2007 в 19:41)   письмо автору
 
   для: Trianon   (12.01.2007 в 18:57)
 

Так тоже не работает...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования