За последние 24 часа нас посетили 18195 программистов и 1609 роботов. Сейчас ищут 1869 программистов ...

Ротатор ссылок (помогите разобраться)

Тема в разделе "Прочие вопросы по PHP", создана пользователем yakov, 15 янв 2016.

  1. yakov

    yakov Новичок

    С нами с:
    15 янв 2016
    Сообщения:
    5
    Симпатии:
    0
    Помогите не много переделать ротатор ссылок. В php не знаток.
    Есть три файла:
    Вот этот ставится на страницу сайта:
    Код (PHP):
    1. <div id="blk">Загрузка...</div>
    2. <?if($USER_LOGGED_IN$)?>
    3. <hr><div class="blok_vm"><div class="rvo_k">[url="javascript://"]Добавить ссылку[/url]</div></div>
    4. <script type="text/javascript" src="/php/ball/index.php?w=datamod&m=links"></script>
    5. <?endif?>
    6.  
    7. <script type="text/javascript">$('#blk').load('/php/ball/index.php?w=links&t=get');</script>
    8. </div>
    Вот эти два на php:
    Код (PHP):
    1. Фаил config.php
    2. [add:(
    3. {name:price:value<:[30]:>}{txt<:[Сколько баллов нужно]:>}
    4. {name:max:value<:[5]:>}{txt<:[Максимальное кол-во ссылок которые выводятся]:>}
    5. {name:maxlen:value<:[60]:>}{txt<:[Максимальное кол-во символов в тексте ссылки]:>}
    6. )]
    7. {name:switch:value<:[1]:>}
    8. {name:display:value<:[0]:>}
    9. {name:name:value<:[Покупка ссылки]:>}
    10. {name:message:value<:[Это ротатор ссылок, вы покупаете ссылку и она появляется в самом верху]:>}
    11. {name:img:value<:[]:>}
    12. {name:w_h:value<:[400,100]:>}
    13. {name:ajax:value<:[]:>}
    14. {name:html:value<:[<fieldset><legend><b>Что это?</b></legend>Это ротатор ссылок, вы покупаете ссылку за 30 баллов и она появляется в самом верху, при этом самая нижняя исчезает если ссылок больше 5. Баллы можно посмотреть в своем профиле</fieldset><fieldset><legend><b>Ссылка на сайт</b></legend><input style="width:100%" value="" id="blk" type="text"></fieldset><fieldset><legend><b>Название сайта</b></legend><input style="width:100%" value="" id="bnz" type="text"></fieldset><fieldset><div id="send_$MODUL$" style="float:left"></div><input type="button" id="fn_$MODUL$" style="float:right" value="Готово"></fieldset>]:>}
    15. {name:js:value<:[$('#fn_$MODUL$').click(function(){
    16. $(this).attr('disabled',true);
    17. $('#send_$MODUL$').html('$LOAD$');
    18. $.get('/php/ball/index.php?w=$MODUL$&url='+encodeURIComponent($('#blk').val())+'&txt='+encodeURIComponent($('#bnz').val()), function(data){
    19. $('#send_$MODUL$').html(data);
    20. $('#fn_$MODUL$').attr('disabled',false);
    21. });
    22. });]:>} 
    Фаил index.pxp
    Код (PHP):
    1. /** --------
    2. Ротатор ссылок
    3.  
    4. <div id="blk">Загрузка...</div>
    5. <?endif?><script type="text/javascript">$('#blk').load('/php/ball/index.php?w=links&t=get');</script>
    6. <?if($USER_LOGGED_IN$)?><hr> [ [url="javascript://"]Добавить ссылку[/url] ]
    7. <script type="text/javascript" src="/php/ball/index.php?w=datamod&m=links"></script><?endif?>
    8. -------- **/
    9.  
    10. if(empty($work)) exit('err'); # Защита от прямого вызова
    11. if($_GET['t'] == 'get'){
    12. $data = file_get_contents($modul.'data.dat');
    13. if(empty($data)) $data = '<li><b>Тут может быть ваша ссылка...</b></li>';
    14. exit($data);
    15. }
    16. if($uid == 0) exit($err.'<b>Войдите на сайт</b>');
    17. if(!shield($work)) exit($err.'<b>Не так часто!</b>'); # Защита от частых запросов
    18. $url = urldecode($_GET['url']);
    19. $txt = urldecode($_GET['txt']);
    20. $txt = trim(strip_tags($txt));
    21. if(!preg_match('@^(http://)@', $url)) exit($err.'<b>Неправильная ссылка</b>');
    22. if(strlen($txt) > $bll['maxlen']) exit($err.'<b>Макс. кол-во символов '.$bll['maxlen'].'</b>');
    23. $txt = htmlspecialchars($txt);
    24. if(empty($txt)) exit($err.'<b>Название пустое</b>');
    25. $bls = getBall($uid);
    26. if(empty($bls)) exit($err.'<b>Попробуйте позже</b>');
    27. $bl = get($uid) + $bls;
    28. if($bl < $bll['price']) exit($err.'<b>Недостаточно баллов</b>');
    29. $data = '<li><b>[url="'.$url.'"]'.$txt.'[/url]</b></li>';
    30. $s = file($modul.'data.dat');
    31. $s[0] = $data.PHP_EOL.$s[0];
    32. $e = sizeof($s);
    33. for($c = 0; $c != $e; $c++){
    34. if($c >= $bll['max']-1) $s[$c] = '';
    35. }
    36. $d = fopen($modul.'data.dat', 'w');
    37. foreach($s as $s_) fwrite($d, $s_.'');
    38. fclose($d);
    39. record($uid, 0, $bll['price']);
    40. exit($ok.'<b>Готово</b>');
    41. ?>
    Этот тоже по моему используется
    index.php
    Код (PHP):
    1. <?php 
    2. /** -------- Модуль "Баллы пользователя"
    3. **
    4.   by: ВэйДлин ~ uPost.su
    5.   Website: http://upost.su/
    6. **/
    7.  
    8.  
    9. $___notjson = 1;
    10. $var = array(array(),array());
    11. global $var;
    12. $uid = ucoz_getinfo('SITEUSERID');
    13. header('Content-Type: text/html; charset=utf-8');
    14.  
    15. $work = trim($_GET['w']); # Какую операцию провести
    16. if(empty($work)) exit('err');
    17.  
    18. #### Конфиг
    19. include 'config.php';
    20.  
    21. #### Подключаем стандартные функции
    22. require('function.php');
    23.  
    24.  
    25. /* ------ Спец. work */
    26. # Получение изменений быллов
    27. if($work == 'get') exit(get($_GET['i']));
    28.  
    29. # Возможность изменять баллы админу
    30. if($work == 'change'){
    31.   if($uid != 1) exit('Нет прав доступа!');
    32.   $r = record($_GET['i'], $_GET['p'], $_GET['m']);
    33.   if($r !== true) exit($err.'<b>'.$r.'</b>');
    34.   exit($ok.'<b>Готово</b>');
    35. }
    36.  
    37. # Получение списка модулей
    38. # $USER_ID$, $MODUL$, $LOAD$, $ERR$, $OK$ - Доступные коды
    39. if($work == 'listmod'){
    40.   $scan = scandir('moduls');
    41.   foreach($scan as $dir){
    42.     $config = 'moduls/'.$dir.'/config.bll';
    43.     if(!is_file($config) || $dir == '.'|| $dir == '..') continue;
    44.     $data = bll(file_get_contents($config));
    45.     if(!$data['switch'] || !$data['display']) continue;
    46.     nawvar('USER_ID', $uid, 'LOAD', $load, 'OK', $ok, 'ERR', $err, 'MODUL', $dir);
    47.     $decl = decl($data['price'], array('балл','балла','баллов'));
    48.     echo nawvar('<div class="hbl"><div class="ibl"><img src="'.$data['img'].'" width="32" height="32" alt="" border="0"></div><div class="cbl">[url="javascript://"]'.$data['name'].'</b>[/url]<span class="b0"> - '.$decl.'</span><br>'.$data['message'].'</div></div>');
    49.   }
    50.   exit;
    51. }
    52.  
    53.  
    54.  
    55. # Вызов молуля из списка
    56. # $USER_ID$, $MODUL$, $LOAD$, $ERR$, $OK$ - Доступные коды
    57. if($work == 'datamod' && $_GET['m']){
    58.   header('Content-Type: text/javascript; charset=utf-8');
    59.   nawvar('USER_ID', $uid, 'LOAD', $load, 'OK', $ok, 'ERR', $err);
    60.   if($_GET['m'] == 'allmod'){
    61.     $scan = scandir('moduls');
    62.     foreach($scan as $dir){
    63.       $config = 'moduls/'.$dir.'/config.bll';
    64.       if(!is_file($config) || $dir == '.'|| $dir == '..') continue;
    65.       $data = bll(file_get_contents($config));
    66.       if(!$data['switch'] || !$data['display']) continue;
    67.       nawvar('MODUL', $dir);
    68.       if(!$data['ajax']) $data['ajax'] = "align:'left',autosize:1";
    69.       echo nawvar("function b_".$dir."(){ new _uWnd('b_".$_GET['m']."','".$data['name']."',".$data['w_h'].",{".$data['ajax'].",oncontent:function(){".$data['js']."}},'".$data['html']."');}".PHP_EOL);
    70.     }
    71.     exit;
    72.   }
    73.   $config = 'moduls/'.$_GET['m'].'/config.bll';
    74.   if(!is_file($config)) exit('"config.bll" не обнаружен');
    75.   $data = bll(file_get_contents($config));
    76.   if(!$data['switch']) exit('Модуль не активен');
    77.   if(!$data['ajax']) $data['ajax'] = "align:'left',autosize:1";
    78.   nawvar('MODUL', $_GET['m']);
    79.   echo nawvar("function b_".$_GET['m']."(){ new _uWnd('b_".$_GET['m']."','".$data['name']."',".$data['w_h'].",{".$data['ajax'].",oncontent:function(){".$data['js']."}},'".$data['html']."');}");
    80.   exit;
    81. }
    82. /* ------ */
    83.  
    84.  
    85. # Подключаем модуль
    86. $modul = 'moduls/'.$work.'/';
    87. if(!is_file($modul.'index.php')) exit('Такого мудуля не существует');
    88. if(!is_file($modul.'config.bll')) exit('"config.bll" не обнаружен');
    89. $config = file_get_contents($modul.'config.bll');
    90. $bll = bll($config);
    91. if(!$bll['switch']) exit('Модуль не активен');
    92. require($modul.'index.php');
    93.  
    94. ?>
    И этот:
    function.php
    Код (PHP):
    1. <?php
    2. # Изменение баллов
    3. function record($id, $plus = 0, $minus = 0){
    4.   if(empty($plus)) $plus = 0;
    5.   if(empty($minus)) $minus = 0;
    6.   if($minus == 0 && $plus == 0) return 'Ошибка';
    7.   $numf = numfl($plus, $minus);
    8.   if($numf !== true) return $numf;
    9.   $save = $plus - $minus;
    10.   $data = file('ball.dat');
    11.   $count = count($data);
    12.   for($i=0; $i<$count; $i++){
    13.     $ball = explode(':', $data[$i]);
    14.     if($id == $ball[0]){
    15.       $save = $save + $ball[1];
    16.       $data[$i] = $id.':'.$save.PHP_EOL;
    17.       save(implode('',$data),'w+','ball.dat');
    18.       return true;
    19.     }
    20.   }
    21.   save($id.':'.$save.PHP_EOL,'a+','ball.dat');
    22.   return true;
    23. }
    24.  
    25. # Запись
    26. function save($data, $t, $s){
    27.   $f = fopen($s, $t);
    28.   fwrite($f, $data);
    29.   fclose($f);
    30. }
    31.  
    32. # Получение быллов из ball.dat
    33. function get($id){
    34.   $data = file('ball.dat');
    35.   foreach($data as $i){
    36.     $user = explode(':', $i);
    37.     if($user[0] == $id) return str_replace(PHP_EOL, '', $user[1]);
    38.   }
    39.   return '0'; 
    40. }
    41.  
    42. # Получение баллов
    43. function getBall($id){
    44.   global $sity;
    45.   $get = curl('http://'.$sity.'/index/8-'.$id);
    46.   preg_match_all('##', $get, $bl);
    47.   if(empty($bl[1][0])) return;
    48.   return $bl[1][0];
    49. }
    50.  
    51. # Отправка ЛС
    52. function ls($message, $them, $id){
    53.   global $login, $pass, $sity;
    54.   $get = curl('http://'.$sity.'/index/14-'.$id.'-0-1');
    55.   if(eregi('="/index/sub/"', $get)){
    56.     curl('http://'.$sity.'/index/sub/','user='.$login.'&password='.$pass.'&rem=1&hidden=1&a=2&ajax=2');
    57.     $get = curl('http://'.$sity.'/index/14-'.$id.'-0-1');
    58.   }
    59.   preg_match_all('#name="s" value="(.*?)"#', $get, $user);
    60.   preg_match_all('#name="ssid" value="(.*?)"#', $get, $ssid);
    61.   $message = urlencode(str_replace('{user}', $user[1][0], $message));
    62.   $them = urlencode(str_replace('{user}', $user[1][0], $them));
    63.   $post = curl('http://'.$sity.'/index/', 'a=18&s='.$user[1][0].'&subject='.$them.'&message='.$message.'&ssid='.$ssid[1][0]);
    64.   if(eregi('успешно', $post)) return true;
    65.   return false;
    66. }
    67.  
    68. ########### Модульные функции #############
    69.  
    70. # cURL
    71. function curl($url, $post = '', $binary = 0 ){
    72.   $ch = curl_init();
    73.   curl_setopt($ch, CURLOPT_URL, $url);
    74.   if($binary == 0){
    75.     curl_setopt($ch, CURLOPT_HEADER, 1);
    76.   }else{
    77.     curl_setopt($ch, CURLOPT_HEADER, 0);
    78.   }
    79.   curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent: Opera/9.25 (Windows NT 6.0; U; ru)");
    80.   curl_setopt($ch, CURLOPT_NOBODY, 0);
    81.   if(!empty($post)){
    82.     curl_setopt($ch, CURLOPT_POST, 1);
    83.     curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    84.   }
    85.   curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); // Записываем куки
    86.   curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); // Считаем куки
    87.   curl_setopt($ch, CURLOPT_BINARYTRANSFER, $binary);
    88.   curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    89.   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    90.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    91.   $result = curl_exec($ch);
    92.   curl_close($ch);
    93.   return $result;
    94. }
    95.  
    96. # Защита от частых запросов
    97. function shield($name = 'ball', $ban = 20){
    98.   $name = 'time_'.$name;
    99.   $time = date('U');
    100.   if(empty($_SESSION[$name])){
    101.     $_SESSION[$name] = $time;
    102.     return true;
    103.   }
    104.   if(($_SESSION[$name]+$ban-$time) <= 0){
    105.     unset($_SESSION[$name]);
    106.     return true;
    107.   }
    108.   return false;
    109. }
    110.  
    111. # Склонение числительных
    112. function decl($number, $titles){  
    113.   $cases = array (2, 0, 1, 1, 1, 2);  
    114.   return $number." ".$titles[ ($number%100 > 4 && $number %100 < 20) ? 2 : $cases[min($number%10, 5)] ];  
    115. }  
    116.  
    117. # Проверка числа
    118. function numfl(){
    119.   $par = func_get_args();
    120.   foreach($par as $n){
    121.     if(strlen($n) > 15) return $err.'<b>Многовато</b>';
    122.     if(!is_numeric($n)) return $err.'<b>Введите число</b>';
    123.     if($n<0) return $err.'<b>Введите норм число</b>';
    124.   }
    125.   return true;
    126. }
    127.  
    128. # Занесение данных .bll в массив 
    129. function bll($config){
    130.   preg_match_all('#{name:([\s\S]*?):value<:\[([\s\S]*?)\]:>}#', $config, $d);
    131.   $data = array();
    132.   $count = count($d[1]);
    133.   for($i=0; $i<$count; $i++){
    134.     $data[$d[1][$i]] = $d[2][$i];
    135.   }
    136.   return $data;
    137. }
    138.     
    139. # Объявление переменных
    140. function nawvar(){
    141.   global $var;
    142.   $c = func_get_args();
    143.   if(empty($c[1])) return str_replace($var[0], $var[1], $c[0]);
    144.   $count = count($c);
    145.   for($i=0; $i<$count; $i=$i+2){
    146.     $k = '$'.$c[$i].'$';
    147.     if(in_array($k, $var[0])){
    148.       $n = array_search($k, $var[0]);
    149.       $var[0][$n] = $k;
    150.       $var[1][$n] = $c[$i+1];
    151.       continue;
    152.     }
    153.     $var[0][] = $k;
    154.     $var[1][] = $c[$i+1];
    155.   }
    156. }
    157. ?>
    Если не затруднит подскажите как сделать чтобы можно было добавить еще картинку и текст с описанием.
    А то после добавления только одна ссылка.

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.