无法从表单中请求价值

时间:2015-10-27 12:53:54

标签: php get request

我有一个非常简单的形式,我需要显示在'Client_custom_50'中发布的值,我尝试了多种方法,但我似乎无法在'landing-thank-you.php'上显示结果页面,我试过:var_dump($_REQUEST);我收到了这个:

array(12) { ["Prefs_dontMatchOnClientName"]=> string(0) "" 
            ["Client_name"]=> string(0) "" 
            ["Contact_name"]=> string(4) "test" 
            ["Contact_email"]=> string(13) "test@test.com" 
            ["Contact_phone"]=> string(14) "00000000000000" 
            ["Client_custom_49"]=> string(0) "" 
            ["Client_custom_50"]=> string(17) "La Cala Hill Club" 
            ["Client_custom_48"]=> string(0) "" 
            ["Client_custom_55"]=> string(0) "" 
            ["formCid"]=> string(4) "6784" 
            ["formId"]=> string(37) "6784ud015dc078c474200ba24f18aa6588afc" 
            ["validation"]=> string(0) "" 
          } 

我试过echo $_REQUEST['Client_custom_50'];也许我错过了一些非常明显的东西。

我的表单使用以下网址进入我们的CRM系统:然后重定向到感谢页面,如果我告诉操作直接转到'landing-thank-you.php'而不是通过CRM一切都很好,所以如何让它保持CRM行动,然后转到感谢(并显示我的结果)

index.php HTML:

<!--<form action="https://power.upsales.com/api/external/formSubmit" method="POST" class="upsale-form">-->
        <form action="landing-thank-you.php" method="post" class="upsale-form">
            <input type="hidden" class="form-control" name="Prefs.dontMatchOnClientName" style="display: none;" />
            <input type="hidden" class="form-control" name="Client.name" style="display: none;" />
            <div class="control-group">
                <input type="text" class="form-control required" name="Contact.name" placeholder="Name" required />
            </div>
            <div class="control-group">
                <input type="email" class="form-control required" placeholder="Email" name="Contact.email" required />
            </div>
            <div class="control-group">               
                <input type="text" class="form-control required" placeholder="Phone" name="Contact.phone" required />
            </div>

            <input type="hidden" class="form-control origin" name="Client.custom_49" />
            <input type="hidden" class="form-control propertyRef" id="hiddenValue" name="Client.custom_50" value="La Cala Hill Club" />
            <input type="hidden" class="form-control remarketing" name="Client.custom_48" />
            <input type="hidden" class="form-control keyword" name="Client.custom_55" />

            <input type="hidden" name="formCid" value="6784" />
            <input type="hidden" name="formId" value="6784ud015dc078c474200ba24f18aa6588afc" />
            <input type="hidden" name="validation" value="" />
            <input type="submit" value="Submit" id="submit" />
        </form>
谢谢你页面php:

//var_dump($_REQUEST);
        $property = $_REQUEST['Client_custom_50'];
        $propertyName = strtolower(str_replace(" ", "-", $property)); 

        $propertyDevName = $_REQUEST['Client_custom_50'];

        if ($_REQUEST['Client_custom_50'] == $propertyDevName) {
            echo "<a href='download/".$propertyName.".pdf'>Download PDF for ".$property."</a>";
        }

2 个答案:

答案 0 :(得分:2)

<击> 这里的问题是这个

name="Client.custom_50"
            ^

你正在使用

$_REQUEST['Client_custom_50']
                 ^

name属性有一个输入点,而$ _REQUEST数组有一个下划线。

你的其他一些投入也是如此。

  • 名称属性和$ _REQUEST数组必须匹配。

您可以将其重命名为name="Client_custom_50"或重命名$ _REQUEST数组$_REQUEST['Client.custom_50']。同样,对于你所有的点输入都是一样的。

  • 选择是你的

<击>

Nota:由于PHP用下划线替换了点,因此上面的内容被删除了。我在测试后注意到了这一点,并记得PHP自动执行此操作。

  • 旁注:您的某些隐藏输入没有值。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

<强>脚注:

旁注:虽然有些事情尚不清楚。您的操作显示为action="landing-thank-you.php"但您在问题中显示“thank-you page php”。你可能意味着“landing-thank-you.php”

  • 对所有isset()使用条件!empty()$_REQUEST

<强>诺塔:

如果您的CRM浏览量超过1页,则后续页面将丢失所有值。

您需要使用会话。

还要检查的是检查是否发生了不可见的转换,在某处更改了点/下划线等字符。

如果这是跨域相关的,请在不同域中保留会话变量,参考堆栈上的Q&amp; A。

这也可能有用:

旁注:看到这个已提交的action="https://power.upsales.com/api/external/formSubmit"也值得怀疑。这看起来就像你正在经历的CRM。

会话示例:

<?php 

session_start();

error_reporting(E_ALL);
ini_set('display_errors', 1);

    $property = $_REQUEST['Client_custom_50'];
    $propertyName = strtolower(str_replace(" ", "-", $property)); 

    $propertyDevName = $_REQUEST['Client_custom_50'];

    if ($_REQUEST['Client_custom_50'] == $propertyDevName) {
        echo "<a href='download/".$propertyName.".pdf'>Download PDF for ".$property."</a>";
    }

$_SESSION['var'] = $propertyDevName;

?>

<a href="landing_2.php">Check session</a>

<强> landing_2.php

<?php 

session_start();

if(isset($_SESSION['var'])){

    echo $_SESSION['var'];

    $var2 = $_SESSION['var'];

    echo "<hr>";

    echo $var2;

}

...在使用您发布的代码时,两次回复“La Cala Hill Club”(并为其指定一个变量)。

  • 因此,这里可能的解决方案就是会议。

如果您担心会话被劫持,请阅读以下文章:

答案 1 :(得分:-1)

您没有任何&#39; Client_custom_50&#39;,您必须具有与以下内容相同的输入值:

<input type="hidden" class="form-control remarketing" name="Client.custom_50" />