• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Добавление новых комментарие

  • Автор темы xJlaIIax
  • Дата начала
X

xJlaIIax

Решил создать на своём сайте возможность добавление комментариев, но что то не выходит. Что бы было легче вам выявить ошибки в моих действиях опишу их как можно подробней.

1. Я создал в базе денных таблицу из 5 полей под названием "comments":



2. В конце странице написал код, для вывода комментариев из базы данных:

Код:
<!--Вывод комментариев из базы данных-->
<? 
echo "<p class='post'>Коментарии:</p>";

$result3 = mysql_query ("SELECT * FROM comments WHERE post='fast'",$db);
if (mysql_num_rows ($result3) > 0)
{ 

$myrow3 = mysql_fetch_array($result3);

do
{
printf ("<div class='post_div'><p class='post_add'>Комментарий добавил(а): 
<strong class='color'>%s</strong> <br> Дата: <f class='color'>%s </p> </f>
<p class='post_text'>%s</p></div>",$myrow3["author"], $myrow3["date"], $myrow3["text"]);
}
while ($myrow3 = mysql_fetch_array($result3));
} 

$result4 = mysql_query ("SELECT * FROM comments_setting",$db);

$myrow4 = mysql_fetch_array($result4); 

?>

3. В базе данных в ручную заполнил все поля в таблице "comments", для проверке когда для вывода комментариев из базы данных:



4. Проверка прошла успешно, комментарии выводятся.



5. Создал в базе данных таблицу под названием "comments_setting" из 3 полей, для защиты от спама:



6. Заполнил её:



7. Создал форму для добавления новых комментариев с код:



Код:
<!--Добавление нового комментария-->
<p class='vaiii_comment'> Добавить Ваш коммментарий:</p>
<form action="../blocks/comment.php" method="post" name="form_com">
<p><label>Ваше имя: </label><input name="author" type="text" size="25" maxlength="25"></p>
<p><label>Текст комментария: <br> <textarea name="text" cols="28" rows="4"></textarea></label></p>

Введите сумму чисел с картинки:
<table width="110" border="0">
<tr>
<td>
<img SRC="<? echo $myrow4["img"]; ?>" HSPACE=0 VSPACE=10 >
</td>
<td>
<input name="pr" type="text" size="2" maxlength="5">
<input name="id" type="hidden" value="<? echo $fast; ?>">
</td>
</tr>
</table>
<input name="sud_com" type="submit" value="Комментировать">
</form>

8. Создал comments.php с кодом:

Код:
<? include("../blocks/bd.php"); ?> <!--Подключение к базе-->

<?
if (isset($_POST['author']))
{
$author = $_POST ['author'];
}

if (isset($_POST['text']))
{
$text = $_POST ['text'];
}

if (isset($_POST['pr']))
{
$pr = $_POST ['pr'];
}

if (isset($_POST['sud_com']))
{
$sud_com = $_POST ['sud_com'];
}

if (isset($_POST['fast']))
{
$fast = $_POST ['fast'];

if (isset($sub_com))
{
if (isset($author)) {trim($author); }
else {$author = "";}

if (isset($text)) {trim($text); }
else {$text = "";}

if (empty($author) or empty($text))	
{
exit ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br> <input name='back' type='button' value='Вернуться назад' onlick='java script:self.back();' >");
}

$author = stripslashes($author);
$text = stripslashes($text);
$author = htmlspecialchars($author);
$text = htmlspecialchars($text);

$result = mysql_query ("SELECT summa FROM comments_setting",$db);
$myrow = mysql_fetch_array($result);

if ($pr == $myrow["summa"])
{
$date = date("Y-m-d");
$result2 = mysql_query ("INSERT INTO comments (post,author,text,date) VALUES ('$fast','$author','$text','$date')",$db);
}
else
{
exit ("<p>Вы ввели неверную сумму цифр с картинки. <br> <input name='back' type='button' value='Вернуться назад' onlick='java script:self.back();' >");	
}

}

?>

Ну вот и всё, к сожалению функция добавление новых комментариев не работает. Надеюсь вы мне поможите устранить эту ошибку.
 
X

xJlaIIax

Я тут эксперементировал и понял что если не много изменить код в файле comment.php то всё заработает!

Код:
<? include("../blocks/bd.php"); ?> <!--Подключение к базе-->

<?

if (isset($sub_com))
{
if (isset($author)) {trim($author); }
else {$author = "";}

if (isset($text)) {trim($text); }
else {$text = "";}
}

if (empty($author) or empty($text))	
{
exit ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br> <input name='back' type='button' value='Вернуться назад' onlick='java script:self.back();' >");
}

$author = stripslashes($author);
$text = stripslashes($text);
$author = htmlspecialchars($author);
$text = htmlspecialchars($text);

$result = mysql_query ("SELECT summa FROM comments_setting",$db);
$myrow = mysql_fetch_array($result);

if ($pr == $myrow["summa"])
{
$date = date("Y-m-d");
$result2 = mysql_query ("INSERT INTO comments (post,author,text,date) VALUES ('fast','$author','$text','$date')",$db);
}
else
{
exit ("<p>Вы ввели неверную сумму цифр с картинки. <br> <input name='back' type='button' value='Вернуться назад' onlick='java script:self.back();' >");	
}

?>

То есть дело было в основном в скобочке "}", её надо было ставить не в конец а после

Код:
if (isset($sub_com))
{
if (isset($author)) {trim($author); }
else {$author = "";}

if (isset($text)) {trim($text); }
else {$text = "";}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!