繁体   English   中英

PHP表单-将当前URL作为隐藏值发布

[英]PHP form - post current URL as hidden value

我在获取发送填充表单的当前URL时遇到麻烦。

我想将相同的表格用于更多的网站。

这是我的表单代码:

<form method="post" action="send_c_box.php">
    <input type="text" class="textbox" name="meno" value="meno" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'meno a priezvisko';}">
    <input type="text" class="textbox" name="email" value="email" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'e-mail';}">
    <input type="hidden" name="current_url" value="<?php echo'http://',$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];?>"  readonly/>
    <div class="clear"></div>
    <div>
        <textarea value="Vaša správa:" name="mytext" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Vaša správa...';}">Vaša správa...</textarea>
    </div>
    <span><input type="submit" name="submit" class="" value="Odoslať"></span>
</form>

和PHP发送电子邮件。 我需要它的$ message来显示URL,但是我无法通过调用$ url使它工作

<?php

header( "refresh:3;url=index.html" );

if(isset($_POST['submit'])) {

    $to = "szabo@atria.sk";
    $from = $_POST['email'];
    $first_name = $_POST['meno'];
    $url = $_POST['current_url'];

    $subject = "Správa z kontaktného formuláru";
    $subject2 = "Potvrdenie o odoslaní formuláru";
    $message = $first_name . " napísal vo formulári:" . "\n\n" . $_POST['mytext'] . "from" . $url;
    $message2 = "Dakujeme za odoslanie formuláru. V krátkom case Vás kontaktujeme.";
    $headers = "From:" . $from;
    $headers2 = "From:" . $to;

    mail($to,$subject,$message,$headers);
    mail($from,$subject2,$message2,$headers2);

    echo "Dakujeme za odoslanie vyplneného formuláru " . $first_name . ", za okamih budete presmerovaný spät.";
}

?>

我要去哪里错了?

一个解决方案是还使用:

$thisUrl=$_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];

这是一个可能对您有帮助的功能:)

function get_current_url() {
  $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;
}

它可与http和https一起使用,并将返回您当前的网址。

在您的代码中

<input type="hidden" name="current_url" value="<?php echo'http://',$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];?>"  readonly/>

您正在尝试用逗号(,)而不是点(。)来连接http://字符串。

尝试这个

<input type="hidden" name="current_url" value="<?php echo 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>" />

您隐藏的输入中的逗号(“ http://”之后)。 一定是:

    <input type="hidden" name="current_url" value="<?php echo 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];?>"  readonly/>

我想通了,只用了window.location.href

<input type='hidden' id='currentId' name="current_url">
<script type="text/javascript">
document.getElementById('currentId').value=window.location.href ; 
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM