разрешение отклонено при публикации формы, которая содержит текстовое поле с содержанием HTML - PullRequest
1 голос
/ 18 октября 2011

Хорошо, вот моя проблема (которую я гуглил и не помог):

У меня есть форма с элементом textarea, и я хочу написать что-то вроде:

<table><tr><td>123</td></tr></table>

и нажмите кнопку Отправить, и я хочу, чтобы он был сохранен в базе данных.

Теперь мой код работает, если я ввожу символы, отличные от HTML, но если я введу, как указано выше, я получу:

Forbidden

You don't have permission to access /xxx/sample_posteddata.php on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Полагаю, что на моем хостинге есть какая-то защита, запрещающая это?

Я попытался вставить точный текст из интерфейса администратора php, и это прекрасно работает:?

РЕДАКТИРОВАТЬ: полный исходный код файла podaciEdit.php:

<?
            require_once("_dal/CredentialsManager.php");
            require_once("_dal/ProizvodRepository.php");
            $repos = new ProizvodRepository();

            if ( isset( $_POST["spremi"] ) ){
                $sifra = $_POST["sifra"];
                $naziv = $_POST["naziv"];                        
                $slika = $_POST["slika"];                   
                $podaci_full = htmlspecialchars($_POST["podaci_full"]);

                $podaci_min = $_POST["podaci_min"];
                $kategorija = $_POST["kategorija"];
                $kategorija_naziv = $_POST["kategorija_naziv"];

                if ($repos->updateProizvod ($sifra, $naziv, $slika, $podaci_full, $podaci_min, $kategorija, $kategorija_naziv))
                    echo "Podaci uspješno spremljeni!";
                else{
                    echo "Greška prilikom spremanja podataka!";                                             
                }

                echo '<br/>Kliknite <a href="proizvodiEdit.php">ovdje</a> za povratak.';
            }
            else if ( isset( $_GET["sifra"] ) ){
                $sifra = $_GET["sifra"];
                $proizvod = $repos->GetProizvod($sifra);

                if ($proizvod){                        
                    $sifra = $proizvod["sifra"];
                    $naziv = $proizvod["naziv"];                        
                    $slika = $proizvod["slika"];                        
                    $podaci_full = $proizvod["podaci_full"];

                    $podaci_min = $proizvod["podaci_min"];
                    $kategorija = $proizvod["kategorija"];
                    $kategorija_naziv = $proizvod["kategorija_naziv"];



                    //$data = htmlentities($podaci_full, ENT_QUOTES, "UTF-8");
                    echo <<<qq
                    <form id="proizvodEdit" method="POST" action="proizvodEdit.php">

                                            Podaci - tablica: (mozes resizeati po potrebi!)<br/>
                    <textarea class="podaci_full" id="podaci_full" name="podaci_full">{$podaci_full}</textarea>
                    <input type="submit" value="Spremi sve" name="spremi"/>
                    </form>

qq;
                }
                else
                    echo '<h2 class="title-page">Proizvod koji tražite ne postoji.</h2>';

            }
            else{
                echo '<h2 class="title-page">Proizvod koji tražite ne postoji.</h2>';
            }

Ответы [ 4 ]

0 голосов
/ 15 февраля 2012

На самом деле, проблема помогла решить проблему: stripslashes .

$podaci_full = stripslashes($_POST["podaci_full"]);
0 голосов
/ 18 октября 2011

Я думаю, вы получили 403 изначально.Это проблема с правами доступа к файлу, сообщение об ошибке apache, а не php.Попробуйте перейти непосредственно на www.yourdomain.com//xxx/sample_posteddata.php и посмотреть, можете ли вы получить доступ к файлу.Может быть, даже попробуйте параметр GET.

www.yourdomain.com//xxx/sample_posteddata.php?sifra=xxx

Вы должны иметь доступ к нему.Если нет , попробуйте

chmod +x /home/domain/public_html

404 - это код ошибки НЕ НАЙДЕН.Это означает, что ваша форма неправильно указывает на ваш php-файл или один из включений завершается неудачно.Проверьте свои пути.

0 голосов
/ 18 октября 2011

Поскольку ваш HTML-код содержит ключевое слово "таблица", лучше всего было бы предположить, что это, вероятно, проблема, связанная с mod_security или каким-либо другим средством безопасности, которое фильтрует ключевые слова SQL, чтобы помочь предотвратить инъекции SQL. Попробуйте добавить ниже к вашему .htaccess:

SecFilterEngine Off

Если это работает таким образом, это, вероятно, о mod_security. Обратите внимание, что вы, возможно, не сможете отключить его из файла .htaccess.

0 голосов
/ 18 октября 2011

Если вы являетесь владельцем сайта, вы можете использовать htmlspecialchars(), а затем сохранить результаты в базе данных.Если вы хотите прочитать его обратно и преобразовать в html, используйте htmlspecialchars_decode()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...