Skip to content
Advertisement

Get php input values

My goal is to have a WordPress form that when posting, send the input to an API into an ERP.

Right now it seems that the values are empty when sending the way I do.

In CURLOPT_POSTFIELDS if instead of “$inputname” I enter something like “Martin” it works perfectly.

How can I get the value of the 4 fields I want to send? I tried $POST[‘inputname’] but same, doesn’t work.

I’m not an expert at all in php, so any tips would be appreciated! Thanks!

<?php       
            if($_POST['Envoyer']) {
      ?>
                <form id="formid2" action="" method="POST">                            
                        <input type="submit" name="Envoyer2" value="Recommencer" />
                </form>
                <?

                $curl = curl_init();

                curl_setopt_array($curl, array(
                CURLOPT_URL => "*******",
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => "",
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => "POST",
                CURLOPT_POSTFIELDS =>"{rn    "FirstName": "$inputname",rn    "Name": "$inputsurname",rn    "PhoneNo": "$inputphone",rn    "No": "$inputcomment"rn}",
                CURLOPT_HTTPHEADER => array(
                    "Authorization: Basic ************",
                    "Content-Type: application/json",
                    "Cookie: RuntimeTenantAffinity=*******"
                ),
                ));
                
                $response = curl_exec($curl);

                curl_close($curl);
                echo $INPUTN;

            } else {
                ?>
                    <form id="formid" action="" method="POST">                            
                        <p>Nom : <input type="text" name="inputname" value="" /></p>
                        <p>Prénom : <input type="text" name="inputsurname" value="" /></p>
                        <p>Téléphone : <input type="text" name="inputphone" value="" /></p>
                        <p>Commentaire : <input type="text" name="inputcomment" value="" /></p>
                        <input type="submit" name="Envoyer" value="Envoyer" />
                    </form>
                <?
            }

            ?>

Advertisement

Answer

You should not create json manually, it would create errors if some special character are there in user inputs.

Create an array and then use json_encode to pass data in your curl. Also for POST request don’t use CUSTOMREQUEST options instead use CURLOPT_POST.

// User inputs are $inputname, $inputsurname, $inputphone, $inputcomment
// Create an array 
$arrData = [
    'FirstName' => $inputname,
    'Name'      => $inputsurname,
    'PhoneNo'   => $inputphone,
    'No'        => $inputcomment
];

// Now pass it in curl options array
[
    ...
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => json_encode($arrData),
]

You can also pass data in array if api supports it. Here are options that you can use.

CURLOPT_POSTFIELDS

The full data to post in a HTTP “POST” operation. To post a file, prepend a filename with @ and use the full path. The filetype can be explicitly specified by following the filename with the type in the format ‘;type=mimetype’. This parameter can either be passed as a urlencoded string like ‘para1=val1&para2=val2&…’ or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data. As of PHP 5.2.0, value must be an array if files are passed to this option with the @ prefix. As of PHP 5.5.0, the @ prefix is deprecated and files can be sent using CURLFile. The @ prefix can be disabled for safe passing of values beginning with @ by setting the CURLOPT_SAFE_UPLOAD option to TRUE.

Finally strongly suggest you to use error check for curl so you can know what’s going wrong.

if(curl_exec($curl) === false){
    echo 'Curl error: ' . curl_error($curl);
}
else{
    echo 'Operation completed without any errors';
}

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement