【问题标题】:function CurrentPageURL() responds the name of action form and not the actual URL函数 CurrentPageURL() 响应操作表单的名称,而不是实际的 URL
【发布时间】:2013-03-12 15:16:21
【问题描述】:

我在一个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 文件中,我调用了变量$urlToPutInEmail。 简单的就是…… 注意,这是在 opencart 框架上工作的。

再次感谢 IMSoP!

【问题讨论】:

  • 抱歉,您没有显示任何电子邮件生成代码,因此很难为您提供帮助。
  • @Raad,我添加了一些代码...请检查并建议。

标签: php forms url get smarty


【解决方案1】:

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

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

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

如果您真正想要的是页面 before 中的 URL(即打开表单的那个),您需要将其作为表单中的额外字段传递(例如填充 &lt;input type="hidden"&gt;使用您的 PHP 函数)。

【讨论】:

  • 谢谢!这正是正在发生的事情。由于我对这些东西不太熟悉(显然),请您详细解释一下我该怎么办?
  • 只需将其添加到您的表单中:&lt;input type="hidden" name="urlToPutInEmail" value="{$current_url}"&gt;,您已将 CurrentPageURL() 的结果作为名为“current_url”的变量传递给 Smarty
  • 谢谢,我正在努力让它工作......我想我已经正确连接了变量,但是......我应该把CurrentPageURL()行放在哪里?
  • 如果没有看到您的整个应用程序,我真的无法回答这个问题!基本上,无论您在哪里构建带有“tellform”的页面。
  • 它与 MVC 框架有问题。我想我应该把那些CurrentPageURL() 行放在那里。尽管如此,它还是会出错,所以我不知道...也许我也应该对控制器文件进行一些更改...
猜你喜欢
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 2016-01-23
  • 1970-01-01
  • 2011-03-18
  • 2018-03-26
  • 2011-01-02
相关资源
最近更新 更多