- 15, May 2024
- #1
Всем привет,
Я написал небольшую систему комментирования плоских файлов, и все работает отлично! Он получает идентификатор сообщения со страницы, и отображаются все комментарии, помеченные этим идентификатором. Форма тоже работает отлично.
Однако мне было интересно, насколько это безопасно и есть ли способ сделать так, чтобы люди не могли использовать его для взлома моего сайта.
Я знаю, что при добавлении комментария в текстовый файл нет никаких проблем, но меня беспокоит отображение комментария обратно на странице.
Процесс утверждения отсутствует, поэтому как только комментарий будет оставлен, он появится. Я использовал PHP Strip_tags, чтобы удалить код из трех полей, но не уверен, достаточно ли этого.
Любая помощь будет очень признательна!
Однако мне было интересно, насколько это безопасно и есть ли способ сделать так, чтобы люди не могли использовать его для взлома моего сайта.
Я знаю, что при добавлении комментария в текстовый файл нет никаких проблем, но меня беспокоит отображение комментария обратно на странице.
Процесс утверждения отсутствует, поэтому как только комментарий будет оставлен, он появится. Я использовал PHP Strip_tags, чтобы удалить код из трех полей, но не уверен, достаточно ли этого.
Любая помощь будет очень признательна!
<!-- ADD COMMENT -->
<?php
if (isset($_POST['submit'])) {
// CHECK FOR EMPTY FIELDS
$required = array('id', 'date', 'name', 'email', 'comment');
$error = false;
foreach($required as $field) {
if (empty($_POST[$field])) {
$error = true;
}
}
if ($error) {
$name = $_POST['name'];
$email = $_POST['email'];
$comment = $_POST['comment'];
echo 'All Fields Are Required';
} else {
$id = $postid;
$date = $_POST['date'];
$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$comment = strip_tags($_POST['comment']);
$fp = fopen("comments.txt","a");
// WRITE COMMENT TO FILE
if (@fwrite($fp, $id.'|'.$date.'|'.$name.'|'.$email.'|'.$comment."\n")) {
echo 'Your Comment Was Added';
$name = "";
$email = "";
$comment = "";
fclose($fp);
} else {
echo 'Your Comment Was Not Added';
fclose($fp);
}
}
}
?>
<div class="clear"></div>
<!-- COMMENT FORM -->
<form name="input" method="post" action="<?php echo $_SERVER['SCRIPT_NAME']?>">
<input type="hidden" name="id" id="id" value="<?php echo $postid ?>">
<input type="hidden" name="date" id="date" value="<?php echo date('F j, Y'); ?>">
<input type="text" class="comment-name" name="name" id="name" placeholder="Ваше имя" value="<?php echo $name ?>">
<input type="text" class="comment-email" name="email" id="email" placeholder="Адрес электронной почты" value="<?php echo $email ?>">
<textarea name="comment" id="comment" placeholder="Какой у вас вопрос или комментарий?"><?php echo $comment ?></textarea>
<input class="button" type="submit" name="submit" value="Ask A Question · Comment">
</form>
<div class="clear"></div>
<!-- DISPLAY COMMENTS -->
<?php
$file = fopen("comments.txt", "r");
// WRITE EACH COMMENT
while (!feof($file) ) {
$line_of_text = fgets($file);
$parts = explode('|', $line_of_text);
if ($parts[0] == $postid) {
print "<div class='name-comment'>" . $parts[2] . " Said:</div><div class='text-comment'>" . $parts[4] . "</div><div class='date-comment'>" . $parts[1] . "</div>";
}
}
fclose($file);
?>
PHP: