0

I'm trying to send a form via AJAX and PHP but I'm having an error saying : Use of undefined constant php - assumed 'php'.

I've checked the quotes and the dollar signs and everything seems alright. What am I doing wrong here please?

<?php

$formData = $_POST;
$formFields = escapeAndGetFormFields($formData);

$response = array();

if('form1' == $formFields['form-type']['value']){

    validateNoEmpty($formFields['first_name']);
    validateNoEmpty($formFields['last_name']);
    validateEmail($formFields['email']);

    if(checkResponse($response)){
        sendContact($formFields);
    }

    echo json_encode($response);
}

if('form2' == $formFields['form-type']['value']){

    validateEmail($formFields['email']);

    if(checkResponse($response)){
        sendNewsletter($formFields);
    }

    echo json_encode($response);
}


function validateNoEmpty($field){
    $value = trim($field['value']);
    if (empty($value)) {
        setResponse('error', $field, 'Is required');
    }
}


function validateEmail($field){
    if(!$field['value']){ 
        setResponse('error', $field, 'No email address provided');
    }elseif(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $field['value'])) {
        setResponse('error', $field, 'Email address is invalid');
    }
}


function escapeAndGetFormFields($formData)
{
    $formFields = array();
    foreach ($formData as $name => $value) {
        $formFields[$name] = array('name' => $name, 'value' => htmlspecialchars($value));
    }
    return $formFields;
}


function setResponse($status, $field, $msg)
{
    if(!is_null($field)){
        $field = $field['name'];
    }else{
        $field = null;
    }
    $result = array('status' => $status, 'field' => $field, 'msg' => $msg);
    $GLOBALS['response'][] = $result;
}


function checkResponse($response)
{
    foreach ($response as $key => $value) {
        if('error' == $value['status']){
            return false;
        }
    }
    return true;
}


function sendNewsletter($formFields){

    $body  = "You have got new email : <br><br>";
    $body .= "Email: ".$formFields['email']['value'];

    $headers  = "From: ".$formFields['email']['value']. "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

    $subject = "New Subscribe";

    mail('mail@mail.com', $subject, $body, $headers);

    setResponse('success', null, 'Success! Thanks for sign up.');

}

function sendContact($formFields){

    $body  =    "You have got a new registration : <br><br>";
    $body .=    "First Name:  ".$formFields['first_name']['value']." <br><br>";
    $body .=    "Last Name:  ".$formFields['last_name']['value']." <br><br>";
    $body .=    "Email:  ".$formFields['email']['value']." <br><br>";

    $headers  = "From: ".$formFields['email']['value']. "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

    $subject = "New Registration";

    mail('mail@mail.com', $subject, $body, $headers );

    setResponse('success', null, 'Success! Thanks for registration.');
}

?>

Update : I've noticed that another error appear sometimes : PHP Parse error: syntax error, unexpected '$formData' (T_VARIABLE) ... on Line 1

Naourass Derouichi
  • 773
  • 3
  • 12
  • 38

0 Answers0