JRequest :: getVar即使在刷新后仍保留以前的值

时间:2013-08-12 09:05:59

标签: joomla3.0

我正在写一个邮件功能作为joomla 3中的模块。电子邮件工作正常,但是当我重新加载页面并插入不同的电子邮件并发送时,它似乎通过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);
    }
    ?>

@Mario这是帮助代码:

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

3 个答案:

答案 0 :(得分:0)

首先,在J3中不推荐使用JRequest类。您应该使用JInput

$input = JFactory::getApplication()->input;
$your_var = $input->get('your_var');

然后,关于电子邮件,您可能需要在成功实现(发送邮件)时,或者换句话说,当您不再需要时,取消设置会话变量。

$app = JFactory::getApplication();
// your_var is the variable you want to unset
$app->setUserState('mod_your_module.your_var', null);

希望有所帮助

答案 1 :(得分: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);
}
?>

答案 2 :(得分:0)

您可以使用此代码

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

默认值的第四个参数