0

joomla 3でメール機能をモジュールとして書いています。eメールは問題なく動作するのですが、ページをリロードして別のメールを挿入して送信すると、JRequest::getVar関数で前のメールを返すようでした。この問題を解決する方法はありますか? 前もって感謝します..

これは私が使用したコードです:

    <?php

    defined('_JEXEC') or die('Direct Access to this location is not allowed.');

    require_once(dirname(__FILE__) . DS . 'helper.php');

    //declaration
    $input = JFactory::getApplication()->input;

    $form_send = $input->get('form_send', 'notsend');
    $fanme = $input->get('firstName');
    $lname = $input->get('lastinput');
    $email = $input->get('email', 0 , 'STRING');

    $mail=false;
    $emailexist=false;

    echo '<script>
        var php_var = "chk is first:'.$email.'";
        alert(php_var);
        </script>';
    switch ($form_send) {

        case 'send':

           if ((is_null($fanme) || is_null($lname) || is_null($email)) || (!filter_var($email, FILTER_VALIDATE_EMAIL))) {
                echo '<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fields are empty or not valid.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></div>';
            } else {

                    $mail = ModLittleContactHelper::SendMail($email, $fanme, $lname);
                    echo '<script>
                    var php_var = "chk when mail sending:'.$email.'";
                    alert(php_var);
                    </script>';
                   $input = JFactory::getApplication();//i have tried $app also
                   $input ->setUserState('mod_mycontact.email', null);

                }
                //echo $respond
                if (!$mail) {
                    echo 'Error sending email:';
                    require(JModuleHelper::getLayoutPath('mod_myecontact', 'default_tmpl'));
                }else{

                    require(JModuleHelper::getLayoutPath('mod_mycontact', 'sendok_tmpl'));
                    break;
                }


        default:

            require(JModuleHelper::getLayoutPath('mod_littlecontact', 'default_tmpl'));
            unset($var);
    }
    ?>

@マリオこれはヘルパーコードです:

    class ModLittleContactHelper{
        public function SendMail($email, $fname, $lname) {


        $body = "<p style='font-family:arial;font-size:20px;'>Hi  " . $fname . " " . $lname . ",</p>";
        $body.="<p style='font-family:arial;font-size:20px;'>Welcome to Crowd Logistics! Please verify your email address below.</p><br/><br/>";
        $body.= "<hr><br/>";
        $body.= "<p style='align:center;background-color:#40B3DF;font-family:arial;color:#FFFFFF;font-size:20px;'><a href='http://suriyaarachchi.com/crowdlogistics/index.php?option=com_content&view=article&id=192' target='_blank'>Verify " . $email . "</a></p>";
        $body.= "<br/><hr><br/>";
        $body.="<p style='text-align:right;font-family:arial;font-size:20px;'>Or, paste this link into your browser:<br/>";
        $body.= "http://crowdlogistics/index.php?option=com_content&view=article&id=192<br/><br/>";
        $body.= "Thanks.<br/>";
        $body.= "CrowdLogistics</p><br/>";


        $mailer = & JFactory::getMailer();
                $mailer->setSender('info@crowdlogistics.com');
                $mailer->addRecipient($email);
                $mailer->setSubject('Mail from CrowdLogistics - Confirm your email');
                $mailer->setBody($body);
                $mailer->IsHTML(true);
                $send = & $mailer->Send();



        return $send;
      }
4

3 に答える 3

0

コードを Joomla 3 で実行しようとしているため、いくつか間違っていることがあります。以下のコードは、修正できた場所で修正されています。次に、インスタンス化されたクラスを使用してモジュール環境でテストする必要があります (つまり、モジュールで以下のコードをテストします)。

<?php

defined('_JEXEC') or die('Direct Access to this location is not allowed.');

require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'helper.php');

//declaration
$doc = JFactory::getDocument();
$app = JFactory::getApplication();
$input = $app->input;

$form_send = $input->get('form_send', 'notsend');
$fanme = $input->get('firstName');
$lname = $input->get('lastinput');
$email = $input->get('email', 0 , 'STRING');

$mail=false;
$emailexist=false;

$doc->addScriptDeclaration('
var php_var = "chk is first:'.$email.'";
alert(php_var);
');

switch ($form_send) {

case 'send':

    if ((is_null($fanme) || is_null($lname) || is_null($email)) || (!filter_var($email, FILTER_VALIDATE_EMAIL))) {
        echo '<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fields are empty or not valid.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></div>';
    } else {

        $mail = ModLittleContactHelper::SendMail($email, $fanme, $lname);
        $doc->addScriptDeclaration('
                var php_var = "chk when mail sending:'.$email.'";
                alert(php_var);');
        $app->setUserState('mod_littlecontact.email', null);

    }
    //echo $respond
    if (!$mail) {
        echo 'Error sending email:';
        require(JModuleHelper::getLayoutPath('mod_littlecontact', 'default_tmpl'));
        break;
    }else{
        require(JModuleHelper::getLayoutPath('mod_littlecontact', 'sendok_tmpl'));
        break;
    }

default:

    require(JModuleHelper::getLayoutPath('mod_littlecontact', 'default_tmpl'));
    unset($var);
}
?>
于 2013-08-12T17:26:36.960 に答える
0

このコードを使用できます

$email = $input->get('email', 0 , 'STRING','');

デフォルト値の 4 番目の引数、

于 2013-08-12T17:27:46.173 に答える