[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не понятно откудова в письмах берется "\"
Oliver Varnce
Проблемма заключается в таком.

Вот код: (прошу прощения за простыню, но по другому никак)
Свернутый текст
<?php
class
Sendmail
{
private $id;
private $email;
private $from;
private $to;
private $subject;
private $text;

public $output_stream;

function __construct($id='')
{
if ($id)
{
$query = "SELECT * FROM sendmail WHERE id = '".$id."'";
$result = mysql_query($query);
if ($result)
{
while ($row = mysql_fetch_array($result))
{
$this->id = $row['id'];
$this->email = $row['email'];

}

}
else {
Streams::Append('error','Query: '.$query);
}
}
else {
$this->id = '';
$this->email = '';

}
}



function GetId(){return $this->id;}
function GetEmail() {return $this->email;}
function GetFrom() {return $this->from;}
function GetTo() {return $this->to;}
function GetSubject() {return $this->subject;}
function GetText() {return $this->text;}



private function setDefaultLang($lang = ''){
if($lang){
$_SESSION['lang'] = $lang;
}
}


//Редактирование адреса
function Edit()
{
$edit_tpl = array();
$edit_tpl['id'] = $this->id;
$edit_tpl['email'] = $this->email;


global $DR;
require_once $DR.'/inc/_quickform.php';
//Скрытые служебыне элементы
$action = isset($_GET['action']) ? $_GET['action'] : NULL;
if (!$action) $action = isset($_POST['action']) ? $_POST['action'] : NULL;
$form->addElement('hidden','action',$action);
$form->addElement('hidden','this_id',$this->id);
//Данные
$form->addElement('header','site','Редактировать почту');

global $WORK;


$form->addElement('text','email','Адрес почты','style="width: 500px;"');

$form->addElement('hidden','lang',$_SESSION['lang']);

$form->addRule('email','Укажите адрес электронной почты!','required');

$buttons[] = HTML_QuickForm::createElement('submit','btnSubmit','Сохранить');
$buttons[] = HTML_QuickForm::createElement('reset','btnClear','Очистить');
$form->addGroup($buttons, null, null, ' ');

if ($form->validate()) {
if ($_POST['lang']) self::setDefaultLang($_POST['lang']);
// Форма проверена, обрабатываются данные
$form->freeze();

foreach ($_POST as $key => $value)
{
eval('$'.$key.' = $_POST['.$key.'];');
}

$query = "SELECT * FROM sendmail WHERE email = '".$email."' LIMIT 1";
@ $result = mysql_query($query);
if ($result and !mysql_num_rows($result))
{
if ($this_id)
$query = "UPDATE sendmail SET email='".$email."' WHERE id = '".$this_id."'";
else
$query = "INSERT INTO sendmail (email) VALUES ('".$email."')";
@ $result = mysql_query($query);
echo $query;
if ($result)
{
Streams::AppendFirst('main',formats_ok('Данные сохранены'));
$this->id = ($this_id) ? $this_id : mysql_insert_id();
} else {
Streams::Append('main',formats_err('Не удалось соединиться с базой данных'));
Streams::Append('error','Query: '.$query);
}
}



return true;
} else {
global $WORK;
$form->SetDefaults($edit_tpl);
if (!$this->output_stream) $this->output_stream = 'forms';
Streams::Append($this->output_stream,'<div class="divcheg">');
Streams::Append($this->output_stream,'<script type="text/javascript" src="'.$WORK.'/inc/ajax/manage_logo.js"></script>');
Streams::Append($this->output_stream,$form->toHTML());
Streams::Append($this->output_stream,'</div>');
// Вызываем javascript только, когда редактируем запись
$TinyMCE = '<script type="text/javascript" src="/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
mode : "exact",
theme : "advanced",
elements : "content",
plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,autosave,advlist,advlink,emotions,iespel l,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,full screen,noneditable,visualchars,nonbreaking,xhtmlxtras,wordcount",

// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright ,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquo te,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecol or,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,pr int,|,ltr,rtl,|,fullscreen",
//theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del ,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,restoredraft,|,insertfile,insert image",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,

// Example content CSS (should be your site CSS)
content_css : "/'
.$_SESSION['lang'].'/styles/service.css",

language : "ru",
file_browser_callback: "ajaxfilemanager",

autosave_ask_before_unload : false
});

function ajaxfilemanager(field_name, url, type, win) {
var ajaxfilemanagerurl = "/tinymce/jscripts/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php";
switch (type) {
case "image":
break;
case "media":
break;
case "flash":
break;
case "file":
break;
default:
return false;
}
tinyMCE.activeEditor.windowManager.open({
url: "/tinymce/jscripts/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php",
width: 782,
height: 440,
inline : "yes",
close_previous : "no"
},{
window : win,
input : field_name
});
}
</script>
'
;
Streams::Append('js',$TinyMCE);
global $WORK;
Streams::Append($this->output_stream,'<!-- PopCalendar(tag name and id must match) Tags should sit at the page bottom --><iframe width=174 height=189 name="gToday:normal:agenda.js" id="gToday:normal:agenda.js" src="'.$WORK.'/modules/calendar/ipopeng.htm" scrolling="no" frameborder="0" style="visibility:visible; z-index:999; position:absolute; left:-500px; top:0px;"></iframe>');
}
}



