@nikitonik
Начинающий программист

Как переписать код?

Как переписать без goto этот код?
<?php

if (!is_dir("messages")) {
mkdir("messages");
};
a:
goto a;
};
postMessages();
goto a;
};
?>
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?php
// Guestbook, Гостевая книга

if (!is_dir("messages")) {
mkdir("messages");
};

function postMessages() {
foreach (glob('messages/*.txt') as $message) {
$message = file($message);
echo str_replace("\n", "", $message[0]) . "<br/>";
echo str_replace("\n", "", "<a href='mailto:$message[1]'>$message[1]</a>") . "<br/>";
for ($i = 2; $i < sizeof($message); $i++) {
echo htmlspecialchars($message[$i]) . "<br/>";
};
echo "<br/>";
};
};

$messages = scandir("messages");

if (!$_POST) {
postMessages();
//a:
print_form();
} else {
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) !== false && $_POST['author'] && $_POST['email'] && $_POST['message']) {
$author = str_replace("\r\n", "", $_POST['author']);
$email = str_replace("\r\n", "", $_POST['email']);
$msg = $_POST['message'];
$time = (int)(microtime(true) * 1000000);
file_put_contents("messages/$time.txt", "$author
$email
$msg");
} else {
echo 'Error while adding your message.';
//goto a;
print_form();
};
postMessages();
//goto a;
print_form();
};

function print_form()
{
    echo
    '<form action="index.php" method="post">
    <p><input type="text" name="author" required /></p>
    <p><input type="text" name="email" required /></p>
    <p><textarea name="message" required></textarea></p>
    <p><input type="submit" /></p>
    </form>';
}
?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Код, конечно, адовый.
Переписать как-то так
if ($_POST) {
    if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) && $_POST['author'] && $_POST['message']) {
        $author = str_replace("\r\n", "", $_POST['author']);
        $email = str_replace("\r\n", "", $_POST['email']);
        $msg = $_POST['message'];
        $time = (int)(microtime(true) * 1000000);
        file_put_contents("messages/$time.txt", "$author\n$email\n$msg");
        header("Location:".$_SERVER['REQUEST_URI']);
    } else {
        echo 'Error while adding your message.';
    }
}
postMessages();
?>
<form action="index.php" method="post">
<p><input type="text" name="author" required /></p>
<p><input type="text" name="email" required /></p>
<p><textarea name="message" required></textarea></p>
<p><input type="submit" /></p>
</form>


Если коротко, то если все дороги ведут к :а, то просто поместить код внизу, без условий, чтобы он всегда выполнялся.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