【问题标题】:Sending page URL with Contact Form使用联系表发送页面 URL
【发布时间】:2016-04-12 10:48:58
【问题描述】:

我希望动态提交用户从中提交联系表单的页面 URL。

例如,如果有人在主页上使用联系表单,则 URL (https://www.example.com/) 将被添加到电子邮件中,这将根据用户从哪个页面提交页面而改变。

那么,我已经尝试使用 -

 $absolute_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

是的,这确实有效,但是,我通过的 URL 如下:

来自网址:

http://example.com/email/index.php

我想,这是因为邮件脚本位于它自己的目录和单独的文件中,这是 $absolute_url 从中获取的位置。

非常感谢任何帮助。

谢谢 卡尔。

【问题讨论】:

  • 试试$_SERVER['HTTP_REFERER']
  • js window.location.href
  • @RoryMcCrossan 谢谢。设法让它与 $_SERVER[HTTP_REFERER] 一起工作

标签: php jquery html ajax forms


【解决方案1】:

您可以在包含 URL 的表单中创建隐藏输入。

HTML 格式

<input id="ref" name="url" type="hidden" value=""/>

Javascript

document.getElementById("ref").setAttribute("value",window.location.href);

【讨论】:

    【解决方案2】:

    您需要当前的 URL 值。 @Pupil 的函数可以解决问题,但您可能会遇到一个问题。

    并非每个服务器都设置了 $_SERVER['HTTPS'],因此您可能会收到一条错误消息,指出 HTTPS 不在 $_SERVER 数组中。比如:

    注意:未定义索引:HTTPS in..

    这是因为如果 key 不存在,则无法进行比较。

    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    

    您应该使用isset(),因为它会检查变量是否已“设置”或可供参考。所以你最好选择:

    if ( isset( $_SERVER["HTTPS"] )) {$pageURL .= "s";}
    

    您甚至可以使用“@”运算符抑制可能的通知,但您应该稍微更改函数逻辑。你可以这样:

      function getCurrentUrl(){
          $pageURL  = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] : 'https://'.$_SERVER["SERVER_NAME"];
          $pageURL .= ( $_SERVER["SERVER_PORT"] != 80 ) ? ":".$_SERVER["SERVER_PORT"] : "";
          $pageURL .= $_SERVER["REQUEST_URI"];
          return $pageURL;
            }    
    echo getCurrentUrl();
    

    希望这会有所帮助。

    【讨论】:

    • 感谢您的帮助!很好的解释,现在一切正常。
    【解决方案3】:

    从您的描述看来,您需要当前页面的网址。

    这是相同的功能:

    <?php
    function curPageURL() {
     $pageURL = 'http';
     if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
      $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     } else {
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }
     return $pageURL;
    }
    echo curPageURL();
    ?>
    

    【讨论】:

    • 如果 HTTPS 不在 $_SERVER 数组中,这可能会返回错误通知。
    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    相关资源
    最近更新 更多