Im создает API, который требует, чтобы некоторые обязательные параметры были отправлены ему. Существует около 15 обязательных параметров, которые должны быть переданы api, я хотел показать соответствующие ошибки разработчику, если там любой параметр отсутствует как «Не удалось обработать, отсутствует параметр электронной почты».проверка обязательных параметров в API
Я уже реализовали логику, но ее не работает хорошо, и, кажется, очень плохо закодированы с избытком codes.This является нынешний подход
if ($data['email'] AND array_key_exists('email', $data)) {
if (!validateEmail($data['email'])) {
$transaction_error = 'Invalid email';
}
} else {
$transaction_error = 'Parameter email is missing';
}
if (!($data['addr'] AND array_key_exists('addr', $data))) {
$transaction_error= 'Parameter addr is missing';
}
if (array_key_exists('show_shipping_addr', $data)) {
if (!verifyBinary($data['show_shipping_addr'])) {
$transaction_error = 'Invalid show_shipping_addr';
}
} else {
$transaction_error = 'Parameter show_shipping_addr is missing';
}
if (array_key_exists('authorize_user', $data)) {
if (!verifyBinary($data['authorize_user'])) {
$transaction_error = 'Invalid authorize_user';
}
} else {
$transaction_error = 'Parameter authorize_user is missing';
}
if ($data['mobileNo'] AND array_key_exists('mobileNo', $data)) {
if (!validateMobileNo($data['mobileNo'])) {
$transaction_error = 'Invalid mobileNo';
}
} else {
$transaction_error = 'Parameter mobileNo is missing';
}
if ($data['currency_code'] AND array_key_exists('currency_code', $data)) {
if (!validateCurrencyCode($data['currency_code'])) {
$transaction_error = 'Invalid currency_code';
}
} else {
$transaction_error = 'Parameter currency_code is missing';
}
if ($data['checksum_method'] AND array_key_exists('checksum_method', $data)) {
if (!validateChecksumMethod($data['checksum_method'])) {
$transaction_error = 'Invalid checksum_method';
}
} else {
$transaction_error = 'Parameter checksum_method is missing';
}
if ($data['zipcode'] AND array_key_exists('zipcode', $data)) {
if (!validateZipCode($data['zipcode'])) {
$transaction_error = 'Invalid zipcode';
}
} else {
$errors[$i++] = 'Parameter zipcode is missing';
}
if ($data['f_name'] AND array_key_exists('f_name', $data)) {
if (!validateAlphaString($data['f_name'])) {
$transaction_error = 'Invalid name';
}
} else {
$transaction_error = 'Parameter f_name is missing';
}
if ($data['state'] AND array_key_exists('state', $data)) {
if (!validateAlphaString($data['state'])) {
$transaction_error = 'Invalid state';
}
} else {
$transaction_error = 'Parameter state is missing';
}
if ($data['country'] AND array_key_exists('country', $data)) {
if (!validateAlphaString($data['country'])) {
$transaction_error = 'Invalid country';
}
} else {
$transaction_error = 'Parameter country is missing';
}
if ($data['city'] AND array_key_exists('city', $data)) {
if (!validateAlphaString($data['city'])) {
$transaction_error = 'Invalid city';
}
} else {
$transaction_error = 'Parameter city is missing';
}
/* Validation of mandatory parameters ends here */
/* Validation of optional parameters starts here
*shipping_email
*shipping_mobileNo
*shipping_zipcode
*l_name
*shipping_addr
*shipping_city
*shipping_state
*shipping_country
*surl
*furl
*rurl
*/
if (array_key_exists('l_name', $data)) {
if (!validateAlphaString($data['l_name'])) {
$transaction_error = 'Invalid l_name';
}
}
if (array_key_exists('shipping_addr', $data)) {
if (!$data['shipping_addr']) {
$transaction_error = 'Parameter shipping_addr is missing';
}
}
if (array_key_exists('shipping_mobileNo', $data)) {
if (!validateMobileNo($data['shipping_mobileNo'])) {
$transaction_error = 'Invalid shipping_mobileNo';
}
}
if (array_key_exists('shipping_city', $data)) {
if (!validateAlphaString($data['shipping_city'])) {
$transaction_error = 'Invalid shipping_city';
}
}
if (array_key_exists('shipping_state', $data)) {
if (!validateAlphaString($data['shipping_state'])) {
$transaction_error = 'Invalid shipping_state';
}
}
if (array_key_exists('shipping_country', $data)) {
if (!validateAlphaString($data['shipping_country'])) {
$transaction_error = 'Invalid shipping_country';
}
}
if (array_key_exists('shipping_zipcode', $data)) {
if (!validateZipCode($data['shipping_zipcode'])) {
$transaction_error = 'Invalid shipping_zipcode';
}
}
if(isset($api_error)) // IF there are API error pages are rendered
{
$api_error_array['api_error'] = $api_error;
$this->render_api_errors($api_error_array);
}
else if (isset($transaction_error)) { //If there are transactional errors,user is redirected back to mercahnt response url
$api_data = $this->paymentgateway->getAPIData($data['app_used'], $data['apikey']);
$data['response_url'] = $api_data['response_url'];
$data['transaction_errors'] = $transaction_error;
$this->paymentgateway->logApiRequest($data['app_used'], $transaction_error, 'Notice', $data['ip_address'], $data['ip_address_customer']);
$this->redirect_transactional_error($data);
} else {
$this->process($data); //Calls the process function when everything is done
}
Я получил некоторый набор обязательных полей и некоторого множества необязательных полей. Необязательные поля, если они установлены, должны быть проверены на предмет их действительности.
Пожалуйста предложить convienient способ для проверки почтовых запросов, не делая код heavy.I видел следующие коды
if($_SERVER['REQUEST_METHOD'] != "POST")
die("Error: Wrong method");
$fields = array("f1", "f2", "f3", "f4");
$field_names = array("field1", "field2", "field3", "field4");
$length = count($fields);
$missing_input = array();
for($i = 0; $i < $length; $i++)
if(empty($_POST[$fields[$i]]))
$missing_input[] = $field_names[$i];
if(!empty($missing_input))
die("Error: " . implode(", ", $missing_input)");
от SO, который делает sense.Can некоторые предложить мне лучшую практику проверки обязательного параметра в API и отображать соответствующие ошибки на основе этого? Вместо того, чтобы проверять каждый параметр отдельно, могу ли я сделать одну функцию, которая проверит параметры и покажет ошибки?
версии CodeIgniter являются u используя. попробуйте встроенный класс проверки имени codeigniter. – Anish
yes try form validation codeigniter http://www.codeigniter.com/user_guide/libraries/form_validation.html – cartalot