Я очень новичок в PHP и мне удалось немного научиться самостоятельно, но я зацикливаюсь на этом.У меня есть форма, которая будет проверять себя и показывать ошибки на той же странице.После того, как информация заполнена и проверена, мне нужно обработать ее с помощью отдельного сценария PHP, который отправит мне электронное письмо, опубликует информацию в CSV-файле и отобразит страницу подтверждения.В настоящее время у меня есть обе эти работы, но не вместе.Другими словами, моя форма будет подтверждена для себя, но информация никуда не денется.Это явно бесполезно.Отдельно я могу заставить форму выполнять все остальные функции, установив действие для моего PHP-скрипта, но не имеет значения, заполнены ли поля или нет, он отправляет что-либо.Я перепробовал все, начиная от сессий, функций, включения, и я даже не могу вспомнить, что еще заставило это работатьЯ даже пытался установить свои ошибки в массив, а затем вызвать функцию TRUE / FALSE для результатов, чтобы заставить ее проверить и затем перенаправить.У меня были результаты проверки на той же странице, но я все равно отправлял всю информацию, ничего не делая, кроме появления на пустой странице.
Пожалуйста, не отвечайте, что это повторение.Это проблема, над которой я работаю и исследую по крайней мере неделю.Я прочитал много тем на этом и других сайтах и не нашел рабочего ответа.
Я не хочу проверять на стороне клиента, а затем отправлять через PHP.Мне также необходимо проверить ту же страницу и убедиться, что все ранее введенные ответы a сохранены (что в настоящее время используется в моей форме), поскольку существует много полей, которые необходимо заполнить.
Я публикую часть своего кода, чтобы сохранить в нем необходимую информацию.Как я уже сказал, моя валидация работает сама по себе, а также сценарий PHP, если я установил действие для ее запуска.
Это часть проверки:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["childsfirstname"])) {
$childsfirstnameErr = "Child's first name is required.";
} else {
$childsfirstname = test_input($_POST["childsfirstname"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$childsfirstname)) {
$childsfirstnameErr = "Only letters and white space allowed";
die;
}
}
if (empty($_POST["childslastname"])) {
$childslastnameErr = "Child's last name is required.";
} else {
$childslastname = test_input($_POST["childslastname"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$childslastname)) {
$childslastnameErr = "Only letters and white space allowed";
die;
}
}
if (empty($_POST["month"])) {
$monthErr = "Child's birthday is required.";
} else {
$month = test_input($_POST["month"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[0-9]*$/",$month)) {
$monthErr = "Only numbers allowed";
die;
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
Этоявляется частью формы:
<div id="Field" style="left: 0px; top: 0px"><strong>Youth's:</strong>
First Name:
<input type="text" name="childsfirstname" style="width: 220px" value="<?php echo $childsfirstname;?>"/>
Last Name:
<input type="text" name="childslastname" style="width: 300px" value="<?php echo $childslastname;?>"/>
</div>
<div id="parent" class="error">
<div id="error1a" style="right: 561px"> <?php echo $childsfirstnameErr;?></div>
<div id="error1b"> <?php echo $childslastnameErr;?></div>
</div>
Хотя я понимаю, что здесь нет кода, показывающего, что я пытаюсь перенаправить для отправки информации, пожалуйста, поверьте, что я сделал более несколькихпопытки и что все, что я ищу, - это лучший способ сделать это, и некоторые ФАКТИЧЕСКИЕ рекомендации о том, как это сделать.Пока это работает, для меня не имеет значения, включены ли они или требуются, сеансы или иным образом, если это PHP и Validates для себя, а затем отправка другому сценарию PHP после завершения проверки и безошибочной формы.
Любая помощь очень ценится, особенно когда я делаю это на добровольной основе.Заранее благодарю всех и каждого, кто может протянуть руку помощи.
Это начало и конец моего PHP-скрипта - я оставлю середину, поскольку существует 16 по существу идентично работающих письменных проверок ввсе.
if ($ _SERVER ["REQUEST_METHOD"] == "POST") {
if (empty($_POST["childsfirstname"])) {
$Err[1] = "Child's first name is required.";
}else {
$childsfirstname = test_input($_POST["childsfirstname"]);
if (!preg_match("/^[a-zA-Z ]*$/",$childsfirstname)) {
$Err[1] = "Only letters and white space allowed";
}
}
if (empty($_POST["childslastname"])) {
$Err[2] = "Child's last name is required.";
} else {
$childslastname = test_input($_POST["childslastname"]);
if (!preg_match("/^[a-zA-Z ]*$/",$childslastname)) {
$Err[2] = "Only letters and white space allowed";
}
}
.,.
if (empty($_POST["date"])) {
$Err[15] = "Date required.";
}else {
$date = test_input($_POST["date"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[0-9]*$/",$date)) {
$Err[15] = "Letters are not allowed";
}
}
if (empty($_POST["checkbox"])) {
$Err[16] = "VALIDATION REQUIRED";
}else {
$checkbox = test_input($_POST["checkbox"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
Это без каких-либо текущих попыток передачи информации формы - только с работающей проверкой.Я постоянно возвращаюсь к тому, что работает, чтобы не сломать то, что работает.