# PHP submit Mautic form

**URL:** <https://forum.mautic.org/t/php-submit-mautic-form/4993>\
**Category:** Product Support\
**Created:** [August 20, 2016, 2:25pm UTC](https://forum.mautic.org/t/php-submit-mautic-form/4993 "2016-08-20T14:25:47Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![beetosantos](https://avatars.discourse-cdn.com/v4/letter/b/c5a1d2/32.png) [@beetosantos](https://forum.mautic.org/u/beetosantos)\
**Post date:** [August 20, 2016, 2:25pm UTC](https://forum.mautic.org/t/php-submit-mautic-form/4993/1 "2016-08-20T14:25:47Z")

</div>

**Can anyone tell me what’s wrong with this PHP page that tries to submit a simple form Mautic?**

* * *
**The Code:**  
  
\<?php  
  
/\*\*  
\* Push data to a Mautic form  
\*  
\* @param array $data The data submitted by your form  
\* @param integer $formId Mautic Form ID  
\* @param string $ip IP address of the lead  
\* @return boolean  
\*/  
function pushMauticForm($data, $formId, $ip = null)  
{  
//echo "data is $data";  
//print\_r(array\_values ($data));  
  
// Get IP from $\_SERVER  
if (!$ip) {  
$ipHolders = array(  
'HTTP\_CLIENT\_IP',  
'HTTP\_X\_FORWARDED\_FOR',  
'HTTP\_X\_FORWARDED',  
'HTTP\_X\_CLUSTER\_CLIENT\_IP',  
'HTTP\_FORWARDED\_FOR',  
'HTTP\_FORWARDED',  
'REMOTE\_ADDR'  
);  
  
foreach ($ipHolders as $key) {  
if (!empty($\_SERVER[$key])) {  
$ip = $\_SERVER[$key];  
  
if (strpos($ip, ',') !== false) {  
// Multiple IPs are present so use the last IP which should be the most reliable IP that last connected to the proxy  
$ips = explode(',', $ip);  
array\_walk($ips, create\_function('&$val', '$val = trim($val);'));  
  
$ip = end($ips);  
}  
  
$ip = trim($ip);  
break;  
}  
}  
}  
  
$data = $formId;  
  
// return has to be part of the form data array  
if (!isset($data)) {  
$data = 'http://www.myurl.com.br';  
}  
  
//$data = array('mauticform' =\> $data);  
$data = array ( 'mauticform\_getlead' =\> $data );  
  
echo nl2br(" n ");  
print\_r(array\_values ($data)); //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
  
// Change [path-to-mautic] to URL where your Mautic is  
$formUrl = 'http://myurl.com.br/form/submit?formId=' . $formId;  
  
$ch = curl\_init();  
curl\_setopt($ch, CURLOPT\_URL, $formUrl);  
curl\_setopt($ch, CURLOPT\_POST, 1);  
curl\_setopt($ch, CURLOPT\_POSTFIELDS, http\_build\_query($data));  
curl\_setopt($ch, CURLOPT\_HTTPHEADER, array("X-Forwarded-For: $ip"));  
curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, true);  
  
$response = curl\_exec($ch);  
  
if(curl\_exec($ch) === false)  
{  
echo " | ";  
echo 'Curl error: ' . curl\_error($ch);  
}  
  
  
curl\_close($ch);  
  
return $response;  
}  
  
  
pushMauticForm(  
array(  
'mauticform\_input\_getlead\_email' =\> "example@gmail.com",  
),  
75  
);  
  
  
?\>
* * *
**The Form:**  
  

  
  

  

  

  
  

  
E-Mail:  
  
Ops, informe o e-mail  

  
  

  
Submit

---

<div class="post-metadata">

**Author:** ![beetosantos](https://avatars.discourse-cdn.com/v4/letter/b/c5a1d2/32.png) [@beetosantos](https://forum.mautic.org/u/beetosantos)\
**Post date:** [August 20, 2016, 2:25pm UTC](https://forum.mautic.org/t/php-submit-mautic-form/4993/2 "2016-08-20T14:25:47Z")

</div>

## Can anyone tell me what’s wrong with this PHP page that tries to submit a simple form Mautic?

The Code:

\<?php /\*\* \* Push data to a Mautic form \* \* @param array $data The data submitted by your form \* @param integer $formId Mautic Form ID \* @param string $ip IP address of the lead \* @return boolean \*/ function pushMauticForm($data, $formId, $ip = null) { //echo "data is $data"; //print\_r(array\_values ($data)); // Get IP from $\_SERVER if (!$ip) { $ipHolders = array( 'HTTP\_CLIENT\_IP', 'HTTP\_X\_FORWARDED\_FOR', 'HTTP\_X\_FORWARDED', 'HTTP\_X\_CLUSTER\_CLIENT\_IP', 'HTTP\_FORWARDED\_FOR', 'HTTP\_FORWARDED', 'REMOTE\_ADDR' ); foreach ($ipHolders as $key) { if (!empty($\_SERVER[$key])) { $ip = $\_SERVER[$key]; if (strpos($ip, ',') !== false) { // Multiple IPs are present so use the last IP which should be the most reliable IP that last connected to the proxy $ips = explode(',', $ip); array\_walk($ips, create\_function('&$val', '$val = trim($val);')); $ip = end($ips); } $ip = trim($ip); break; } } } $data['formId'] = $formId; // return has to be part of the form data array if (!isset($data['return'])) { $data['return'] = 'http://www.myurl.com.br'; } //$data = array('mauticform' =\> $data); $data = array ( 'mauticform\_getlead' =\> $data ); echo nl2br(" n "); print\_r(array\_values ($data)); //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* // Change [path-to-mautic] to URL where your Mautic is $formUrl = 'http://myurl.com.br/form/submit?formId=' . $formId; $ch = curl\_init(); curl\_setopt($ch, CURLOPT\_URL, $formUrl); curl\_setopt($ch, CURLOPT\_POST, 1); curl\_setopt($ch, CURLOPT\_POSTFIELDS, http\_build\_query($data)); curl\_setopt($ch, CURLOPT\_HTTPHEADER, array("X-Forwarded-For: $ip")); curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, true); $response = curl\_exec($ch); if(curl\_exec($ch) === false) { echo " | "; echo 'Curl error: ' . curl\_error($ch); } curl\_close($ch); return $response; } pushMauticForm( array( 'mauticform\_input\_getlead\_email' =\> "example@gmail.com", ), 75 ); ?\>
* * *

The Form:

```
        <div id="mauticform_getlead_email" data-validate="email" data-validation-type="email" class="mauticform-row mauticform-email mauticform-required">
            <label id="mauticform_label_getlead_email" for="mauticform_input_getlead_email" class="mauticform-label">E-Mail:</label>
            <input id="mauticform_input_getlead_email" name="mauticform[email]" value="" class="mauticform-input" type="email" />
            <span class="mauticform-errormsg" style="display: none;">Ops, informe o e-mail</span>
        </div>

        <div id="mauticform_getlead_submit" class="mauticform-row mauticform-button-wrapper">
            <button type="submit" name="mauticform[submit]" id="mauticform_input_getlead_submit" name="mauticform[submit]" value="" class="mauticform-button btn btn-default" value="1">Submit</button>
        </div>

        <input type="hidden" name="mauticform[formId]" id="mauticform_getlead_id" value="75" />
        <input type="hidden" name="mauticform[return]" id="mauticform_getlead_return" value="" />
        <input type="hidden" name="mauticform[formName]" id="mauticform_getlead_name" value="getlead" />

    </div>
</form>

```

---

<div class="post-metadata">

**Author:** ![beetosantos](https://avatars.discourse-cdn.com/v4/letter/b/c5a1d2/32.png) [@beetosantos](https://forum.mautic.org/u/beetosantos)\
**Post date:** [August 20, 2016, 2:43pm UTC](https://forum.mautic.org/t/php-submit-mautic-form/4993/3 "2016-08-20T14:43:00Z")

</div>

Anothet test:

\<?php function pushMauticForm2($data, $formId) { /\*\* \* Push data to a Mautic form \* \* @param array $data \* @param integer $formId \*/ $data['formId'] = $formId; $data['return'] = 'http://www.myurl.com.br'; $data = array('mauticform' =\> $data); //$formUrl = $this-\>getMauticBaseUrl() . '/form/submit?formId=' . $formId; $formUrl = 'http://myurl.com.br/form/submit?formId=' . $formId; $ch = curl\_init(); curl\_setopt($ch, CURLOPT\_URL, $formUrl); curl\_setopt($ch, CURLOPT\_POST, 1); curl\_setopt($ch, CURLOPT\_POSTFIELDS, http\_build\_query($data)); // receive server response ... curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, true); $response = curl\_exec($ch); curl\_close($ch); } pushMauticForm2( array( '[b]mauticform[email][/b]' =\> "example@gmail.com", ), 75 ); ?\>

---

<div class="post-metadata">

**Author:** ![beetosantos](https://avatars.discourse-cdn.com/v4/letter/b/c5a1d2/32.png) [@beetosantos](https://forum.mautic.org/u/beetosantos)\
**Post date:** [August 21, 2016, 2:24pm UTC](https://forum.mautic.org/t/php-submit-mautic-form/4993/4 "2016-08-21T14:24:07Z")

</div>

## Another example submiting an kiosk form to insert the contact (lead) on a segment. The Mautic reacts but does not record the action.
\<?php //set POST variables $url = 'http://myurl.com.br/form/submit?formId=7'; $fields = array( 'mauticform[email]' =\> urlencode($\_POST['example@gmail.com']), 'mauticform[formId]' =\> urlencode($\_POST['75']), ); //url-ify the data for the POST foreach($fields as $key=\>$value) { $fields\_string .= $key.'='.$value.'&'; } rtrim($fields\_string,'&'); //open connection $ch = curl\_init(); //set the url, number of POST vars, POST data curl\_setopt($ch,CURLOPT\_URL,$url); curl\_setopt($ch,CURLOPT\_POST,count($fields)); curl\_setopt($ch,CURLOPT\_POSTFIELDS,$fields\_string); //execute post $result = curl\_exec($ch); //close connection curl\_close($ch); ?\>
* * *
