Помогите не много переделать ротатор ссылок. В php не знаток. Есть три файла: Вот этот ставится на страницу сайта: Код (PHP): <div id="blk">Загрузка...</div> <?if($USER_LOGGED_IN$)?> <hr><div class="blok_vm"><div class="rvo_k">[url="javascript://"]Добавить ссылку[/url]</div></div> <script type="text/javascript" src="/php/ball/index.php?w=datamod&m=links"></script> <?endif?> <script type="text/javascript">$('#blk').load('/php/ball/index.php?w=links&t=get');</script> </div> Вот эти два на php: Код (PHP): Фаил config.php [add:( {name:price:value<:[30]:>}{txt<:[Сколько баллов нужно]:>} {name:max:value<:[5]:>}{txt<:[Максимальное кол-во ссылок которые выводятся]:>} {name:maxlen:value<:[60]:>}{txt<:[Максимальное кол-во символов в тексте ссылки]:>} )] {name:switch:value<:[1]:>} {name:display:value<:[0]:>} {name:name:value<:[Покупка ссылки]:>} {name:message:value<:[Это ротатор ссылок, вы покупаете ссылку и она появляется в самом верху]:>} {name:img:value<:[]:>} {name:w_h:value<:[400,100]:>} {name:ajax:value<:[]:>} {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>]:>} {name:js:value<:[$('#fn_$MODUL$').click(function(){ $(this).attr('disabled',true); $('#send_$MODUL$').html('$LOAD$'); $.get('/php/ball/index.php?w=$MODUL$&url='+encodeURIComponent($('#blk').val())+'&txt='+encodeURIComponent($('#bnz').val()), function(data){ $('#send_$MODUL$').html(data); $('#fn_$MODUL$').attr('disabled',false); }); });]:>} Фаил index.pxp Код (PHP): /** -------- Ротатор ссылок <div id="blk">Загрузка...</div> <?endif?><script type="text/javascript">$('#blk').load('/php/ball/index.php?w=links&t=get');</script> <?if($USER_LOGGED_IN$)?><hr> [ [url="javascript://"]Добавить ссылку[/url] ] <script type="text/javascript" src="/php/ball/index.php?w=datamod&m=links"></script><?endif?> -------- **/ if(empty($work)) exit('err'); # Защита от прямого вызова if($_GET['t'] == 'get'){ $data = file_get_contents($modul.'data.dat'); if(empty($data)) $data = '<li><b>Тут может быть ваша ссылка...</b></li>'; exit($data); } if($uid == 0) exit($err.'<b>Войдите на сайт</b>'); if(!shield($work)) exit($err.'<b>Не так часто!</b>'); # Защита от частых запросов $url = urldecode($_GET['url']); $txt = urldecode($_GET['txt']); $txt = trim(strip_tags($txt)); if(!preg_match('@^(http://)@', $url)) exit($err.'<b>Неправильная ссылка</b>'); if(strlen($txt) > $bll['maxlen']) exit($err.'<b>Макс. кол-во символов '.$bll['maxlen'].'</b>'); $txt = htmlspecialchars($txt); if(empty($txt)) exit($err.'<b>Название пустое</b>'); $bls = getBall($uid); if(empty($bls)) exit($err.'<b>Попробуйте позже</b>'); $bl = get($uid) + $bls; if($bl < $bll['price']) exit($err.'<b>Недостаточно баллов</b>'); $data = '<li><b>[url="'.$url.'"]'.$txt.'[/url]</b></li>'; $s = file($modul.'data.dat'); $s[0] = $data.PHP_EOL.$s[0]; $e = sizeof($s); for($c = 0; $c != $e; $c++){ if($c >= $bll['max']-1) $s[$c] = ''; } $d = fopen($modul.'data.dat', 'w'); foreach($s as $s_) fwrite($d, $s_.''); fclose($d); record($uid, 0, $bll['price']); exit($ok.'<b>Готово</b>'); ?> Этот тоже по моему используется index.php Код (PHP): <?php /** -------- Модуль "Баллы пользователя" ** by: ВэйДлин ~ uPost.su Website: http://upost.su/ **/ $___notjson = 1; $var = array(array(),array()); global $var; $uid = ucoz_getinfo('SITEUSERID'); header('Content-Type: text/html; charset=utf-8'); $work = trim($_GET['w']); # Какую операцию провести if(empty($work)) exit('err'); #### Конфиг include 'config.php'; #### Подключаем стандартные функции require('function.php'); /* ------ Спец. work */ # Получение изменений быллов if($work == 'get') exit(get($_GET['i'])); # Возможность изменять баллы админу if($work == 'change'){ if($uid != 1) exit('Нет прав доступа!'); $r = record($_GET['i'], $_GET['p'], $_GET['m']); if($r !== true) exit($err.'<b>'.$r.'</b>'); exit($ok.'<b>Готово</b>'); } # Получение списка модулей # $USER_ID$, $MODUL$, $LOAD$, $ERR$, $OK$ - Доступные коды if($work == 'listmod'){ $scan = scandir('moduls'); foreach($scan as $dir){ $config = 'moduls/'.$dir.'/config.bll'; if(!is_file($config) || $dir == '.'|| $dir == '..') continue; $data = bll(file_get_contents($config)); if(!$data['switch'] || !$data['display']) continue; nawvar('USER_ID', $uid, 'LOAD', $load, 'OK', $ok, 'ERR', $err, 'MODUL', $dir); $decl = decl($data['price'], array('балл','балла','баллов')); 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>'); } exit; } # Вызов молуля из списка # $USER_ID$, $MODUL$, $LOAD$, $ERR$, $OK$ - Доступные коды if($work == 'datamod' && $_GET['m']){ header('Content-Type: text/javascript; charset=utf-8'); nawvar('USER_ID', $uid, 'LOAD', $load, 'OK', $ok, 'ERR', $err); if($_GET['m'] == 'allmod'){ $scan = scandir('moduls'); foreach($scan as $dir){ $config = 'moduls/'.$dir.'/config.bll'; if(!is_file($config) || $dir == '.'|| $dir == '..') continue; $data = bll(file_get_contents($config)); if(!$data['switch'] || !$data['display']) continue; nawvar('MODUL', $dir); if(!$data['ajax']) $data['ajax'] = "align:'left',autosize:1"; 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); } exit; } $config = 'moduls/'.$_GET['m'].'/config.bll'; if(!is_file($config)) exit('"config.bll" не обнаружен'); $data = bll(file_get_contents($config)); if(!$data['switch']) exit('Модуль не активен'); if(!$data['ajax']) $data['ajax'] = "align:'left',autosize:1"; nawvar('MODUL', $_GET['m']); echo nawvar("function b_".$_GET['m']."(){ new _uWnd('b_".$_GET['m']."','".$data['name']."',".$data['w_h'].",{".$data['ajax'].",oncontent:function(){".$data['js']."}},'".$data['html']."');}"); exit; } /* ------ */ # Подключаем модуль $modul = 'moduls/'.$work.'/'; if(!is_file($modul.'index.php')) exit('Такого мудуля не существует'); if(!is_file($modul.'config.bll')) exit('"config.bll" не обнаружен'); $config = file_get_contents($modul.'config.bll'); $bll = bll($config); if(!$bll['switch']) exit('Модуль не активен'); require($modul.'index.php'); ?> И этот: function.php Код (PHP): <?php # Изменение баллов function record($id, $plus = 0, $minus = 0){ if(empty($plus)) $plus = 0; if(empty($minus)) $minus = 0; if($minus == 0 && $plus == 0) return 'Ошибка'; $numf = numfl($plus, $minus); if($numf !== true) return $numf; $save = $plus - $minus; $data = file('ball.dat'); $count = count($data); for($i=0; $i<$count; $i++){ $ball = explode(':', $data[$i]); if($id == $ball[0]){ $save = $save + $ball[1]; $data[$i] = $id.':'.$save.PHP_EOL; save(implode('',$data),'w+','ball.dat'); return true; } } save($id.':'.$save.PHP_EOL,'a+','ball.dat'); return true; } # Запись function save($data, $t, $s){ $f = fopen($s, $t); fwrite($f, $data); fclose($f); } # Получение быллов из ball.dat function get($id){ $data = file('ball.dat'); foreach($data as $i){ $user = explode(':', $i); if($user[0] == $id) return str_replace(PHP_EOL, '', $user[1]); } return '0'; } # Получение баллов function getBall($id){ global $sity; $get = curl('http://'.$sity.'/index/8-'.$id); preg_match_all('##', $get, $bl); if(empty($bl[1][0])) return; return $bl[1][0]; } # Отправка ЛС function ls($message, $them, $id){ global $login, $pass, $sity; $get = curl('http://'.$sity.'/index/14-'.$id.'-0-1'); if(eregi('="/index/sub/"', $get)){ curl('http://'.$sity.'/index/sub/','user='.$login.'&password='.$pass.'&rem=1&hidden=1&a=2&ajax=2'); $get = curl('http://'.$sity.'/index/14-'.$id.'-0-1'); } preg_match_all('#name="s" value="(.*?)"#', $get, $user); preg_match_all('#name="ssid" value="(.*?)"#', $get, $ssid); $message = urlencode(str_replace('{user}', $user[1][0], $message)); $them = urlencode(str_replace('{user}', $user[1][0], $them)); $post = curl('http://'.$sity.'/index/', 'a=18&s='.$user[1][0].'&subject='.$them.'&message='.$message.'&ssid='.$ssid[1][0]); if(eregi('успешно', $post)) return true; return false; } ########### Модульные функции ############# # cURL function curl($url, $post = '', $binary = 0 ){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if($binary == 0){ curl_setopt($ch, CURLOPT_HEADER, 1); }else{ curl_setopt($ch, CURLOPT_HEADER, 0); } curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent: Opera/9.25 (Windows NT 6.0; U; ru)"); curl_setopt($ch, CURLOPT_NOBODY, 0); if(!empty($post)){ curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); // Записываем куки curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); // Считаем куки curl_setopt($ch, CURLOPT_BINARYTRANSFER, $binary); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); return $result; } # Защита от частых запросов function shield($name = 'ball', $ban = 20){ $name = 'time_'.$name; session_start(); $time = date('U'); if(empty($_SESSION[$name])){ $_SESSION[$name] = $time; return true; } if(($_SESSION[$name]+$ban-$time) <= 0){ unset($_SESSION[$name]); return true; } return false; } # Склонение числительных function decl($number, $titles){ $cases = array (2, 0, 1, 1, 1, 2); return $number." ".$titles[ ($number%100 > 4 && $number %100 < 20) ? 2 : $cases[min($number%10, 5)] ]; } # Проверка числа function numfl(){ $par = func_get_args(); foreach($par as $n){ if(strlen($n) > 15) return $err.'<b>Многовато</b>'; if(!is_numeric($n)) return $err.'<b>Введите число</b>'; if($n<0) return $err.'<b>Введите норм число</b>'; } return true; } # Занесение данных .bll в массив function bll($config){ preg_match_all('#{name:([\s\S]*?):value<:\[([\s\S]*?)\]:>}#', $config, $d); $data = array(); $count = count($d[1]); for($i=0; $i<$count; $i++){ $data[$d[1][$i]] = $d[2][$i]; } return $data; } # Объявление переменных function nawvar(){ global $var; $c = func_get_args(); if(empty($c[1])) return str_replace($var[0], $var[1], $c[0]); $count = count($c); for($i=0; $i<$count; $i=$i+2){ $k = '$'.$c[$i].'$'; if(in_array($k, $var[0])){ $n = array_search($k, $var[0]); $var[0][$n] = $k; $var[1][$n] = $c[$i+1]; continue; } $var[0][] = $k; $var[1][] = $c[$i+1]; } } ?> Если не затруднит подскажите как сделать чтобы можно было добавить еще картинку и текст с описанием. А то после добавления только одна ссылка. Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.