Остановка формы PHP от повторной отправки и странной проблемы

0

хорошо, я буду держать его коротким.

У меня есть этот код:

<?php
if ($_POST['title'] != 'Title') && ($_POST['date'] != 'Date')
{
$fileName = 'blog.txt';
$fp = fopen('blog.txt', 'a');
$savestring = PHP_EOL . "<h2><center><span>" . $_POST['title'] . "</span></center></h2>" . PHP_EOL . "<div class=fright><p><em>|<br><strong>| Posted:</strong><br>| " . $_POST['date'] . "<br>|</p></em></div></p></em>" . PHP_EOL . "<p><em>" . $_POST['paragraph'] . "</em></p>" . PHP_EOL . "<hr>";
fwrite($fp, $savestring);              
fclose($fp);
}
?>

И эта форма HTML:

<form action="acp.html" method="post">
<input value="Title" name="title" class="txt" id="title">
<input value="Date" name="date" class="txt" id="date">
<input value="Content" name="paragraph" class="txt" id="paragraph">
<button class="btn">Add Post!</button>
</form> 

У меня также есть скрипт PHP, который открывает содержимое файла blog.txt. Теперь у меня есть множество проблем. Это мой первый PHP-скрипт, созданный когда-либо, я знаю, что это возможно и для MySQL, но я хочу начать с простых вещей. Текущий скрипт работает очень хорошо, но если обновить страницу, содержащую форму, она будет повторно опубликовать все. Я попытался сделать флажок и сделать это только после того, как галочка будет отмечена галочкой, но либо я сделал что-то неправильно, либо это невозможно, поскольку я просто не мог заставить его работать.

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

Итак, мои конечные потребности: есть ли способ добавить флажок, который не будет сохранен, и заставить скрипт работать только при галочке?

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

PS: Я включил скрипт PHP в это, может быть, это причина?

Теги:
forms

1 ответ

0
Лучший ответ

if ($_POST['title'] != 'Title') && ($_POST['date'] != 'Date') всегда будет true при первой загрузке страницы. Поскольку $_POST['title'] и $_POST['date'] не установлены, они не будут равны, чем меньше ожидаемых значений.

Вы должны добавить дополнительную проверку, чтобы убедиться, что страница запрашивается с помощью POST:

if (
    'POST' === $_SERVER['REQUEST_METHOD'] && 
    ($_POST['title'] != 'Title') 
     && ($_POST['date'] != 'Date')
)
  • 0
    Хорошо, теперь, когда я захожу на страницу, пустая форма больше не добавляется, но повторная отправка все еще происходит, когда я обновляю эту страницу.
  • 0
    Это другая проблема. Посмотрите эту статью, которую я написал, чтобы увидеть, как этого избежать.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню