Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
1

Отправка html тегов

29.01.2015, 06:51. Просмотров 773. Ответов 14
Метки нет (Все метки)

Есть форма отправки текста. По заданию, нужно сделать так чтобы введя в textarea теги ol, ul, li, strong, em, u отправлялись как теги, а если пользователь введет какие то другие теги в поле ввода, то текст не отправится. Подскажите пожалуйста, как реализовать такое!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2015, 06:51
Ответы с готовыми решениями:

Удаление из HTML страницы ненужных тегов вместе с содержимым
Доброго времени суток. Нужна функция или регулярное выражение, которое из HTML...

Отправка почты с html версткой
Здравствуйте Уважаемые форумчани. Прошу у Вас помощи. Задача: Отправить через...

Отправка html версии письма с картинкой (картинка не отправляется)
Всем привет) Нужно сделать отправку html версии письма с картинкой, но...

удаление тегов
ребят тут такая тема надо замутить функцию чтоб она удаляла теги но и ещё при...

Проверка на правильность мест закрытия тегов
Есть textarea в которую можно вводить только определенные html теги. Есть...

14
Jodah
Эксперт PHP
2712 / 2383 / 1014
Регистрация: 01.08.2012
Сообщений: 8,420
29.01.2015, 10:53 2
PHP
1
$data = strip_tags($_POST['data'], '<ol><ul><li><em><u>');
0
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
29.01.2015, 16:40  [ТС] 3
Jodah, спасибо, но можно по понятнее?
Мне нужно сделать что то подобное следующему:
PHP
1
2
3
4
5
6
if (используются ul, ol, li, strong, em, u){
Ничего не выдится, просто отправляется;
}
if(используются остальные html теги){
return exit("Используйте как html только:ul, ol, li, em, u, strong");
}
0
Jodah
Эксперт PHP
2712 / 2383 / 1014
Регистрация: 01.08.2012
Сообщений: 8,420
29.01.2015, 16:53 4
Mikhail Shell, функция strip_tags удаляет все теги, кроме тех, что указаны во втором параметре.
Если нужна проверка на наличие других тегов, можно сверить количество символов в переменной до и после обработки функцией. Если количество символов не совпадает - значит, что-то было вырезано.
PHP
1
2
3
4
5
6
$new_data = strip_tags($_POST['data'], '<ol><ul><li><em><u>')
if(strlen($_POST['data']) !== strlen($new_data)){
    exit("Не используйте запрещённый HTML!");
}else{
    // Запрещённых тегов нет, ничего не выводим.
}
0
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
29.01.2015, 17:26  [ТС] 5
Jodah, ввожу в textarea "font" и отправляется - что то не работает.

Добавлено через 13 минут
Цитата Сообщение от Jodah Посмотреть сообщение
PHP
1
$_POST['data']
И я немного не понимаю, что это.
0
Jodah
Эксперт PHP
2712 / 2383 / 1014
Регистрация: 01.08.2012
Сообщений: 8,420
29.01.2015, 17:33 6
Mikhail Shell, виноват, в 1-ой строке в конце точка с запятой должны быть.
Вот полный код:
PHPHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $new_data = strip_tags($_POST['data'], '<ol><ul><li><em><u>');
    if(strlen($_POST['data']) !== strlen($new_data)){
        exit("Не используйте запрещённый HTML!");
    }else{
        // Запрещённых тегов нет, ничего не выводим.
    }
}
?>
<html>
    <body>
        <form action="" method="post">
            <input type="text" name="data" value="" />
            <input type="submit" value="Отправка данных" />
        </form>
    </body>
</html>
Только что проверил у себя, должен работать.

Добавлено через 6 минут
Цитата Сообщение от Mikhail Shell Посмотреть сообщение
И я немного не понимаю, что это.
Формы отправляются на сервер одним из двух методов: GET и POST.
В данном случае мы используем POST:
HTML5
1
<form action="" method="post">
Когда данные из формы отправляются на сервер, сервер кидает их в зависимости от типа в массивы $_GET и $_POST. Через этот массив мы можем получить данные, которые пользователь ввёл в форму.

Чтобы получить данные, нужно дать тегу input название (name):
HTML5
1
<input type="text" name="data" value="" />
Тогда мы сможем обратиться к элементу массива $_POST с таким же названием, как и у input'а и получить данные из формы:
PHP
1
echo $_POST['data'];
0
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
29.01.2015, 17:51  [ТС] 7
Jodah, то есть в моем случае data или что то другое к полю ввода текста?
Я просто попробовал так сделать, и у меня вообще не отправляются комменты.
Или как?
0
Jodah
Эксперт PHP
2712 / 2383 / 1014
Регистрация: 01.08.2012
Сообщений: 8,420
29.01.2015, 18:00 8
Mikhail Shell, вышеуказанный пример рабочий, ничего не нужно менять.

