Nano Hash - криптовалюты, майнинг, программирование

Код встраивания iframe выдает ошибку 403

Я пытаюсь разработать систему управления контентом (для блога). Все работает нормально, но у меня странная проблема с разделом обновления. Раздел обновления работает с jquery-ajax и php. Функция jquery проверяет входные данные, если все в порядке (не пусто и т. д.), отправляет все данные в addpostup.php через AJAX (метод POST). Проблема в,

Когда я добавляю код iframe (для ссылки на YouTube) в текстовую область, он выдает

jquery-3.0.0.min.js:4 POST addpostup.php 403 (Forbidden)

На локальном хосте все работало отлично. Когда я добавляю код iframe без свойств

<iframe></iframe>

выдает ту же ошибку 403.

Для addpostup.php было предоставлено разрешение 0755. По-прежнему возникает та же ошибка. Кроме того, я не добавлял код iframe, все работало отлично (и другие теги HTML не вызывают проблем). Мой файл addpostup.php:

<?php
session_start();
require('checklogin.php');
require('../fn/db.php');

    $id = $_POST['addid'];
    $title = $_POST['title'];
    $image = $_POST['image'];
    $brief = $_POST['addta'];
    $text = $_POST['addta2'];
    $radio = $_POST['addradio'];
    $video = $_POST['addvideo'];
    $sample = $_POST['addsample'];
    $keyword = $_POST['addkeyword'];
    $descr = $_POST['adddesc'];
    $gdate = date('d.m.Y');

    try {
        $data = 'UPDATE tbl_cnt SET title = :title, img = :img, brief = :brief, textt = :textt, classt = :classt, videot = :videot, udate = :udate, surl = :surl, kword = :kword, descr = :descr WHERE id = :id
        ';

        $sql = $db->prepare($data);

        $sql->bindParam(':title',$title);
        $sql->bindParam(':img',$image);
        $sql->bindParam(':brief',$brief);
        $sql->bindParam(':ttext',$text);
        $sql->bindParam(':classt',$radio);
        $sql->bindParam(':videot',$video);
        $sql->bindParam(':udate',$gdate);
        $sql->bindParam(':surl',$sample);
        $sql->bindParam(':kword',$keyword);
        $sql->bindParam(':descr',$descr);
        $sql->bindParam(':id',$id);

        $sql->execute();

         echo('Success...');
    } catch (Exception $e) {
         echo 'Error: ' . $e->getMessage();
    }

    $db = null;

?>

подключение к базе данных находится в db.php (в комплекте). Моя функция контроллера (jquery-ajax):

function check_form2(){
    valid = true;

    $(".statusaddpost").html('');
    $(".addpost").css("border","1px solid #ccc");
    $("#addta").css("border","1px solid #ccc");

    if (!$("#addtitle").val()){
        $("#addtitle").css("border","1px solid red");
        $(".statusaddpost").append('<li><i class="fa fa-times-circle" aria-hidden="true"></i> Empty title !!.</li>');
        valid=false;
    }

    if ($("#addtitle").val().length > 50){
        $("#addtitle").css("border","1px solid red");
        $(".statusaddpost").append('<li><i class="fa fa-times-circle" aria-hidden="true"></i> Max title length is 50. At the moment : '+$("#addtitle").val().length+' </li>');
        valid=false;
    }

    if (!$("#addimage").val() || $("#addimage").val()=='disab'){
        $("#addimage").css("border","1px solid red");
        $(".statusaddpost").append('<li><i class="fa fa-times-circle" aria-hidden="true"></i> Empty image!!</li>');
        valid=false;
    }else if ($("#addimage").val().length > 20){
        $("#addimage").css("border","1px solid red");
        $(".statusaddpost").append('<li><i class="fa fa-times-circle" aria-hidden="true"></i> Max img length is 20. At the moment : '+$("#addimage").val().length+' </li>');
        valid=false;
    }

    if(valid==true){
        if ($("#addvideo").is(":checked")){
            video="1";
        }else{
            video="0";
        }
        serdata = 'addid='+$("#addid").val()+'&title='+$("#addtitle").val()+'&image='+$("#addimage").val()+'&addta='+$("#addta").val()+'&addta2='+$("#addta2").val()+'&addradio='+$('input[name=addradio]:checked', '#addpost').val()+'&addvideo='+video+'&addsample='+$("#addsample").val()+'&addkeyword='+$("#addkeyword").val()+'&adddesc='+$("#adddesc").val();
        $.ajax({
            type:"POST",
            url:"../addpostup.php",
            data:serdata,
            cache:false,
            success:function(result){
                $(".statusaddpost").html('');
                $(".previewpic").slideUp(300);
                $(".addpost").val('');
                $("#addta").val('');
                $("#addta2").val('');
                $(".previewpic").html('');
                $(".addpost").css("border","1px solid #ccc");
                $("#addta").css("border","1px solid #ccc");
                $(".statusaddpost").html('<li class="addpostsuccess">'+result+'</li>');
            },
            error:function(error,e2,e3){
                $(".statusaddpost").html('<li>Error :</li>');
                $(".statusaddpost").append('<li>'+error+'--'+e2+'--'+e3+'</li>');

            }

        });
    }

}

Раздел добавления полностью аналогичен разделу обновления (структура и процесс HTML). Просто раздел SQL отличается. Добавление раздела не вызывает никаких ошибок.

Также файл .htaccess состоит из кодов сжатия и использования.

Я жду ваших мыслей! Спасибо за чтение...


Ответы:


1

Я не понимаю, в чем проблема, но я решил свою проблему. Сначала я деактивировал Apache mod_security (например, брандмауэр сервера), но это не сработало. Затем я сделал простую систему кодирования и декодирования. До AJAX я заменил его на обычную строку. JQuery replace()

<iframe src="https://www.youtube.com/embed/randomnumbers"></iframe>

to

youtubevideo/randomnumbers

затем AJAX отправил данные в addpostup.php без ошибок. Перед записью обновления я заменил ее на исходную строку. PHP str_replace()

youtubevideo/randomnumbers

to

<iframe src="https://www.youtube.com/embed/randomnumbers"></iframe>

Это оно.

18.11.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..