//Удаление Объекта
function Delete()
{
if ($this->id)
{
//Удаляем объект
$query = "DELETE FROM sendmail WHERE id='".$this->id."' LIMIT 1";
@ $result = mysql_query($query);
if ($result)
{
Streams::AppendFirst('main',formats_ok('Объект удален'));
} else {
Streams::AppendFirst('main',formats_err("Не удалось соединиться с базой данных"));
Streams::Append('error','Query: ',$query);
}
}
else {
Streams::AppendFirst('main',formats_err("Не хватает данных для удаления"));
Streams::Append('error','Site::Delete() failed! No id.');
}
}






static function DisplayList($params='', $list = '')
{
if ($params)
{
$params = explode('|',$params);
foreach ($params as $value) $paramlist[$value] = 1;
}

$paramlist['edit'] = 1;
$paramlist['delete'] = 1;

$ordering = new DataOrdering();
$ordering->AddItem('id','id');
$ordering->AddItem('email','email');
$ordering->SetDefault('id','down');
$ordering->Init();

//$rubrics = Lister::GetData('email');

$query = "SELECT * FROM sendmail".$ordering->OrderBy_Item();
$result = mysql_query($query);

if ($result)
{
Streams::Append('main','<div class="divcheg">');
Streams::Append('main','<table class="maintable" align=center>');
if (mysql_num_rows($result))
{
Streams::Append('main','<tr>');
Streams::Append('main','<th colspan="2">'.$ordering->ShowItem('email','Адрес').'</th>');
if ($paramlist) Streams::Append('main','<th><b>Действия</b></th>');
Streams::Append('main','</tr>');
}
$i=1;
global $WORK;
while ($row = mysql_fetch_array($result))
{
Streams::Append('main','<tr>');
Streams::Append('main','<td>'.($i++).'.</td>');
Streams::Append('main','<td style="text-align: left;">'.$row['email'].'</td>');
Streams::Append('main','<td>');
Streams::Append('main','<a href="'.$_SERVER['PHP_SELF'].'?action=edit_email&id='.$row['id'].'" email="Редактировать"><img src="'.$WORK.'/images/service/notes_16x16.png" alt="V" email="Редактировать"></a>');
Streams::Append('main','<a href="'.$_SERVER['PHP_SELF'].'?action=delete_email&id='.$row['id'].'" email="Удалить"><img src="'.$WORK.'/images/service/delete_16x16.png" alt="Х" email="Удалить"></a>');
Streams::Append('main','</td>');
Streams::Append('main','</tr>');
}
Streams::Append('main','</table>');
Streams::Append('main','</div>');
} else {
Streams::AppendFirst('main',formats_err('Не удалось соединиться с базой данных'));
Streams::Append('error','SELECT failed!');
Streams::Append('error','Query: '.$query);
}
}





















