Самоформ пост и выход

У меня на самом деле есть несколько вопросов. Но они связаны между собой.

Во-первых, является ли плохой практикой отправлять формы, используя собственные сообщения? Есть ли какие-либо проблемы с безопасностью? Причина, по которой я решил использовать собственные сообщения, заключалась в том, что я не хотел раскрывать структуры файлов / папок и язык программирования на стороне сервера, который я использую.

Например, это ясно показывает, что я использую 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-части. Так есть ли лучший способ сделать это?

Благодарю.

1

Решение

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

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

У вас были бы ваши кодовые страницы (как бы вы их ни называли):

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;
1

Другие решения

Публикация собственной формы в PHP называется, если я помню, «липкой формой», что, вероятно, хорошо в любом случае и в этом нет ничего плохого (по моему опыту). Я лично использовал липкие формы для проверки полей формы и / или для вывода дополнительной информации (статус, ошибки и т. Д.).
Чтобы избежать выхода (), вы, вероятно, должны изменить логику своей веб-страницы, но в данный момент сложно дать вам совет :).

1

По вопросам рекламы [email protected]