Добрый день! Я в php новичок, но решил что правильнее было-бы написать в этой теме. Код (Text): Notice: Trying to get property of non-object in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 144 Warning: filesize() [function.filesize]: stat failed for file.zip in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 144 Warning: fread(): supplied argument is not a valid stream resource in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 144 Notice: Undefined variable: encode in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 109 Notice: Undefined variable: encode in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 109
Мартынов Семён Андреевич $attachment = fread(fopen("$attach->value", "r"), filesize("$attach")); это полный бред. откуда у тебя берется объект $attach ? что то я не видел $attach = new ClassName() строки ... если берешь готовые или чужие скрипты, то хотябы ПОЧИТАЙ документацию по изучаемому вопросу, а не лепи чужой НЕ работающий код. Уважай себя и нас.
О!... Пардон на счёт Код (Text): $attachment = fread(fopen("$attach->value", "r"), filesize("$attach")); На самом деле реально в скрипте написано Код (Text): $attachment = fread(fopen("$attach", "r"), filesize("$attach"));
Когда отправляю без аттача, получаю Код (Text): Warning: fread(): supplied argument is not a valid stream resource in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 144 Notice: Undefined variable: encode in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 109 Notice: Undefined variable: encode in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 109 С аттачем Код (Text): Warning: fopen(217878.jpg) [function.fopen]: failed to open stream: No such file or directory in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 144 Warning: filesize() [function.filesize]: stat failed for 217878.jpg in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 144 Warning: fread(): supplied argument is not a valid stream resource in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 144 Notice: Undefined variable: encode in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 109 Notice: Undefined variable: encode in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 109
Вы хоть почитайте в мануале что значат варнинги и нотисы, которые вы тут приводите. Если сразу не научитесь отлаживать код, потом будет гораздо сложнее, и вам же в первую очередь
О.к. Я так понимаю варингсы - это ошибки критичные, а нотисы - это просто уведомления, которые можно принять к свединью. Смотрим... supplied argument is not a valid stream resource По русски Поставляемый аргумент не соответствует ресурсу потока а вот что бы это могло значить и как с етим бороться?... И ещё, я так понял из вышесказанного, что касяк в коде... А почему на винде под денвером срабатывало? Т.е. для начала подскажите в каком направлении двигаться - настройки сервера или поиск ошибок в скрипте?
Варнинги - друзья программиста С ними отладка идет намного быстрее. направление такое: у вас выскочил варнинг, там есть 3 важные части: 1. функция, которая вызвала варнинг 2. Описание варнинга. Открываем мануал, читаем в каких случаях он появляется в этой функции 3. Строка кода где возник варнинг. там можно проверить, какие параметры передаются в функцию, какие функции вызывались ранее, и т.д. Кстать намекну, что варнинги лучше читать сверху вниз, т.е. перед fread были еще несколько, которые могут быть причиной именно этого варнинга А то что он где-то там работал, а где-то еще не работает.. Такие задачи сходу не решаются. Ответ придет в процессе исправления варнингов
Вот такой код должен работать? Код (Text): <?php $sucess=$mail("sam_temp_mailbox@bk.ru","test","Hellow!!!"); echo($sucess); ?> t.e. я в начале пишу кому, потом заголовок, потом текст... По идее функция mail должна возвращать булевы значения, я прав? а я получаю на такой код Код (Text): Notice: Undefined variable: mail in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 2 Fatal error: Function name must be a string in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 2
нотис бывает куда важнее. уж поверь ... учись проверять то, что возвращают тебе функции. в мануале расписано что они могут возвратить. на твоем примере ты ожидаешь, что тебе вернут какой-нить объект, например ресурс от mysql_connect(), но в случае ошибки функция вернет FALSE, а ты этого не проверяешь и скрипт выполняется дальше ... снеси нахрен этот денвер и поставь НОРМАЛЬНУЮ связку апач+пхп+mysql (скачать можно с http://php.ru), тогда монго-много вопросов отпадут сами собой. p.s. я, млин, не понимаю тягу к продуктам "все в одном флаконе", ты попробуй свой обед вылить в одну тарелку, перемешать, а потом съесть? только не говори мне, что это, почему-то, не вкусно!
Notice: Undefined variable: mail in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 2 Там пишется, что не определена переменная $mail. Ты ее определял раньше? Еще почитай про синтаксис переменных и функций
Функция mail вернула единичку это хорошо! Но письмо до меня пока так и не дошло это плохо! Я внёс изменения в код Код (Text): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Отправка письма</title> <meta content="text/html;charset=windows-1251" http-equiv="Content-Type"> <style> a { text-decoration: underline; color:#0000FF; } </style> </head> <body> <? //php_value error_reporting 7 $mailto="sam_temp_mailbox@bk.ru";//определяем, куда будут сыпаться мессаги if (empty($ok))//Если не нажата кнопка O.k., то { ?> <script type="text/javascript" src="http://www.uagp.net/includes/js/overlib_mini.js"></script> <h3>Отправить сообщение об ошибке</h3> Поля, отмеченные ( <a href="#" onmouseover="return overlib('Поле обязательно для заполнения!!!', BELOW, RIGHT);" onmouseout="return nd();" >*</a> ), обязательны для заполнения. <br><br> <form action="<?echo $PHP_SELF;?>" method="post"> <style> a { text-decoration: none; color:#000000; } </style> <table> <tr> <td>Ваше имя:</td> <td> <input type="text" name="username" size="50" maxlength="50"></td> </tr> <tr> <td><a href="#" onmouseover="return overlib('Поле обязательно для заполнения!!!', BELOW, RIGHT);" onmouseout="return nd();" >*</a> E-mail:</td> <td><input type="text" name="mailfrom" size="50" maxlength="50"></td> </tr> <tr> <td><a href="#" onmouseover="return overlib('Поле обязательно для заполнения!!!', BELOW, RIGHT);" onmouseout="return nd();" >*</a> Замечание:</td> <td><textarea cols="50" rows="10" name="question"></textarea></td> </tr> <tr> <td>Вложение:</td> <td><input type="file" name="attach" size="37"><a href="#" onmouseover="return overlib('По умолчанию, это С:\\file.txt', BELOW, RIGHT);" onmouseout="return nd();" ><img src="http://www.uagp.net/includes/js/ThemeOffice/tooltip.png" border="0" alt=""/></a></td> </tr> </table> <input type="submit" name="ok" value="отправить"> </form> <?php } else { //проверка корректности е-мэйла if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mailfrom)) { $error = "Не верно заполнено поле: <b>E-mail</b><br>"; } //если "замечание" не заполнено, то if (empty($question)) { $error .= "Не заполнено поле: <b>Ваш вопрос</b><br>"; } //если переменная $error не пуста, то выводим её содержимое и выходим. if (!empty($error)) { echo "<p align=\"center\">"; echo $error; //echo "<br><a href=\"javascript:history.go(-1)\" class=\"text\">Вернуться назад</a>"; echo "<a href=\"javascript:history.go(-1)\" onmouseover=\"return overlib('Нажмите для возврата к форме отправки письма', BELOW, RIGHT);\" onmouseout=\"return nd();\" >Вернуться назад</a>"; echo "<p>"; exit; } //если $error пуста, то переходим к отправке сообщения class mime_mail { var $parts;//массив для вложений var $to;//получатель var $from;//отправитель var $headers;//заголовок var $subject;//тема var $body;//текст послания // создаем класс function mime_mail() { $this->parts = array(); $this->to = ""; $this->from = ""; $this->subject = ""; $this->body = ""; $this->headers = ""; } // функция добавления файлов в мыло function add_attachment($message, $name = "", $ctype = "application/octet-stream") { $this->parts [] = array ( "ctype" => $ctype, "message" => $message, "encode" => $encode, "name" => $name ); } // Построение сообщения (multipart) function build_message($part) { $message = $part["message"]; $message = chunk_split(base64_encode($message)); $encoding = "base64"; return "Content-Type: ".$part["ctype"].($part["name"]? "; name = \"".$part["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n"; } function build_multipart() { $boundary = "b".md5(uniqid(time())); $multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary"; for($i = sizeof($this->parts)-1; $i>=0; $i--) $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary"; return $multipart.= "--\n"; } // функция "посылка сообщения" function send() { $mime = ""; if (!empty($this->from)) $mime .= "From: ".$this->from. "\n"; if (!empty($this->headers)) $mime .= $this->headers. "\n"; if (!empty($this->body)) $this->add_attachment($this->body, "", "text/plain"); $mime .= "MIME-Version: 1.0\n".$this->build_multipart(); mail($this->to, $this->subject, "", $mime); } } //формирование сообщения и его отправка if (!empty($attach)) { $attachment = fread(fopen("$attach", "r"), filesize("$attach")); } $mail = new mime_mail(); $mail->from = $mailfrom; $mail->headers = "Errors-To: [EMAIL=sam_temp_mailbox@bk.ru]sam_temp_mailbox@bk.ru[/EMAIL]"; $mail->to = $mailto; $mail->subject = "Сообщение с сайта http://www.uagp.net об ошибке в программе!"; $mail->body = $question; if (!empty($attach)) { $mail->add_attachment("$attachment", "$attach", "Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAgEASABIAAD/7QT+UGhvdG9zaG"); } $sucess=$mail->send(); echo($sucess); if ($sucess) { echo "<p align=\"center\">Спасибо. Ваше замечание отправлено.<br><br>"; echo "<a href=\"http://www.uagp.net\" onmouseover=\"return overlib('Нажмите для перезода на главную страницу сайта предприятия', BELOW, RIGHT);\" onmouseout=\"return nd();\" >ФГУП УРАЛАЭРОГЕОДЕЗИЯ</a>"; //echo "<a href=\"http://www.uagp.net\">ФГУП УРАЛАЭРОГЕОДЕЗИЯ</a></p>"; } } ?> </body> </html> Т.е. подставил Код (Text): if (!empty($attach)) { } Теперь при отправке пустого (без аттача) сообщения получаю Код (Text): Notice: Undefined variable: encode in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 109 Вот 109-ая строка Код (Text): "encode" => $encode, Честно говоря ума не приложу за что она отвечает... Предполагаю что-то с перекодировкой... Если загоняю эту строку в коменты (//), то после нажатия кнопки отправить получаю чистый белый экран! Без варингов, нотисов и сообщений об удачной или неудачной отпраке..
Мартынов Семён Андреевич mail() это ФУНКЦИЯ, а не переменная $mail, о чем тебе, дурачку, нотис и талдычит ...!
это означает лишь, то что релей принял письмо, а вот факт ДОСТАВКИ это совсем другое и его никак не поймать.
$mail->headers = "Errors-To: sam_temp_mailbox@bk.ru"; пропиши туда СВОЙ ЯЩИК и получишь отлуп. только не mail.ru ... для прикола впиши мой 440hz@mail.ru. я тебе отлуп чюда започсу. $mail->headers = "Errors-To: 440hz@mail.ru";
Не понял... Вы говорите не вписывать туда mail.ru? и при этом даёте свой ящик... НА МЭИЛ.РУ?!? Я и прописал СВОЙ ящик sam_temp_mailbox@bk.ru...
phpbb - однако... Всё равно Код (Text): Notice: Undefined variable: encode in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 109
Мартынов Семён Андреевич $encode = 'KOI8-R'; $this->parts [] = array ( "ctype" => $ctype, "message" => $message, "encode" => $encode, "name" => $name );