У меня на самом деле есть несколько вопросов. Но они связаны между собой.
Во-первых, является ли плохой практикой отправлять формы, используя собственные сообщения? Есть ли какие-либо проблемы с безопасностью? Причина, по которой я решил использовать собственные сообщения, заключалась в том, что я не хотел раскрывать структуры файлов / папок и язык программирования на стороне сервера, который я использую.
Например, это ясно показывает, что я использую php и что файл logout.php находится в папке выхода из системы на уровне одного уровня.
<form action="../logout/logout.php" method="post">
//form elements goes here
</form>
В этом примере я не показываю, какой язык на стороне сервера я использую, но программист четко знает, что это пост, и что логика должна сначала пройти сама:
<?php
if (isset($_POST['log_out']))
{
// do some stuff
}
?>
<form method="post">
//form elements goes here
</form>
Следствием того, что я получил сообщение о себе, как я понял, является то, что у меня должна быть сложная логика в начале каждого сообщения, которое я публикую на странице. Эти логики должны будут выбрать правильный код выполнения, иногда перенаправить меня и остановить выполнение остального кода.
Например, здесь у меня есть страница, которая делает несколько вещей и сообщений для себя. Чтобы прекратить выполнение остальной части кода или html ниже, мне нужно использовать функцию php «exit».
<?php
if (isset($_POST['add_two_numbers']))
{
// code for adding two numbers
exit();
}
else if (isset($_POST['add_three_numbers']))
{
// code for adding three numbers
exit();
}
else if (isset($_POST['log_out']))
{
// destroy session and data before logging out
header("location: ./logout/logout.php");
exit();
}
// php code that should happen if there is no post logic and
// will be unapropiately executed if exit is not used
?>
<html>
<head>
<script>
function init()
{
// will do stuff if php did not exit properly
}
// more js code
window.onload = init;
Итак, я должен использовать команду php exit, которую я так много читал о том, как это вызывает проблемы, и это плохо, и некоторые предлагают вместо этого использовать return. Однако проблема с return заключается в том, что он не всегда мешает коду продолжать выполнение специально html-части. Так есть ли лучший способ сделать это?
Благодарю.
Если вы хотите, чтобы ваша страница не загружала весь код одновременно, просто поместите каждую основную логику в отдельный файл, который вы можете включить и запустить, если запрашивается каждый элемент.
Даже сохранение опции включения в один файл, которая содержит все эти другие включения, может быть чище и проще в реализации.
У вас были бы ваши кодовые страницы (как бы вы их ни называли):
add.two.php
add.three.php
logout.php
default.php
index.php
<?php
if(isset($_POST['add_two_numbers'])) {
require('/directory/hierarchy/add.two.php');
exit();
}
elseif(isset($_POST['add_three_numbers'])) {
require('/directory/hierarchy/add.three.php');
// code for adding three numbers
exit();
}
elseif(isset($_POST['log_out'])) {
// destroy session and data before logging out
header("location: ./logout/logout.php");
exit();
}
else
require('/directory/hierarchy/default.php'); ?>
<html>
<head>
<script>
function init()
{
// will do stuff if php did not exit properly
}
// more js code
window.onload = init;
Публикация собственной формы в PHP называется, если я помню, «липкой формой», что, вероятно, хорошо в любом случае и в этом нет ничего плохого (по моему опыту). Я лично использовал липкие формы для проверки полей формы и / или для вывода дополнительной информации (статус, ошибки и т. Д.).
Чтобы избежать выхода (), вы, вероятно, должны изменить логику своей веб-страницы, но в данный момент сложно дать вам совет :).