Это домашнее задание, и мы обязаны использовать PHP. Мы не можем использовать javascript без крайней необходимости.
Моя текущая форма находится в моем первом документе PHP. При нажатии кнопки отправки он отправляет себе сообщение для проверки и проверки данных. Я использовал это, чтобы получить изменения стиля с помощью PHP в одном документе.
Если все подтвердится, он отправит действие на новый PHP с теми же данными, которые только что были опубликованы.
Моя форма состоит из 3 вводов текста, одного набора переключателей (3 кнопки) и одного набора флажков (4 флажка). Как только все они будут проверены, мне нужно опубликовать эти данные в новом документе PHP для обработки.
Вот мой текущий код:
// Are all fields fill
if (isset($_POST['post'])) {
$isCodeCorrect = checkStatusCodeCorrect();
$isTextCorrect = checkStatusTextCorrect();
$isShareOptionCorrect = checkRadioButtonCorrect();
$isDateCorrect = checkDateCorrect();
$isPermissionsCorrect = checkPermissionsCorrect();
if ($isCodeCorrect&&$isTextCorrect&&$isShareOptionCorrect&&$isDateCorrect&&$isPermissionsCorrect){
$mainFormAction='action = "poststatusprocess.php"';
}
}
function checkStatusCodeCorrect() {
if (!empty($_POST['statusCode'])){
$str1 = $_POST['statusCode'];
//Only S0001 style code
$statusCodePattern = "/^S\d{4}$/";
if (preg_match($statusCodePattern, $str1)){
return true;
}else return false;
}else return false;
}
function checkStatusTextCorrect() {
if (!empty($_POST['statusText'])){
$str2 = $_POST['statusText'];
//Only a-z, A-Z, commas, explanation marks, question marks, apostraphese, and full stops. Case insensitive and global searching and any white space
$statusTextPattern = "/([a-z,!?'\.\s])/i";
if (preg_match($statusTextPattern, $str2)){
return true;
}else return false;
}else return false;
}
function checkRadioButtonCorrect() {
return !empty($_POST['shareOption']);
}
function checkDateCorrect() {
if (!empty($_POST['date'])){
$str3 = $_POST['date'];
//Only 2 digits then forward slash, then 2 digits then forward slash and then only 2 or 4 digits for the year
$datePattern = "/^((\d\d)+\-\d{2}\-\d{2})$/";
if (preg_match($datePattern, $str3)){
return true;
}else return false;
}else return false;
}
function checkPermissionsCorrect(){
if ((!empty($_POST['allowLike']))||(!empty($_POST['allowComment']))||(!empty($_POST['allowShare']))||(!empty($_POST['allowNone']))){
return true;
}else return false;
}






Просто включите функцию из другого файла и запустите, если все проверки пройдены. В качестве альтернативы вы можете перенаправить на новый URL-адрес, но это станет получением, а не сообщением. Обычно вы обрабатываете все почтовые запросы в одном месте и выполняете перенаправление http-заголовка на какую-либо страницу результатов.
Вы можете использовать CURL, если у вас установлены модули, в качестве альтернативы, поскольку это домашнее задание, которое вы, вероятно, должны изучить и понять, как делать это вручную.
/**
* Send a POST request without using PHP's curl functions.
*
* @param string $url The URL you are sending the POST request to.
* @param array $postVars Associative array containing POST values.
* @return string The output response.
* @throws Exception If the request fails.
*/
function post($url, $postVars = array()){
//Transform our POST array into a URL-encoded query string.
$postStr = http_build_query($postVars);
//Create an $options array that can be passed into stream_context_create.
$options = array(
'http' =>
array(
'method' => 'POST', //We are using the POST HTTP method.
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postStr //Our URL-encoded query string.
)
);
//Pass our $options array into stream_context_create.
//This will return a stream context resource.
$streamContext = stream_context_create($options);
//Use PHP's file_get_contents function to carry out the request.
//We pass the $streamContext variable in as a third parameter.
$result = file_get_contents($url, false, $streamContext);
//If $result is FALSE, then the request has failed.
if ($result === false){
//If the request failed, throw an Exception containing
//the error.
$error = error_get_last();
throw new Exception('POST request failed: ' . $error['message']);
}
//If everything went OK, return the response.
return $result;
}
(Взято из здесь)
Эта функция отправит запрос POST из PHP-кода, а затем, как только вы проверите все поля в своей одностраничной форме, вы можете вызвать ее с помощью:
try{
$result = post('processValidated.php', array(
'foo' => 'bar',
'field' => 'Value'
));
echo $result;
} catch(Exception $e){
echo $e->getMessage();
}
Как уже упоминалось, это не совсем стандартный способ обработки ввода и проверки данных. Если это небольшая автономная форма, как недействительные, так и действительные отправки формы обрабатываются одним php-скриптом или включенными классами, если используется ООП. В качестве альтернативы структура MVC будет использовать контроллеры и т. д. для проверки и обработки отправки форм и соответствующего ответа.
Это не сработало так, как я думал, но сработало. Я отмечу это как ответ, так как технически он отвечает. Спасибо за помощь.