Как загрузить следующую страницу после проверки форм

  • Автор темы kmaks
  • 33
  • Обновлено
  • 12, May 2024
  • #1
Всем привет, В настоящее время я изучаю PHP и немного застрял.

Я пробовал искать, но не знаю точно, как мне нужно сформулировать это, чтобы получить правильный ответ. У меня есть простая форма с двумя полями, которая при нажатии «Отправить» проверяет поля, чтобы увидеть, пусты они или нет.

Если это не так, то отображается сообщение об ошибке, и пользователю необходимо заполнить соответствующее поле.

Единственное, что когда все успешно проверяется (например, в обоих полях есть содержимое), оно просто остается на той же странице, и я не знаю, как перейти на следующую страницу, чтобы иметь возможность обрабатывать содержимое формы дальше.

На данный момент у меня есть:

 

<?php

session_start();

require 'includes/database.php';

$forename = $surname = "";

$forenameErr = $surnameErr = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {

if (empty($_POST["forename"])) {

$forenameErr = "Forename required.";

} else {

$forename = $_POST["forename"];

}

if (empty($_POST["surname"])) {

$surnameErr = "Surname Required.";

} else {

$surname = $_POST["surname"];

}

}

?>

<!DOCTYPE html>

<html>

<head>

<link rel="stylesheet" href="css/style.css" type="text/css">

</head>

<body>

<form method="post" action="index.php">

<input type="text" name="forename" value="<?php echo htmlspecialchars($forename);?>" /><span class="error"><?php echo $forenameErr;?></span>

<br /><br />

<input type="textarea" name="surname" value="<?php echo htmlspecialchars($surname);?>"/><span class="error"><?php echo $surnameErr;?></span> <!-- Style size in CSS -->

<br /><br />

<input type="submit" />

</form>

</body>

</html>



Код (разметка): Я попытался изменить действие на страницу, на которую хочу его перенести, но затем часть проверки ошибок не работает и просто загружает следующую страницу.

Если бы кто-нибудь мог указать мне правильное направление или дать подсказку о том, что мне следует искать или использовать, это было бы большой помощью.

Фокси

kmaks


Рег
25 Aug, 2010

Тем
2

Постов
2

Баллов
22
  • 21, May 2024
  • #2
Ба, просто я слишком тороплюсь. Попробуйте это (возможно, вам придется немного изменить его).
 

<?php

session_start();

//require 'includes/database.php';

$forename = $surname = '';

$forenameErr = $surnameErr = '';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

if (empty($_POST['forename'])) {

$forenameErr = 'Forename required.';

} else {

$forename = $_POST['forename'];

}

if (empty($_POST['surname'])) {

$surnameErr = 'Surname Required.';

} else {

$surname = $_POST['surname'];

}

}

if (isset($_POST['submit']) && empty($forenameErr) && empty($surnameErr)) {

header('Location: generated.php');

} else {

?>

<!DOCTYPE html>

<html>

<head>

<link rel="stylesheet" href="css/style.css" type="text/css">

</head>

<body>

<form method="post" action="">

<input type="text" name="forename" value="<?php echo htmlspecialchars($forename);?>" /><span class="error"><?php echo $forenameErr;?></span>

<br /><br />

<input type="textarea" name="surname" value="<?php echo htmlspecialchars($surname);?>"/><span class="error"><?php echo $surnameErr;?></span> <!-- Style size in CSS -->

<br /><br />

<input type="submit" name="submit" value="Enter">

</form>

</body>

</html>

<?php

}

?>

PHP: Кстати, нет необходимости использовать двойные кавычки при назначении переменных и тому подобное.
 

SilverOK


Рег
01 Jan, 2011

Тем
0

Постов
3

Баллов
3
  • 04, Jun 2024
  • #3
На самом деле нет необходимости использовать двойные кавычки для чего-либо, кроме следующих ситуаций:

* если вы хотите использовать переменные внутри текста (например, непосредственно в эхо-операторах) — лично я предпочитаю просто объединять переменные

echo "это $переменная" vs echo 'это '.$переменная.''

* если вы используете JSON — существуют определенные проблемы с возвращаемыми массивами кодирования JSON, и для этого рекомендуется использовать двойные кавычки.