А где ты его запускаешь? На хостинге?
0
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
29.01.2015, 18:04  [ТС] 9
Jodah, да! А что?
0
Jodah
Эксперт PHP
2712 / 2383 / 1014
Регистрация: 01.08.2012
Сообщений: 8,420
29.01.2015, 18:12 10
Mikhail Shell, запускаемый файл находится в корне или в какой-нибудь папке? Какое имеет название?
0
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
29.01.2015, 18:17  [ТС] 11
Jodah, в корне, называется otpravka.php
0
Jodah
Эксперт PHP
2712 / 2383 / 1014
Регистрация: 01.08.2012
Сообщений: 8,420
29.01.2015, 18:28 12
Mikhail Shell, понял, так должно заработать:

PHPHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $new_data = strip_tags($_POST['data'], '<ol><ul><li><em><u>');
    if(strlen($_POST['data']) !== strlen($new_data)){
        exit("Не используйте запрещённый HTML!");
    }else{
        // Запрещённых тегов нет, ничего не выводим.
    }
}
?>
<html>
    <body>
        <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
            <input type="text" name="data" value="" />
            <input type="submit" value="Отправка данных" />
        </form>
    </body>
</html>
0
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
29.01.2015, 19:05  [ТС] 13
Jodah, я скину код.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php 
mb_internal_encoding('UTF-8');
date_default_timezone_set('Asia/Almaty');
$month = date("F");
    switch ($month) {
        case "January": $month = "Января"; break;
        case "February": $month = "Февраля"; break;
        case "March": $month = "Марта"; break;
        case "April": $month = "Апреля"; break;
        case "May": $month = "Мая"; break;
        case "June": $month = "Июня"; break;
        case "July": $month = "Июля"; break;
        case "August": $month = "Августа"; break;
        case "September": $month = "Сентября"; break;
        case "October": $month = "Октября"; break;
        case "November": $month = "Ноября"; break;
        case "December": $month = "Декабря"; break;
    }$date = date('j ') . $month  .  date(' Y ');
 
$time = date(' H:i ');
 
$name = $_GET['name'];
$name = str_replace(" ", "", $name);
$name = trim($name);
$name = mb_convert_case($name, MB_CASE_TITLE,'UTF-8');
 
$family = $_GET['family'];
$family = str_replace(" ", "", $family);
$family = trim($family);
$family = mb_convert_case($family, MB_CASE_TITLE,'UTF-8');
 
$text = $_GET['text'];
$text = trim($text);
$number = 3;
if ((isset($_GET['name'])) && (isset($_GET['family'])) && (isset($_GET['text']))) {
if($name == "" || $family == "" || $text == ""){return exit("<p class='links'><span  style='color:red;'>Не все поля заполнены!</span><br>Вернитесь и заполните все поля <a href='javascript:history.go(-1)'>здесь</a>.</p>");
}
if (mb_strlen($text) < $number){return exit("<p class='links' style='text-align:left;'><span  style='color:red;'>Слишком мало символов в поле ввода!</span><br> Вернитесь назад и наберите большее количество символов <a href='javascript:history.go(-1)'>здесь</a>.</p>");}
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $new_data = strip_tags($_POST['text'], '<ol><ul><li><em><u>');
    if(strlen($_POST['text']) !== strlen($new_data)){
        exit("Не используйте запрещённый HTML!");
    }else{
        // Запрещённых тегов нет, ничего не выводим.
    }
}
else{file_put_contents("comment.php", "<div>" . $date . "года" . $time . "<br>от:<span> </span>" . $name . "<span> </span>" . $family . "<br><br>" . $text . "</div>".file_get_contents("comment.php"));
echo "<script>alert('Ваше сообщение отправлено!');</script><meta http-equiv='refresh' content='0; url=http://адрес_сайта'>";
}
}
 