function SendEmailMessage()
{
$edit_tpl = array();
$edit_tpl['email'] = $this->from;
$edit_tpl['to'] = $this->to;
$edit_tpl['subject'] = $this->subject;
$edit_tpl['text'] = $this->text;


global $DR;
require_once $DR.'/inc/_quickform.php';
//Скрытые служебыне элементы
$action = isset($_GET['action']) ? $_GET['action'] : NULL;
if (!$action) $action = isset($_POST['action']) ? $_POST['action'] : NULL;
$form->addElement('hidden','action',$action);

//Данные
$form->addElement('header','site','Отправить сообщение');

global $WORK;



$form->addElement('text','subject','Тема','style="width: 600px;"');


$form->addElement('hidden','lang',$_SESSION['lang']);
$form->addElement('textarea','text','Сообщение','style="height: 500px; width: 700px;" id="content"');


$form->addRule('text','У вас пустое сообщение','required');

$buttons[] = HTML_QuickForm::createElement('submit','btnSubmit','Отправить');
$buttons[] = HTML_QuickForm::createElement('reset','btnClear','Очистить');
$form->addGroup($buttons, null, null, ' ');

if ($form->validate()) {
if ($_POST['lang']) self::setDefaultLang($_POST['lang']);
// Форма проверена, обрабатываются данные
$form->freeze();

foreach ($_POST as $key => $value)
{
eval('$'.$key.' = $_POST['.$key.'];');
}
//Вытягиваем список адресов

$query = "SELECT `email` FROM `sendmail`";
$result = mysql_query($query);
if ($result)
{
$mailarr = Array();
while ($row = mysql_fetch_assoc($result))
{
$mailarr[] = $row['email'];
}


$subject = $subject;
$content = '<html><title>Рассылка от компании VIP Agent</title><body>'.$text.'</body></html>';
$to = implode(',', $mailarr);
$headers = "Content-type: text/html; charset=windows-1251 \r\n";
$headers .= "From: VIP Agent <no-replay@vipagent.in.ua>\r\n";
mail( $to, $subject, $content, $headers);

if (mail)
{
Streams::AppendFirst('main',formats_ok('Письма отправлены'));
$this->id = ($this_id) ? $this_id : mysql_insert_id();
} else {
Streams::Append('main',formats_err('Не удалось соединиться с базой данных'));
Streams::Append('error','Query: '.$query);
}
}


return true;
} else {
global $WORK;
$form->SetDefaults($edit_tpl);
if (!$this->output_stream) $this->output_stream = 'forms';
Streams::Append($this->output_stream,'<div class="divcheg">');
Streams::Append($this->output_stream,'<script type="text/javascript" src="'.$WORK.'/inc/ajax/manage_logo.js"></script>');
Streams::Append($this->output_stream,$form->toHTML());
Streams::Append($this->output_stream,'</div>');
// Вызываем javascript только, когда редактируем запись
$TinyMCE = '<script type="text/javascript" src="/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
mode : "exact",
theme : "advanced",
elements : "content",
plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,autosave,advlist,advlink,emotions,iespel l,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,full screen,noneditable,visualchars,nonbreaking,xhtmlxtras,wordcount",

// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright ,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquo te,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,real_code,|,insertdate,inserttime,preview,code |,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,pr int,|,ltr,rtl,|,fullscreen",
//theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del ,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,restoredraft,|,insertfile,insert image",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,

// Example content CSS (should be your site CSS)
content_css : "/'
.$_SESSION['lang'].'/styles/service.css",

language : "uk",
file_browser_callback: "ajaxfilemanager",

autosave_ask_before_unload : false
});

function ajaxfilemanager(field_name, url, type, win) {
var ajaxfilemanagerurl = "/tinymce/jscripts/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php";
switch (type) {
case "image":
break;
case "media":
break;
case "flash":
break;
case "file":
break;
default:
return false;
}
tinyMCE.activeEditor.windowManager.open({
url: "/tinymce/jscripts/tiny_mce/plugins/ajaxfilemanager/ajaxfilemanager.php",
width: 782,
height: 440,
inline : "yes",
close_previous : "no"
},{
window : win,
input : field_name
});
}
</script>
'
;
Streams::Append('js',$TinyMCE);
global $WORK;
Streams::Append($this->output_stream,'<!-- PopCalendar(tag name and id must match) Tags should sit at the page bottom --><iframe width=174 height=189 name="gToday:normal:agenda.js" id="gToday:normal:agenda.js" src="'.$WORK.'/modules/calendar/ipopeng.htm" scrolling="no" frameborder="0" style="visibility:visible; z-index:999; position:absolute; left:-500px; top:0px;"></iframe>');
}
}





}

