0

私は Joomla Easy Flash Uploader を使用しています。アップロードが行われると、管理者 (または私が選択した人) に送信される自動電子メールがあります。ログインしたユーザーの名前を電子メールに表示するように設計されていますが、ログインしているユーザーのみがフォームにアクセスしているにもかかわらず、単に「Guest」と表示され続けます。ユーザー名を適切にプルするには、これがどうしても必要です。メッセージの内容は次のとおりです: (ファイル名と場所は、Web サイトを保護するために単に削除されました。

ゲスト (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   ****/
    }
}
4

1 に答える 1

0

コードに問題があるとは本当に思いません (まあ、$_POST を使用するセキュリティ上の問題は別として)。

少なくともコード自体は機能します。

$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;
}

var_dump($user_info);

唯一の説明は、おそらく拡張機能が Joomla の外で何らかの形で機能することです! ユーザーセッションが何らかの形で失われます。

$user の var_dump($user) で内容を確認して、自分でいくつかのテストを行います。

于 2013-03-12T21:01:24.480 に答える