PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (2): « 1 [2]
Найдено сообщений: 27
LML
Отправлено: 05 Апреля, 2021 - 22:18:48 • Тема: Помогите устранить ошибки • Форум: Вопросы новичков
Ответов: 5 Просмотров: 624
Там всё не так просто...
Страница формируется через JavaScript, в который вставляется php.
Это как раз части строки JavaScript
И я так понимаю, что весь тот страшный код пытается сложить common_body_start.php в одну строку и через eval впихнуть в write(
LML
Отправлено: 05 Апреля, 2021 - 15:35:29 • Тема: Помогите устранить ошибки • Форум: Вопросы новичков
Ответов: 5 Просмотров: 624
Приветствую!
В файле voc.php имеется строка:
Файл common_body_start.php имеет вид:
CODE (
htmlphp ):
скопировать код в буфер обмена
<? php if ( ! defined ( "_COMMON_" ) ) { echo "stop" ; exit; } ?> </ head>
< body bgcolor= "#FFFFFF" background= "<?=$current_design ?> grunge/gradient.gif" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
В процессе, понадобилось изменить common_body_start.php к виду:
PHP:
скопировать код в буфер обмена
echo '</head>' . PHP_EOL;
echo '<body style="background-image:url(' . $gradient . '); background-attachment:fixed; background-color:#fff; margin:0px;">' . PHP_EOL;
?>
Всё везде работает, но получаю ошибку:
Цитата: PHP Parse error: syntax error, unexpected ''</head>\\'.PHP_EOL;\\necho \\'<b' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) in /.../.../.../.../.../.../designes/mychatik/voc.php(884) : eval()'d code on line 1
Подскажите, пожалуйста, как исправить код в eval, а если возможно, выполнить всё это без eval?
LML
Отправлено: 15 Февраля, 2021 - 10:45:46 • Тема: Нужна помощь: сайт вроде взломали и что это за PHP-код • Форум: Вопросы новичков
Ответов: 2 Просмотров: 271
Сайт взломан не "вроде", а однозначно.
По коду:
1. Отключено отображение ошибок, чтобы сложнее было отследить, если встроенный код заглючит.
2. По запросу в адресной строке типа http://ваш.сайт/?bo=boom, происходит подмена на http://ваш.сайт/css/main/bon/boom.
3. После вывода содержимого, дальнейшая загрузка страницы прекращается.
LML
Отправлено: 13 Февраля, 2021 - 21:08:35 • Тема: Помогите получить переменную • Форум: JavaScript & VBScript
Ответов: 7 Просмотров: 1718
Сразу хочу поблагодарить за помощь!
Да. Каждая станция может использовать функционал из предложенного.
Но не весь функционал раскрыт.
Кстати, та часть javascript-кода, что выше выложил, уже убрана из доступа.
Доступ к переменным дан только через PHP-код.
Вариант на РНР я сделал. Но меня это не совсем устраивает, так как это ещё дополнительные запросы, да и для динамической смены аватара - нужно постоянно перезапускать скрипт...
А тут в <b data-myinfo="djname"></b> уже есть динамически сменяемый ник диджея.
Только я не пойму, каким образом он выводится так, что он на странице видим, но его нет, как переменной...
info.htmlavatar - да. Тут аватар. Но он от радиосервера и мне не нужен.
Мне нужно на ник диджея динамически навесить его графический ник из чата...
LML
Отправлено: 13 Февраля, 2021 - 14:49:29 • Тема: Не работает рекурсивный вызов функции • Форум: JavaScript & VBScript
Ответов: 1 Просмотров: 1400
Имеется фрейм с информацией, которая постоянно изменяется.
Изначально сделано так, что по <meta http-equiv="refresh" content="100; url= перезагружается вся страница.
Всё работает, но подобный способ приводит к тому, что при перезагрузке происходит подмигивание фона фрейма, на котором выводится эта информация.
Я попробовал изменить способ перезагрузки, добавив в код скрипта:
Всё работает, как и работало. Страница перезагружается с миганием.
Почитал, что можно вызывать функцию рекурсивно саму из себя по таймеру.
В принципе, это то, что мне и нужно. Обновлять только сам скрипт, не затрагивая страницу.
Вот полный код фрейма:
Спойлер (Отобразить ) CODE (
html ):
скопировать код в буфер обмена
<?php if ( !defined( "_COMMON_" ) ) { echo "stop" ;exit;}
// include( $file_path."designes/" .$design."/common_title.php" ) ;
$in_room_text = ( count( $room_ids) > 1) ?
"'$w_in_room <br ><b > "".addslashes($rooms[intval($room_id)]["title"]).""</ b ><br ><b > $total_users</ b > ".w_people($total_users)."'" :
"'$w_in_chat: <b > $total_users</ b > ".w_people($total_users)."'";
?>
<script type = "text/javascript" language = "JavaScript" >
var IsRendered = false;
function writer() {
if(!IsRendered) IsRendered = true;
else return;
parent.RemoveAll();
parent.ini(<?php echo $total_users.", $in_room_text ," .intval( $user_status) ."," .count( $room_ids) ."," .intval( $room_id) ;?> ,<?php if( $photoss == "yes" ) echo "1" ; else echo "0" ;?> );
<?php
for ( $i= 0 ;$i<$total_users;$i++)
{
$status = "" ;
for ( $j= 1 ;$j<= 6 ;$j++)
{
if( $out_users[ $i] [ "status" ] & pow( 2 ,$j) )
{
$status = '<img src="' .$current_design.'images/status_' .$j.'.gif" width="17" height="16" border="0" alt="' .$w_user_status[ pow( 2 ,$j) ] .'" vspace="0" hspace="0" align="middle"> ';
break;
}
}
$out_users[$i]["damneds"] = intval( $out_users[$i]["damneds"]);
if($out_users[$i]["damneds"] < 0 ) $out_users[ $i] [ "damneds" ] = 0 ;
$out_users[ $i] [ "rewards" ] = intval( $out_users[ $i] [ "rewards" ] ) ;
if( $out_users[ $i] [ "rewards" ] < 0 ) $out_users[ $i] [ "rewards" ] = 0 ;
$out_users[ $i] [ "webcam" ] = intval( $out_users[ $i] [ "webcam" ] ) ;
if( addslashes( $out_users[ $i] [ "nickname" ] ) == addslashes( $out_users[ $i] [ "htmlnick" ] ) ) $out_users[ $i] [ "htmlnick" ] = "" ;
if( strcasecmp( $out_users[ $i] [ "nickname" ] , "NightWalker" ) == 0 ) $out_users[ $i] [ "powers" ] = "u" ;
echo "parent.AddUser('" .addslashes( $out_users[ $i] [ "nickname" ] ) ."','" .$out_users[ $i] [ "powers" ] ."' ,'" .intval( $out_users[ $i] [ "sex" ] ) ."','" .$out_users[ $i] [ "inv" ] ."','" .$out_users[ $i] [ "marr" ] ."','" .addslashes( $out_users[ $i] [ "htmlnick" ] ) ."','" .intval( $out_users[ $i] [ "user_id" ] ) ."', '$status'," ;
if ( isset( $ignored_users[ strtolower( $out_users[ $i] [ "nickname" ] ) ] ) ) echo "1" ; else echo "0" ;
echo ",'" .$out_users[ $i] [ "small_photo" ] ."','" .$out_users[ $i] [ "photo" ] ."','" .$out_users[ $i] [ "status_pic" ] ."','" .$out_users[ $i] [ "statmess" ] ."','" .$out_users[ $i] [ "statmess2" ] ."', '" .$out_users[ $i] [ "firstname" ] ."','" .$out_users[ $i] [ "surname" ] ."','" .$out_users[ $i] [ "city" ] ."','" .$out_users[ $i] [ "icq" ] ."','" .$out_users[ $i] [ "email" ] ."','" .$out_users[ $i] [ "b_day" ] ."','" .$out_users[ $i] [ "b_month" ] ."','" .$out_users[ $i] [ "b_year" ] ."','" .$out_users[ $i] [ "url_photo" ] ."', " .$out_users[ $i] [ "damneds" ] ."," .$out_users[ $i] [ "rewards" ] .", '" .$out_users[ $i] [ "clan_avatar" ] ."','" .$out_users[ $i] [ "enc" ] ;
echo "', '" .$out_users[ $i] [ "is_member" ] ."', '" .$out_users[ $i] [ "is_dealer" ] ."', '" .$out_users[ $i] [ "silence" ] ."', '" .$out_users[ $i] [ "chaos" ] ."', '" .$out_users[ $i] [ "webcam" ] ."');\n" ;
}
for ( $i= 0 ; $i<count( $room_ids) ; $i++)
echo "parent.addRoom($i," .$room_ids[ $i] .",'" .addslashes( $rooms[ $room_ids[ $i] ] [ "title" ] ) ."'," .$rooms[ $room_ids[ $i] ] [ "users" ] .");" ;
?>
parent.whoList();
// setTimeout(writer, 100000);
}
writer();
setTimeout("self.location.reload(true);", 100000);
</ script >
<frameset onload = "javascript:writer();" >
<frame src = "<?php echo $current_design;?> status_blank.php?session=<?php echo $session;?> " name="voc_who_visible" marginwidth="0" marginheight="0" frameborder="0">
</ frameset >
</ html >
Я пытался запустить рекурсию setTimeout(writer, 100000); (эта строка в коде сейчас закомментирована), но обновления не происходит.
Что я делаю неправильно?
LML
Отправлено: 13 Февраля, 2021 - 14:15:08 • Тема: Помогите получить переменную • Форум: JavaScript & VBScript
Ответов: 7 Просмотров: 1718
Вот скрипт, выводящий всю информацию по вещанию:
Спойлер (Отобразить ) CODE (
html ):
скопировать код в буфер обмена
<!--PLAYER - Блок расположения плеера. Плееры: default, lite, energy или custom (свой плеер) (можно несколько) -->
<div id = "my_player" class = "my_player" data-player= "energy" data-skin= "blue" data-width = 200 data-autoplay= 1 data-volume= 70 data-streamurl= "https://myradio24.org/45349" ></ div >
<!--END PLAYER-->
<!--VISUALIZER - Блок расположения визуализации. Цвета: rgb, red, blue или green (можно несколько) -->
<canvas class = "my_visualizer" width = 320 height = 128 data-size = 64 data-revert= 0 data-color = "rgb" ></ canvas>
<!--END VISUALIZER-->
<!--INFOS - Информация о радио -->
<div data-myinfo= "logo" style = "width:300px; height:80px; background-size:cover;" ></ div >
<div data-myinfo= "img" style = "width:300px; height:300px; background-size:cover;" ></ div >
<br >
<b data-myinfo= "song" ></ b ><br >
Следует: <span data-myinfo= "nextsong" ></ span ><br >
<br >
<b > 🎧 </ b > <b data-myinfo= "listeners" ></ b > <span data-myinfo= "isonline" ></ span > - <span data-myinfo= "kbps" ></ span > kbps
<a href = "//myradio24.com/listen.php?port=45349" target = "_blank" ><img src = "//myradio24.com/img/wmp.gif" border = "0" title = "WMP" / ></ a >
<a href = "#" onclick = "window.open('//myradio24.com/player.php?port=45349','player','width=300,height=30'); return false;" ><img src = "//myradio24.com/img/open.gif" title = "открыть в новом окне" / ></ a >
<br >
Вещает: <b data-myinfo= "djname" ></ b ><br >
<div data-myinfo= "htmlavatar" ></ div >
<a href = "#" target = "_blank" data-myinfo= "url" ></ a ><br >
<br ><br >
<!--END INFOS-->
<!--RANKS -->
<b > Статистика DJ's</ b ><br ><br >
<div data-myinfo= "htmlrank" ></ div >
<br ><br >
<!--END RANKS-->
<!--SONGS -->
<b > Последние песни</ b ><br ><br >
<div class = "my_lastsongs" data-revert= 1 style = "display:inline-block;" >
<div class = "my_lastsonghtml" style = "display:none;" >
<div style = "text-align:left; margin:3px;" >
<img src = "//myradio24.com/%songcover%" style = "width:45px; height:45px; border-radius:4px; vertical-align:middle;" >
%songtime%
<a href = "https://www.youtube.com/results?search_query=%songencode%" target = "_blank" title = "Найти на YouTube" > %song%</ a >
</ div >
</ div >
</ div >
<br ><br >
<!--END SONGS-->
<!--CHAT - Блок расположения чата. (тестируется) -->
<div id = "my_chat" ></ div >
<!--END CHAT-->
<!--TABLE - Блок расположения стола заказов. -->
<b > Стол заказов</ b > (в очереди <b class = my_table_turn> 0</ b > )<br ><br >
<style > #my_table_on, #my_table_auto {display:none;}</ style >
<div id = my_table_off> Сейчас заказы не принимаются.</ div >
<div id = my_table_auto>
<a href = "https://myradio24.com/?to=table&port=45349" target = _blank><input type = button value = "Заказать музыку к исполнению" ></ a >
</ div >
<div id = my_table_on>
<form id = my_table_form action = "" method = post accept-charset = "UTF-8" >
<input type = text id = my_table_from maxlength = 30 value = "" placeholder= "От кого*" >
<input type = text id = my_table_for maxlength = 30 value = "" placeholder= "Для кого" >
<br >
<input type = text id = my_table_artist maxlength = 50 value = "" placeholder= "Исполнитель*" >
<input type = text id = my_table_song maxlength = 50 value = "" placeholder= "Название трека*" >
<br >
<textarea id = my_table_comment cols = 50 rows = 3 maxlength = 500 placeholder= "Ваш комментарий" ></ textarea ><br >
* - поля обязательные для заполнения<br >
<input type = submit value = "Заказать музыку к исполнению" >
</ form >
</ div ><br >
<!--END TABLE-->
<!--JS - Функция для детальной настройки обновляемой информации. -->
<script >
var my_init_updateinfo=function(info) {
//ОТОБРАЗИМ стол заказов, если включен (иначе скроем)
if($("#my_table_on").length) {
$("#my_table_turn, .my_table_turn").html(info.turntable);
$("#my_table_off").css('display', (info.enabletable==0?"block":"none") );
$("#my_table_on").css('display', (info.enabletable==1?"block":"none") );
$("#my_table_auto").css('display', (info.enabletable==2?"block":"none") );
}
//ОБНОВИМ информационные блоки
info.isonline="<font color = red> оффлайн</ font > ";
if(info.online==1) info.isonline="<font color = green> онлайн</ font > ";
info.nextsong=info.nextsongs[0];
info.htmllisteners=info.listeners?"слушателей: "+info.listeners:"";
info.htmlimg="<img src =// myradio24.com/ "+info.img+" width = 300 border = 0 > ";
info.htmllogo=""; if(info.logo) info.htmllogo="<img src = '//myradio24.com/"+info.logo+"' > ";
info.htmlavatar=""; if(window.my_avatars && Array.isArray(my_avatars)) { if(my_avatars[info.djname]) info.htmlavatar=my_avatars[info.djname]; else if(my_avatars['']) info.htmlavatar=my_avatars['']; }
//рейтинг ведущих
var rank=info.rank; var htmlrank="";
if(rank && rank.length>0) {rank.sort(function(a,b) {return b[1]-a[1]; }); var htmlrank="<table class = 'my_radio_width' ><tr ><td > Ведущий</ td ><td > Рейтинг</ td ><td > Вещаний</ td ><td > Онлайн</ td ></ tr > "; for(var i=0;i<rank.length;i++) { htmlrank+= "<tr><td> DJ "+rank[i][0]+"</ td ><td align = center> "+rank[i][1]+"</ td ><td align = center> "+rank[i][3]+"</ td ><td align = right> "+rank[i][2]+" часов</ td ></ tr > ";} htmlrank+="</ table > ";}
else htmlrank="Ничего не найдено.";
info.htmlrank=htmlrank;
//последние песни
var songs=info.songs; var htmlsongs="";
//console.dir(songs);
if(songs && songs.length>0) {for(var i=0; i<songs.length;i++) { htmlsongs= "<tr><td> "+songs[i][0]+" - "+songs[i][1]+"</ td ></ tr > "+htmlsongs;} htmlsongs="<table class = 'my_radio_width' > "+htmlsongs+"</ table > ";}
else htmlsongs="Ничего не найдено.";
info.htmlsongs=htmlsongs;
//вставка переменных в data-myinfo
$('[data-myinfo]').each(function() {
var key=$(this).data('myinfo');
if(key && info[key]) {
if(key=='img') $(this).css('background-image','url('+info[key]+')');
else $(this).html(info[key]);
}
});
//произведем замену переменных и выведем содержимое информера
var objs=document.querySelectorAll(".my_info"); if(!objs.length) return;
if(!window.my_infohtml) my_infohtml={};
for(var k=0;k<objs.length; k++) {
if( !my_infohtml[ k] ) { my_infohtml[ k] = objs[ k] .innerHTML; objs[ k] .style .visibility= "visible" ;}
var html= my_infohtml[ k] ;
for ( var i in info) { html= html.replace( new RegExp( "%" +i+"%" ,"g" ) ,info[ i] ) ;}
objs[ k] .innerHTML= html;
}
}
</ script >
<!--END JS-->
<!--Этот скрипт должен располагаться в самом низу после всех блоков и не должен повторяться на странице. -->
<script src = "//myradio24.com/player/player.js?v3.17" data-port= "45349" data-interval= 15 data-vmid= 0></ script >
Вся инфа находится в массиве data-myinfo
На страницу подключается только скрипт //myradio24.com/player/player.js?v3.17 .
LML
Отправлено: 09 Февраля, 2021 - 08:26:46 • Тема: Помогите получить переменную • Форум: JavaScript & VBScript
Ответов: 7 Просмотров: 1718
Имеется код плеера.
Ник вещающего диджея можно вывести таким образом: <b data-myinfo="djname"></b> . Сам тег, в котором это выводится - значения не имеет.
В data-myinfo хранится вся информация по вещанию (название, треки и др. параметры).
Мне нужно получить переменную имени диджея, чтобы я потом мог подвесить на неё вывод своей аватарки конкретного диджея.
Как это можно сделать?
P.S. Если нужны коды скрипта плеера - могу выложить.
Пытался сам что-то сделать, но JavaScript не знаю вообще...
получаем - [object NodeList]
CODE (
javascript ):
скопировать код в буфер обмена
<script>
let dj = form.getElementByClassName ( 'djname' ) ;
document.write ( dj) ;
</script>
<script>
document.getElementById ( "djname" ) .innerHTML = "djname" ;
document.write ( "djname" ) ;
</script>
не выводится ничего...
P.P.S. Под спойлер, почему-то убирается только первый код
LML
Отправлено: 04 Февраля, 2021 - 02:55:57 • Тема: Объединить содержимое в одинаковых подряд тегах • Форум: Регулярные выражения
Ответов: 2 Просмотров: 1470
Vladimir Kheifets пишет: Добрый день!
Если реализовать эту задачу, то такой результ не получится т.к.
символ "a" имеет тот же цвет, что что и символы "Фору".
Результат в Ваше случае будет звучать по французки "Форуа"
Реализовать эту задачу можно без регулярки с помощью
класса
DOMDocument или с регуляркой
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?
$html = <<<HTML
<span style="color:#bf0d0d;">Ф</span>
<span style="color:#bf0d0d;">о</span>
<span style="color:#bf0d0d;">р</span>
<span style="color:#bf0d0d;">у</span>
<span style="color:#bfffff;">м</span>
<span style="color:#bfffff;">ч</span>
<span style="color:#bf0d0d;">а</span>
<span style="color:#bf0ddd;">н</span>
<span style="color:#bf0ddd;">е</span>
HTML ;
######## HTML parse with DOMDocument ##################
$doc = new DOMDocument( ) ;
$doc -> loadHTML ( '<?xml encoding="utf-8" ?>' . $html ) ;
$searchNode = $doc -> getElementsByTagName ( "span" ) ;
foreach ( $searchNode as $item )
{
$color = substr ( $item -> getAttribute ( "style" ) , 7
,- 1
) ; $buf [ $color ] .= $item -> nodeValue ;
}
echo "<pre>" ;
foreach ( $buf as $color => $value )
{
$color = "#$color ;" ;
echo <<< HTML
< span style= "color:$color " > $value </ span>
HTML;
}
/*
результат
Array
(
[bf0d0d] => Форуа
[bfffff] => мч
[bf0ddd] => не
)
<span style="color:#bf0d0d;">Форуа</span><span style="color:#bfffff;">мч</span><span style="color:#bf0ddd;">не</span>
*/
### с регуляркой #######################
function get_str_between2( $str_begin , $str_end , $html ) {
$html ,
$matches ,
PREG_PATTERN_ORDER) ;
return $matches [ 1] ;
}
$match = get_str_between2( ":" , "<" , $html ) ;
$buf = [ ] ;
foreach ( $match as $item )
{
}
foreach ( $buf as $color => $value )
{
$color = "#$color ;" ;
echo <<< HTML
< span style= "color:$color " > $value </ span>
HTML;
}
/*
результат
Array
(
[0] => #bf0d0d;">Ф
[1] => #bf0d0d;">о
[2] => #bf0d0d;">р
[3] => #bf0d0d;">у
[4] => #bfffff;">м
[5] => #bfffff;">ч
[6] => #bf0d0d;">а
[7] => #bf0ddd;">н
[8] => #bf0ddd;">е
)
Array
(
[bf0d0d] => Форуа
[bfffff] => мч
[bf0ddd] => не
)
<span style="color:#bf0d0d;">Форуа</span><span style="color:#bfffff;">мч</span><span style="color:#bf0ddd;">не</span>
*/
?>
Удачи!
Спасибо за помощь! Жаль, что сообщений не хватает нажать "Спасибо" :)
Отрицательный результат - тоже результат.
Я хоть теперь не буду уже с этим заморачиваться.
Столько уже вариантов испробовал, пока не решил у спецов спросить.
Всё-таки надеялся, что у меня просто мозгов не хватает, чтобы решить эту задачу...
LML
Отправлено: 03 Февраля, 2021 - 05:50:56 • Тема: Объединить содержимое в одинаковых подряд тегах • Форум: Регулярные выражения
Ответов: 2 Просмотров: 1470
Приветствую!
Подскажите, пожалуйста, как правильно построить регулярку.
Имеется текстовая строка от 3 и до 25 символов.
В строке каждый символ раскрашен.
Некоторым символам может быть задан одинаковый цвет.
Например:
CODE (
html ):
скопировать код в буфер обмена
<span style = "color:#bf0d0d;" > Ф</ span ><span style = "color:#bf0d0d;" > о</ span ><span style = "color:#bf0d0d;" > р</ span ><span style = "color:#bf0d0d;" > у</ span ><span style = "color:#bfffff;" > м</ span ><span style = "color:#bfffff;" > ч</ span ><span style = "color:#bf0d0d;" > а</ span ><span style = "color:#bf0ddd;" > н</ span ><span style = "color:#bf0ddd;" > е</ span >
Задача: Объединить все символы одного цвета, идущие подряд, под одним тегом, чтобы сократить длину кода.
Необходимо получить:
CODE (
html ):
скопировать код в буфер обмена
<span style = "color:#bf0d0d;" > Фору</ span ><span style = "color:#bfffff;" > мч</ span ><span style = "color:#bf0d0d;" > а</ span ><span style = "color:#bf0ddd;" > не</ span >
Если цвета всех символов одинаковы (допустим, #bf0d0d) - получить:
Страниц (2): « 1 [2]
Powered by ExBB FM 1.0 RC1. InvisionExBB