【发布时间】:2013-03-12 20:05:08
【问题描述】:
我正在使用 Joomla Easy Flash Uploader,上传完成后,系统会自动向管理员(或我选择的人)发送一封电子邮件。它旨在在电子邮件中显示登录用户的姓名,但它只是继续显示“Guest”,即使该表单仅由登录用户访问。我迫切需要这个来正确提取用户名。消息内容如下:(文件名和位置已被删除以保护我的网站。
一位客人(客人)已于 2013 年 3 月 12 日星期二 14:56:07 -0500 成功将 FILE NAME 上传到 LOCATION。
- 查看代码:
//邮件通知 if ($_POST['notify'] != false && JMailHelper::isEmailAddress($_POST['recipient'])) { //获取邮件对象 $mailer =& JFactory::getMailer();
//set up the sender
$config =& JFactory::getConfig();
$sender = array(
$config->getValue( 'config.mailfrom' ),
$config->getValue( 'config.fromname' )
);
$mailer->setSender($sender);
//set up recipient
$mailer->addRecipient($_POST['recipient']);
//get user info
$user_info = array();
$user =& JFactory::getUser();
if ($user->guest == true)
{
$user_info['name'] = 'A guest';
$user_info['username'] = 'Guest';
}
else
{
$user_info['name'] = $user->name;
$user_info['username'] = $user->username;
}
//set up message
$body = $user_info['name']." (".$user_info['username'].") has successfully uploaded ".$fileName;
$body.= "(".sizeToText($fileSize).") to ".JPATH_SITE.DS.$cleanedSubPath;
$body.= " at ".date("r", time()).".\n";
$mailer->setSubject('New File Uploaded - PC Scribe');
$mailer->setBody($body);
//send email
$send =& $mailer->Send();
if ($send !== true)
{
//error: DO NOTHING!!!
/****DEBUGGING****/
//$replaceText.= ' * Email error *';
/**** CODE ****/
}
else
{
//success: DO NOTHING!!!
/****DEBUGGING****/
//$replaceText.= ' (Email sent)';
/**** CODE ****/
}
}
【问题讨论】:
-
天哪!这个“$_POST”到底是什么鬼?
-
var_dump($user)显示什么?另外,你不需要通过引用分配,它会从php 5.3+开始产生警告,所以改为$user = JFactory::getUser();。还有,什么叫邮寄功能,怎么叫? -
只是让您知道,您不应该使用
&符号,您应该使用Joomla 编码标准,而不是$_POST