【问题标题】:PHP/HTML feedback form: How to get the URL of the current page?PHP/HTML 反馈表:如何获取当前页面的 URL?
【发布时间】:2017-11-20 17:42:55
【问题描述】:

我正在使用 HTML 和 PHP 创建一个简单的反馈表单。表单和脚本正在运行,我收到了提交的电子邮件,除了一个问题: => 我希望反馈表发送使用反馈表的页面的 URL,并在我的电子邮件中接收。我想知道用户正在谈论哪个页面。例如,如果用户单击反馈按钮并在http://example.com/features 页面上打开反馈表单(模式),我希望在我的电子邮件中包含该页面的 URL (http://example.com/features) 以及反馈消息。

这是我的 HTML 和 PHP:

HTML 表单:

<div id="myModal" class="modal">
    <div id="modal-box" class="modal-content">
         <div class="modal-header">
         	<span class="close">×</span>
            <h2>Some Heading?</h2>
        </div>
        <div class="container">
         <!--The submitt button in the form redirects action to the PHP script for message submission -->
        <form action="http://example.com/mailer.php" role="form" name="feedbackForm" id="feedback_docs"  method="post" >
           <textarea id="comments" type="text" name="comments" placeholder="Please write your comments about this topic here." style="height:200px"></textarea>
            <input id="submit" name="submit" type="submit" value="Send" />
        </form>
     </div>
</div>
</div>      
<div id="myBtn">
    <button id="popup" class="feedback-button">FEEDBACK</button>
    <p id="demo"></p>
</div>

PHP:

<?php
 $comments = $_POST['comments'];
 $to = 'feedback@example.com';
 $subject = 'Feedback received from website';
 $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PATH_INFO'];
 $headers[] = 'MIME-Version: 1.0';
 $headers[] = 'Content-type: text/html; charset=iso-8859-1';
 $body = "Message: \r\r $comments";
if ($_POST['submit']) {
    if (mail ($to, $subject, $url, $body)) { 
        echo '<p>Your message has been sent!</p>';
    } else { 
        echo '<p>Something went wrong, go back and try again!</p>'; 
    }
}
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

如果您查看 PHP 脚本,我尝试添加以下内容:

$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PATH_INFO'];

我也试过了:

$url = "http://".$_SERVER['HTTP_REFERER'].$_SERVER['REQUEST_URI'];,

但都没有用。

我只是在学习 PHP 和脚本,所以我可能犯了一些错误。感谢您的帮助!

【问题讨论】:

  • 这看起来不像 PHP 正在做任何交互工作。如何使用 AJAX / JavaScript 获取信息?请发布该代码。你需要在success 事件中做点什么。
  • 抱歉,没有正确理解问题。现在我已经回答好了。

标签: php html forms webforms


【解决方案1】:

无论用户在哪个文件中,请求最终都会转到同一个 PHP 文件。所以,你需要找到推荐人。但它在 PHP 方面是不可靠的。相反,您所做的是使用隐藏的输入并将其传递:

<input type="hidden" name="fromPage" value="feedbackForm" />
<input type="hidden" name="url" value="https://www.example.com/feedback.html" />

然后在您的POST 数据中捕获它们并将其发送到您的电子邮件。

【讨论】:

  • 感谢您的帮助,苏莉。我们有数百页。我所做的是将表单添加到母版页。我可能需要添加某种变量,该变量会自动在我的电子邮件中发送特定页面的 URL,而不会将完整的 URL 作为值写入?那么,如果我在表单中使用隐藏输入,我将如何在 PHP 中捕获它?
  • 啊...好吧... :) 您可以使用&lt;input type="hidden" name="url" value="https://&lt;?php echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?&gt;" /&gt;动态创建&lt;input type="hidden" name="url" value="https://www.example.com/feedback.html" /&gt;
【解决方案2】:

原因是你使用了一些不正确的部分。 正确的两个是

 $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

【讨论】:

  • 感谢您的回复,福布斯。我尝试添加您的建议,但我没有收到电子邮件,但看起来它已成功提交。
  • 如果您没有收到电子邮件,那是一个完全不同的问题......您必须查看您的邮件服务器是否设置正确并且没有防火墙,并允许发送...... .etc echo out $url 看看是否设置正确
  • 我们已经正确配置了服务器。我收到了那封电子邮件,但在添加:$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 后它就停止了。我还在检查。我会尽快更新我的帖子。谢谢!
  • 啊...那么它在你的邮件命令中,我觉得它看起来很有趣。将mail ($to, $subject, $url, $body) 更改为mail ($to, $subject, $url. $body) 注意$url 之后的句点...我想知道body 怎么可能是第四个参数
  • 感谢福布斯的快速回复。是的,它有效,但我收到的 URL 是 PHP 页面 http://example.com/mailer.php。我会尝试改变一些东西,看看它是否有效。我至少在我的电子邮件中收到了一个 URL,这肯定是一个开始 :)
【解决方案3】:

这是我的问题的解决方案。 Forbs 提供的答案非常有用。

我将$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 更改为$url = "http://".$_SERVER['HTTP_REFERER'];

解决方案非常简单,我缺乏 PHP 经验,这对我来说很有挑战性!

【讨论】:

    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2011-01-15
    相关资源
    最近更新 更多