?>


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

Вот что приходит в письме и на денвере и на гмейле:

X-Sendmail-Cmdline: sendmail.pl -t -i
To: voytenko.ov@gmail.com,olex2004@ukr.net
Subject: ыва
Content-type: text/html; charset=windows-1251
From: VIP Agent <no-replay@vipagent.in.ua>

<html><title>
Рассылка от компании VInt</title><body><p><img src=\"http://www.vi.ua/uploads/realty/0101_3.JPG\" alt=\"\" width=\"400\" height=\"301\" /></p></body></html>




тоесть тычит обратный слеш после знака = везде.


 ! 

М
Цитата
прошу прощения за простыню, но по другому никак

По-другому КАК, прячь "простыни" в тег more
Invis1ble




Спустя 25 минут, 44 секунды (14.09.2011 - 16:08) Winston написал(а):
Oliver Varnce
Ну и ?
Ни кода, ни сообщения, что за приколы ?

Спустя 14 минут, 47 секунд (14.09.2011 - 16:23) Oliver Varnce написал(а):
это глюк, только что все было

Спустя 6 минут, 23 секунды (14.09.2011 - 16:29) ApuktaChehov написал(а):
magic_quotes_gpc

Спустя 2 минуты, 10 секунд (14.09.2011 - 16:31) Oliver Varnce написал(а):
А вот с этого места, пожалуйста поподробнее

Спустя 1 минута, 55 секунд (14.09.2011 - 16:33) ApuktaChehov написал(а):

Спустя 27 секунд (14.09.2011 - 16:34) Oliver Varnce написал(а):
Все, понял,))) спасибо, разобрался, у меня в инициализирующем файле они влкючены эти ковычки))


Я их выключил, а все равно ничего не поменялось

Спустя 2 минуты, 43 секунды (14.09.2011 - 16:36) ApuktaChehov написал(а):
Посмотрите есть ли эти кавычки непосредственно перед попаданием в mail, т.е. перед отправкой.

Спустя 3 минуты, 40 секунд (14.09.2011 - 16:40) caballero написал(а):
magic_quotes выпилят в следующей версии PHP

используй stripslashes или типа того


и зачем кидать столько кода - кто его читать будет - достаточно внятно сформулировать проблемму

Спустя 3 минуты, 39 секунд (14.09.2011 - 16:44) Oliver Varnce написал(а):
Я подозреваю, что бок вот в этом куске кода
eval('$'.$key.' = $_POST[/'.$key.'/'];');

Что скажете как мне поправить? не могу никак сообразить

Спустя 41 секунда (14.09.2011 - 16:44) Oliver Varnce написал(а):
caballero
Я дико извиняюсь, кинул потому, что не знаю где недоработка!

Спустя 27 минут, 4 секунды (14.09.2011 - 17:12) alex12060 написал(а):

$content = stripslashes('<html><title>Рассылка от компании VIP Agent</title><body>'.$text.'</body></html>');

Спустя 3 минуты, 19 секунд (14.09.2011 - 17:15) Oliver Varnce написал(а):
alex12060
Очень тебе премного благодарен!

Вроде ничего сложного, а я не сообразил! Еще раз спасибо! Разобрались. Думаю тема полезная)

Спустя 3 минуты, 47 секунд (14.09.2011 - 17:19) inpost написал(а):
Oliver Varnce
Надо искать, почему в text попадают кавычки, а не убирать их smile.gif

Спустя 8 минут, 53 секунды (14.09.2011 - 17:27) Oliver Varnce написал(а):
В том то и соль, что в тексте все отображается отлично, а вот после знака равенства наченается белеберда, тоесть после каждого знака = плюсуется \

Спустя 4 минуты, 21 секунда (14.09.2011 - 17:32) twin написал(а):
Запусти этот скрипт
<?php

$_POST = array("a=0;print('пипец сайту');exit;//" => 'b');

foreach ($_POST as $key => $value)
{
eval('$'.$key.' = $_POST['.$key.'];');
}


Ужаснись и прочтай про extract()

А вообще лучше так не делать.


_____________
мой хостинг - GlobalNET.com.ua
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.