это будет работать: json_encode("content"=>"$content","infotype"=>"$infotype") этого не произойдет: json_encode('content'=>$content,'infotype'=>$infotype) Кроме того, на самом деле нет смысла использовать двойные кавычки для чего-либо.
 

falcon1972


Рег
24 Dec, 2013

Тем
1

Постов
3

Баллов
13
  • 05, Jun 2024
  • #4
Еще раз спасибо.

Я поигрался с ним, и теперь он делает именно то, что я хочу.

Мне пришлось немного изменить код, поскольку переменные не передавались на другую страницу:
 

if (isset($_POST['submit']) && empty($forenameErr) && empty($surnameErr)) {

$_SESSION['forename'] = $_POST['forename'];

$_SESSION['surname'] = $_POST['surname'];

header('Location: generated.php');
Код (php): А затем на следующей странице мне пришлось переходить от сообщения к сеансу при вызове переменных, но в этом нет ничего страшного. И спасибо за подсказку по поводу цитат.

На днях я добавил в закладки статью о том, когда использовать одинарные кавычки, а когда двойные.

Я прочитаю это, прежде чем идти дальше и в конечном итоге мне придется прокручивать слишком много кода. еще раз спасибо Фокси
 

Kalmaher


Рег
13 Aug, 2013

Тем
0

Постов
2

Баллов
2
  • 07, Jun 2024
  • #5
Я только что доковылял обратно до стула после того, как несколько раз ударил себя ногой.

В ту секунду, когда я увидел isset, я понял, чего не хватает! Спасибо за вашу помощь.

Я бы, наверное, занимался этим несколько дней РЕДАКТИРОВАТЬ: я использую заголовок для перехода на следующую страницу, но по какой-то причине он снова сбрасывает переменные ошибки и не загружает следующую страницу.

Я попытался ввести значение 1 в переменные ошибки, и действительно, после нажатия кнопки отправки ничего не происходит, кроме того, что значения возвращаются к 1.

Я не думал, что это возможно, поскольку я объявил значения пустыми в верхней части страницы и ни в одном из операторов if нет другого кода сброса!

Я надеялся, что смогу разобраться с этим сам, но у меня ментальный блок, говорящий мне, что этого не должно происходить.
 

Duxll


Рег
10 Dec, 2013

Тем
0

Постов
3

Баллов
3
  • 08, Jun 2024
  • #6
По какой-то причине (может быть, мой кеш) начал перепрыгивать на следующую страницу, но первая страница вообще не загружается.

Он просто мгновенно загружает вторую пустую страницу, сообщая, что переменные сообщения не существуют.

Я попробовал поработать с кодом, и кажется, что есть дополнительная закрывающая фигурная скобка, но если я удалю ее (та, которая, как мне кажется, все равно есть), я получаю сообщение об ошибке, сообщающее о неожиданном конце файла.

 

<?php

session_start();

require 'includes/database.php';

$forename = $surname = "";

$forenameErr = $surnameErr = "";

if (isset($_POST) && empty($forenameErr) && empty($surnameErr)) {

header("Location: generated.php");

exit();

} else {

if ($_SERVER["REQUEST_METHOD"] == "POST") {

if (empty($_POST["forename"])) {

$forenameErr = "Forename required.";

} else {

$forename = $_POST["forename"];

}

if (empty($_POST["surname"])) {

$surnameErr = "Surname Required.";

} else {

$surname = $_POST["surname"];

}

}

}

?>

<!DOCTYPE html>

<html>

<head>

<link rel="stylesheet" href="css/style.css" type="text/css">

</head>

<body>

<form method="post" action="index.php">

<input type="text" name="forename" value="<?php echo htmlspecialchars($forename);?>" /><span class="error"><?php echo $forenameErr;?></span>

<br /><br />

<input type="textarea" name="surname" value="<?php echo htmlspecialchars($surname);?>"/><span class="error"><?php echo $surnameErr;?></span> <!-- Style size in CSS -->

<br /><br />

<input type="submit" />

</form>

</body>

</html>

Код (разметка):
 

texel1


Рег
20 Jan, 2016

Тем
2

Постов
3

Баллов
23
Тем
49554
Комментарии
57426
Опыт
552966

Интересно