【问题标题】:passing form variables into a url with php使用 php 将表单变量传递到 url
【发布时间】:2009-11-17 12:22:39
【问题描述】:

我有以下表格,允许用户选择酒店预订的日期/房间。

<form action="booking-form.php" method="post">
  <fieldset>
    <div class="select-date">
      <label>Arrival Date</label>
      <select name="arrd" class="day">
        <option value="1" >1</option>
        ... snip ...
        <option value="24" selected="selected">24</option>
      </select>

      <select name="arrm" class="month">
        <option value="01" >January</option>
        ... snip ...
        <option value="11" selected="selected">November</option>
      </select>
      <select name="arry" class="year">
        <option value="2009" selected="selected">2009</option>
        ... snip ...
      </select>
    </div>
    <div class="more">
    <div class="info">
      <label>Days</label>
      <select name="days">
        <option value="1">01</option>
        ... snip ...
        <option value="7" selected="selected">07</option>
      </select>
    </div>
    <div class="info">
      <label>Rooms</label>
      <select name="rooms">
        <option value="1">01</option>
        ... snip ...
      </select>
    </div>
    </div>
    <input type="submit" value="Check availabilty"/>
    <input type="hidden"  name="submitted" value="TRUE"/>
  </fieldset>
</form>

这是一个 php,它应该处理从表单传递的变量,并通过 url 将它们传递给预订提供商。 当表单提交时没有任何反应,只是一个没有错误的白屏。

<?php

 ini_set ('display_errors',1);  
 error_reporting (E_ALL & ~ E_NOTICE);  

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

  $errors = array();

  // A bunch of if's for all the fields and the error messages.


  if (empty($_POST['arrd'])) {
    $errors[] = 'Please select a day';
} else{
    $arrd = ($_POST['arrd']);
}

if (empty($_POST['arrm'])) {
    $errors[] = 'Please select a month';
} else{
    $arrm = ($_POST['arrm']);
}

if (empty($_POST['arry'])) {
    $errors[] = 'Please select a year';
} else{
    $arry = ($_POST['arry']);
}

if (empty($_POST['non'])) {
    $errors[] = 'Please choose a number of nights';
} else{
    $non = ($_POST['non']);
}


if (empty($_POST['norooms'])) {
    $errors[] = 'Please choose a number of rooms';
} else{
    $norooms = ($_POST['norooms']);
}


if (empty($errors)){
$arrdate = $arrd . " " . $arrm ."" . $arry; 

$url ="https://portals.uk.rezlynx.net/DHPPORTAL/wfrmpakquery.aspx?SiteID=DHOLDHALL&arrdate=$arrdate&non=$non&norooms=$norooms";
 header('Location: $url');
exit();

 }

 else{
 foreach($errors as $msg){

 echo"-msg<br/>\n";
 }

 }

 ?>

谁能看到我错过了什么?

提前谢谢..

【问题讨论】:

    标签: php url variables


    【解决方案1】:

    线

    header('Location: $url');
    

    应该是

    header("Location: $url");
    

    变量不在单引号内计算。

    【讨论】:

    • +1 来自我,但我只落后你一分钟左右,想要 +1 我:p
    【解决方案2】:

    如果您通过 PHP 的 lint 检查器 (php -l) 运行代码,您会在第 62 行(最后一行)看到语法错误

    您只是缺少需要关闭初始“if”语句的花括号。

    【讨论】:

      【解决方案3】:

      问题可能是

      header('Location: $url');
      exit();
      

      尝试一下

      header('Location: '.$url);
      exit();
      

      header("Location: $url");
      exit();
      # using the double quotes will parse the $url variable
      

      【讨论】:

        【解决方案4】:

        您不能在表单的操作属性中使用该 URL 并将方法设置为 GET 吗?

        <form action="https://portals.uk.rezlynx.net/DHPPORTAL/wfrmpakquery.aspx?SiteID=DHOLDHALL" method="get">
            [...]
        </form>
        

        【讨论】:

        • 我从没想过! - 我试了一下,得到了一个 apache 错误页面。提供商声明网址必须采用以下格式...portals.uk.rezlynx.net/DHPPORTAL/… 有什么想法吗?
        • “错误”的 URL 究竟是什么样的?我想他们要么不与传递的其他 URL 字段相处(这没有意义),要么浏览器对第一个参数使用问号而不是 &amp;,这会导致问题,因为有操作 URL 中已有一个参数。在后一种情况下,将以下字段添加到 URL:&lt;input type="hidden" name="SiteID" value="DHOLDHALL" /&gt;
        • -1 如果使用 GET 方法,表单数据将覆盖表单操作中的查询字符串
        猜你喜欢
        • 2020-03-29
        • 2014-12-06
        • 1970-01-01
        • 2011-07-14
        • 1970-01-01
        • 1970-01-01
        • 2012-11-06
        • 1970-01-01
        • 2014-01-22
        相关资源
        最近更新 更多