else {
echo '<form class="form1" action="' . $_SERVER['SCRIPT_NAME'] . '" method="post">';
echo '<p class="links">ваше имя:</p>';
echo '<input type="name" id="input" name="name"  placeholder="ввведите ваше имя">';
echo '<br><br><br><br><p class="links">ваша фамилия:</p>';
echo '<input type="name" id="input" name="family"  placeholder="ввведите вашу фамилию" style="margin-top:2px;">';
echo '<br><br><br><br><p class="links">текст сообщения:</p>';
echo '<textarea name="text"  maxlength="1600" class="text" placeholder="введите ваш отзыв о сайте и заинтересовали ли вас мои услуги "></textarea>';
echo '<input type="submit" value="отправить" class="sub"">';
 
echo '</form><br>';}
?>
Добавлено через 33 минуты
Цитата Сообщение от Jodah Посмотреть сообщение
PHP
1
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
Jodah, я не понимаю куда это "приделать" в моем случае:
PHP
1
echo '<form class="form1" action="' . $_SERVER['SCRIPT_NAME'] . '" method="post">';
Куда еще значение action написать?
0
Jodah
Эксперт PHP
2712 / 2383 / 1014
Регистрация: 01.08.2012
Сообщений: 8,420
29.01.2015, 19:32 14
Лучший ответ Сообщение было отмечено Mikhail Shell как решение

Решение

Mikhail Shell, пробуй. Кодировка обоих файлов должна быть utf-8.
PHPHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    date_default_timezone_set('Asia/Almaty');
    
    $months = array(
        "January" => "Января",
        "February" => "Февраля",
        "March" => "Марта",
        "April" => "Апреля",
        "May" => "Мая",
        "June" => "Июня",
        "July" => "Июля",
        "August" => "Августа",
        "September" => "Сентября",
        "October" => "Октября",
        "November" => "Ноября",
        "December" => "Декабря"
    );
    
    $datetime = date('j ') . $months[date("F")] . date(' Y ') . "года" . date(' H:i ');
    
    if (isset($_POST['name']) and isset($_POST['family']) and isset($_POST['text'])){
        
        if(mb_strlen($_POST['name']) < 1 or mb_strlen($_POST['family']) < 1 or mb_strlen($_POST['text']) < 1){
            return exit("<p class='links'><span  style='color:red;'>Не все поля заполнены!</span><br>Вернитесь и заполните все поля <a href='javascript:history.go(-1)'>здесь</a>.</p>");
        }
        
        $name = mb_convert_case(trim($_POST['name']), MB_CASE_TITLE,'UTF-8');
        $family = mb_convert_case(trim($_POST['family']), MB_CASE_TITLE,'UTF-8');
        $text = trim($_POST['text']);
        $number = 3;
        
        if (mb_strlen($text) < $number){
            return exit("<p class='links' style='text-align:left;'><span  style='color:red;'>Слишком мало символов в поле ввода!</span><br> Вернитесь назад и наберите большее количество символов <a href='javascript:history.go(-1)'>здесь</a>.</p>");
        }
        
        $new_data = strip_tags($_POST['text'], '<ol><ul><li><em><u>');
        if(strlen($_POST['text']) !== strlen($new_data)){
            return exit("Не используйте запрещённый HTML!");
        }
        
        file_put_contents("comment.php", "<div>" . $datetime . "<br>от:<span> </span>" . $name . "<span> </span>" . $family . "<br><br>" . $text . "</div>\n".file_get_contents("comment.php"));
        echo "<script>alert('Ваше сообщение отправлено!');</script>";
    }
    exit();
}
?>
    <form class="form1" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
        <p class="links">ваше имя:</p>
        <input type="name" id="input" name="name"  placeholder="ввведите ваше имя" />
        <br><br><br><br>
        
        <p class="links">ваша фамилия:</p>
        <input type="name" id="input" name="family"  placeholder="ввведите вашу фамилию" style="margin-top:2px;" />
        <br><br><br><br>
        
        <p class="links">текст сообщения:</p>
        <textarea name="text"  maxlength="1600" class="text" placeholder="введите ваш отзыв о сайте и заинтересовали ли вас мои услуги"></textarea>
        <input type="submit" value="отправить" class="sub" />
     
    </form>
1
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
29.01.2015, 20:18  [ТС] 15
Спасибо большое, получилось!
0
29.01.2015, 20:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2015, 20:18

Система тегов и меток для сайта
Доброго времени суток всем! У меня возникла такая необходимость создать...

Автоматическое добавление тегов для правильного отображения текста
Добрый день! В планах нужно для своего сайта сделать админку (дипломная...

Из двух XML создать один, состоящий из тегов, которые присутствуют в обоих XML
Нужно на PHP реализовать такую задачку. Пример: Есть первый XML: &lt;html&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru