Maks-Line 0 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 (изменено) Добрый день! После обновления с 9 до 9.2 возникла проблема. Могу предположить, что это связанно с п.24, т.к. на старой версии работало. код <div id="movie_area"></div> <script type="text/javascript"> function loadPlayer(movie_id){ var ajax = new dle_ajax(); var movie_id = movie_id; var varsString = "movie_id=" + movie_id; ajax.onShow (''); ajax.requestFile = dle_root + 'video/video.php'; ajax.method = 'POST'; ajax.element = 'movie_area'; ajax.sendAJAX(varsString); return false; }; </script> <select name="video_list" onchange="if(this.value){loadPlayer(this.value);}"> <option value="111">01</option> <option value="222">02</option> </select> Помогите изменить код. Ссылка на сайт в профиле, сайт пустой, кода там нет. Доп. вопрос не по теме: Если скачать движок и установить на "Денвере", не активируя лицензию, будет ли движок функционировать? Изменено 13 января 2011 пользователем Maks-Line Цитата Ссылка на сообщение Поделиться на других сайтах
a1ex 60 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 <script type="text/javascript"> function loadPlayer(movie_id){ var ajax = new dle_ajax(); var movie_id = movie_id; var varsString = "movie_id=" + movie_id; ajax.onShow (''); ajax.requestFile = dle_root + 'video/video.php'; ajax.method = 'POST'; ajax.element = 'movie_area'; ajax.sendAJAX(varsString); return false; }; </script> замени на <script type="text/javascript"> function loadPlayer(movie_id){ ShowLoading(''); $.get(dle_root + "engine/ajax/video.php", { movie_id: movie_id}, function(data){ HideLoading(''); $("#movie_area").fadeOut(500, function() { $(this).html(data); $(this).fadeIn(500); }); }); } </script> Цитата Ссылка на сообщение Поделиться на других сайтах
Maks-Line 0 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 Автор a1ex, почти заработало. Вылетает "Hacking attempt!" Вот код video.php <?php if ($_POST['movie_id']) { $movie = 'http://video.rutube.ru/'.$_POST['movie_id'].''; $movie = <<<HTML <OBJECT width="100%" height="451"> <PARAM name="movie" value="{$movie}" /> <PARAM name="wmode" value="window" /> <PARAM name="allowFullScreen" value="true" /> <EMBED src="{$movie}" type="application/x-shockwave-flash" wmode="window" width="100%" height="451" allowFullScreen="true" ></EMBED> </OBJECT> HTML; echo $movie; unset($movie); } else echo 'Hacking attempt!'; ?> Что здесь нужно изменить? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 $.get замените на $.post Кстати могу сразу сказать ваш код уязвим, и можно провести XSS атаку на сайт. $_POST['movie_id'] нужно фильтровать, нужно фильтровать через intval а не сразу вставлять. Цитата Ссылка на сообщение Поделиться на других сайтах
Maks-Line 0 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 Автор a1ex, Большое спасибо за код! celsoft, Большое спасибо за исправление! celsoft, по поводу XSS атаки. Я в этом совсем не разбираюсь и не знаю язык php. Если Вы поможете решить проблему, буду очень благодарен! Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 Maks-Line, Для начало скажите для примера, каким должно быть $_POST['movie_id'] это число или строка? Цитата Ссылка на сообщение Поделиться на других сайтах
Maks-Line 0 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 Автор celsoft, Код html: <div id="movie_area"> <OBJECT width="100%" height="451"> <PARAM name="movie" value="http://video.rutube.ru/2fd1abdcab9a5bc2f2488aeb8aa65bd9" /> <PARAM name="wmode" value="window" /> <PARAM name="allowFullScreen" value="true" /> <EMBED src="http://video.rutube.ru/2fd1abdcab9a5bc2f2488aeb8aa65bd9" type="application/x-shockwave-flash" wmode="window" width="100%" height="451" allowFullScreen="true" ></EMBED> </OBJECT> </div> <script type="text/javascript"> function loadPlayer(movie_id){ ShowLoading(''); $.post(dle_root + "video/video.php", { movie_id: movie_id}, function(data){ HideLoading(''); $("#movie_area").fadeOut(500, function() { $(this).html(data); $(this).fadeIn(500); }); }); } </script> <select name="video_list" onchange="if(this.value){loadPlayer(this.value);}"> <option value="2fd1abdcab9a5bc2f2488aeb8aa65bd9">01</option> <option value="b74b6e6eafa3ea8c98e9dc2311e4a6f3">02</option> </select> Код video.php <?php if ($_POST['movie_id']) { $movie = 'http://video.rutube.ru/'.$_POST['movie_id'].''; $movie = <<<HTML <OBJECT width="100%" height="451"> <PARAM name="movie" value="{$movie}" /> <PARAM name="wmode" value="window" /> <PARAM name="allowFullScreen" value="true" /> <EMBED src="{$movie}" type="application/x-shockwave-flash" wmode="window" width="100%" height="451" allowFullScreen="true" ></EMBED> </OBJECT> HTML; echo $movie; unset($movie); } else echo 'Hacking attempt!'; ?> Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 video.php $movie = 'http://video.rutube.ru/'.$_POST['movie_id'].''; замените на $movie = 'http://video.rutube.ru/'.htmlspecialchars( strip_tags( stripslashes( $_POST['movie_id'] ) ), ENT_QUOTES ).''; Цитата Ссылка на сообщение Поделиться на других сайтах
Maks-Line 0 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 Автор celsoft, все получилось! Возник еще один вопрос. Попробую объяснить на примере. Через доп. поля я задаю различную высоту плеера. Если просто html, то код выглядит так: <OBJECT width="100%" height="[xfvalue_height]"> <PARAM name="movie" value="http://video.rutube.ru/b74b6e6eafa3ea8c98e9dc2311e4a6f3" /> <PARAM name="wmode" value="window" /> <PARAM name="allowFullScreen" value="true" /> <EMBED src="http://video.rutube.ru/b74b6e6eafa3ea8c98e9dc2311e4a6f3" type="application/x-shockwave-flash" wmode="window" width="100%" height="[xfvalue_height]" allowFullScreen="true" ></EMBED> </OBJECT> Как это реализовать в файле video.php, туда нельзя вписать доп. поле "[xfvalue_height]". Заведомо пишу неправильный код, чтобы примерно показать, чего я хочу добиться: video.php <?php if ($_POST['movie_id']) { $movie = 'http://video.rutube.ru/'.htmlspecialchars( strip_tags( stripslashes( $_POST['movie_id'] ) ), ENT_QUOTES ).''; $movie = <<<HTML <OBJECT width="100%" height="[xfvalue_height]"> <PARAM name="movie" value="{$movie}" /> <PARAM name="wmode" value="window" /> <PARAM name="allowFullScreen" value="true" /> <EMBED src="{$movie}" type="application/x-shockwave-flash" wmode="window" width="100%" height="[xfvalue_height]" allowFullScreen="true" ></EMBED> </OBJECT> HTML; echo $movie; unset($movie); } else echo 'Hacking attempt!'; ?> Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 Maks-Line, Я не пишу кодов на заказ, я помог с решением вопроса уязвимости, а подгонять код стороннего модуля это уже не ко мне, а к автору модуля. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Maks-Line 0 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 Автор celsoft, Спасибо за помощь! Проблема решена! С доп. полями я как-нибудь разберусь. Цитата Ссылка на сообщение Поделиться на других сайтах
sergi7 0 Опубликовано: 13 января 2011 Рассказать Опубликовано: 13 января 2011 такая же тема,помогите код переделать <script language="javascript" type="text/javascript"> function jokes_update(){ var ajax = new dle_ajax(); ajax.onShow (''); var varsString = ""; ajax.requestFile = dle_root + "engine/ajax/jokes.php"; ajax.method = 'POST'; ajax.element = 'ajax-layer'; ajax.execute = true; ajax.sendAJAX(varsString); return false; } </script> Цитата Ссылка на сообщение Поделиться на других сайтах
Maks-Line 0 Опубликовано: 15 января 2011 Рассказать Опубликовано: 15 января 2011 Автор Возникла проблема по теме! В браузере IE периодически не выполняются запросы. Переключаю select и остается старое значение, после чего невозможно перезагрузить страницу. Предполагаю, что это связано с кэшированием. Искал в интернете, нашел строчки: $.ajaxSetup({cache: false}); и jQuery.ajaxSetup ({cache: false}); Только как их применить не знаю, и вообще правильные ли они. Можно ли отключить кэш для IE? Создаст ли это нагрузку на сервер при большом количестве запросов? Исходный код можно посмотреть выше в #7 посте. Помогите решить проблему. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 15 января 2011 Рассказать Опубликовано: 15 января 2011 Предполагаю, что это связано с кэшированием. Искал в интернете, нашел строчки: $.ajaxSetup({cache: false}); и jQuery.ajaxSetup ({cache: false}); это не имеет к вашему вопросу отношения, у вас POST, а это не кешируется. sergi7, function jokes_update(){ var ajax = new dle_ajax(); ajax.onShow (''); var varsString = ""; ajax.requestFile = dle_root + "engine/ajax/jokes.php"; ajax.method = 'POST'; ajax.element = 'ajax-layer'; ajax.execute = true; ajax.sendAJAX(varsString); return false; } [/code] заменить на [code]function jokes_update(){ ShowLoading(''); $.post(dle_root + "engine/ajax/jokes.php", {}, function(data){ HideLoading(''); RunAjaxJS('ajax-layer', data); }); return false; } Цитата Ссылка на сообщение Поделиться на других сайтах
sergi7 0 Опубликовано: 16 января 2011 Рассказать Опубликовано: 16 января 2011 celsoft, спасибо! все работает нормально Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.