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

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

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

if (!is_dir("messages")) {
mkdir("messages");
};
a:
goto a;
};
postMessages();
goto a;
};
?>
  • Вопрос задан
  • 142 просмотра
Подписаться Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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>


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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