function CurrentPageURL()响应操作表单的名称而不是实际的URL

时间:2013-03-12 15:16:22

标签: php forms url get smarty

我在tellform表单的.php文件中有以下几行:

// Gets the current URL
function CurrentPageURL()
{
    $pageURL = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://';
    $pageURL .= $_SERVER['SERVER_PORT'] != '80' ? $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"] : $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    return $pageURL;
}
$url = CurrentPageURL();

以及以下某处:     $message = "Hi! blahblahblah : $url";

另外,在.tpl文件中我有以下行:

<form id="tellform" action="tellafriend/processTell.php" method="post">

一切正常,除了发送的电子邮件包含/tellafriend/processTell.php的链接,而不是浏览器中显示的产品的实际链接。 我该怎么做才能纠正这个问题? 谢谢!

编辑1 这是关于提交电子邮件的.js部分:

// Use Ajax to send everything to processTell.php
submitHandler: function(form) {
    $("#send").attr("value", "Slanje...");
    $(form).ajaxSubmit({
        success: function(responseText, statusText, xhr, $form) {
            $(form).slideUp("fast");
            $("#response-tell").html(responseText).hide().slideDown("fast");
        }
    });
    return false;
}

解决 所以,感谢IMSoP我解决了这个问题。 他解释了问题发生的地方,所以我最终得到了它。 我完全删除了这条function CurrentPageURL行,并在相关表单的.tpl页面中插入了以下代码:

<input type="hidden" name="urlToPutInEmail" value="<?php echo $this->url->link('product/product', 'product_id=' . $product_id); ?>" />

在tellform.php文件中,我调用了varible $urlToPutInEmail。 简单就是...... 注意,这是在opencart框架上工作。

再次感谢IMSoP!

1 个答案:

答案 0 :(得分:0)

您的JS没有发送电子邮件,它正在将表单提交到另一个PHP文件(使用ajaxSubmit)。

就PHP而言,AJAX请求就像任何其他页面请求一样 - 在这种情况下,它就像您的表单具有正常的“提交”按钮一样。

因此,如果是“tellafriend / processTell.php”正在接收表单数据并生成电子邮件,那么“当前URL”在执行此操作时将为“tellafriend / processTell.php”。

如果你真正想要的是来自之前的页面(即表格上的那个)的网址,你需要将其作为表单中的额外字段传递(例如填充{{1使用PHP函数)。