2015-10-27 4 views
0

У меня есть очень простая форма, из которой мне нужно показать значение, размещенное в «Client_custom_50», и я попробовал несколько способов, но я не могу показать результаты на «посадке» -Спасибо-you.php»страницы, я попробовал: var_dump($_REQUEST); и я получаю это:не может запрашивать значение из формы

array(12) { ["Prefs_dontMatchOnClientName"]=> string(0) "" 
      ["Client_name"]=> string(0) "" 
      ["Contact_name"]=> string(4) "test" 
      ["Contact_email"]=> string(13) "[email protected]" 
      ["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, используя URL-адрес: затем перенаправляется на страницу благодарности, если я скажу, что действие направляется на «приземление-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> 

благодарственное -you page 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>"; 
     } 
+0

вам нужно разместить свой полный код для всех страниц, включая формы. Если нет, используйте отчет об ошибках. –

+0

обновил вопрос, спасибо –

+0

Спасибо «ты» ;-) Я отправил свой ответ для вас ниже. –

ответ

2

Проблема здесь это

name="Client.custom_50" 
      ^

и вы используете

$_REQUEST['Client_custom_50'] 
       ^

Атрибут имя имеет точку для входа, а массив $ _REQUEST имеет подчеркивание.

То же самое относится и к некоторым другим входам.

  • И атрибуты имени, и массивы $ _REQUEST должны совпадать.

Либо вы переименовать его в name="Client_custom_50" или переименовать $ _REQUEST массив $_REQUEST['Client.custom_50']. Опять же, то же самое касается всех ваших входов с точками.

  • Выбор за вами

Nota: Выше было вычеркнут, так как PHP заменяет точки с подчеркиванием. Я заметил это после тестирования и вспомнил, что PHP делает это автоматически.

  • Sidenote: Некоторые из ваших скрытых входов не имеют значений.

Добавить error reporting в начало файла (ов), который поможет найти ошибки.

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

// rest of your code 

Sidenote: Отображение ошибок не должно быть сделано только в постановке, и никогда производства.


Сноски:

Sidenote: Что-то неясно, хотя. Ваше действие отображается как action="landing-thank-you.php", но вы покажете в своем ответе "thank-you page php". Вероятно, вы имели в виду «landing-thank-you.php».

  • Используйте условное isset() или !empty() для всех $_REQUEST с.

Nota:

Если CRM проходит более чем на 1 странице, то ваши последующие страницы будут потеряны все значения.

Для этого вам понадобятся сеансы.

Что-то, чтобы проверить также, чтобы увидеть, если есть не невидимая трансформация происходит, меняя символы, такие как точки/подчеркивания где-то.

Если это связано с перекрестными доменами, проконсультируйтесь с этим Q & A На стеке для сохранения переменных сеанса в разных доменах.

Это может также оказаться полезным:

Sidenote: Видя это commmented из 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; 

} 

... который echo'd "La Cala Hill Club" дважды (и присвоение переменной к нему) при использовании вашего опубликованного кода.

  • Поэтому возможным решением для вас здесь будут сессии.

Если вы беспокоитесь о сеансах угона, читайте в следующих статьях:

+1

На мой взгляд, @ Fred-ii- _has сильно ударил ногой по голове в заключительной ** Nota: ** части его ответа. Если вы переходите через одну страницу, чтобы перейти ко второму, ваши данные POST будут получены первым скриптом, но если вы не сделаете что-то в скрипте1, чтобы передать данные $ _POST ко второму сценарию, __probably в $ _SESSION__, вы не получите доступ к нему во втором скрипте – RiggsFolly

+0

@RiggsFolly Plus, 'action =" https://power.upsales.com/api/external/formSubmit "method =" POST "' прокомментирован таким образом; немного сомнительна. –

-1

вы не имеете никакого «Client_custom_50», вы должны иметь входное значение такой же, как:

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

Thats, что я изначально думал, однако, когда я сделал var_dump ($ _ REQUEST); он показал Client_custom_50, а не Client.custom_50, но это все еще не объясняет мой условный оператор, но затем, когда он переходит к CRM, а затем к благодарности, запрос не найден. Я попытался использовать Client.custom_50, но мне тоже не повезло. –

+0

Что-то, браузер или PHP, возможно, PHP, делает невидимое преобразование точек в подчеркивания в именах полей, чтобы превратить их в действительное имя переменной PHP. Его лучше ИМО не полагаться на это, и поэтому ** не использовать точки в имени поля ввода **, но это не причина этой проблемы. – RiggsFolly

Смежные вопросы