ФорумПрограммированиеPHP для идиотов → Может кто поможет со скриптом разобраться

Может кто поможет со скриптом разобраться

  • vahrecept

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz Янв. 22, 2016, 7:05 п.п.

    Суть вопроса такова
    Скачал один скрипт с сайта: Авто баллы на PHP для uCoz - Скрипты php для ucoz - web мастеру ucoz [ucozon.ru] (извините не реклама)
    Но не могу разобраться с одним разделом это ротатор ссылок.
    Нужно добавить два дополнительных поля.
    Прописываю их в форме после сохранения они не записываются в файл "data"
    Это форма
    [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: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><legend><b>Адрес картинки</b></legend><input style="width:100%" value="" id="urlImage" type="text"></fieldset><fieldset><legend><b>Текст объявления</b></legend><input style="width:100%" value="" id="etext" type="text"></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 'njuj ;t vjlekz
    <?php

    /** -------- 
      Ротатор ссылок
    
    &lt;div id=&quot;blk&quot;>Загрузка...&lt;/div>
    &lt;?endif?>&lt;script type=&quot;text/javascript&quot;>$(&#39;#blk&#39;).load(&#39;/php/ball/index.php?w=links&amp;t=get&#39;);&lt;/script>
    &lt;?if($USER_LOGGED_IN$)?>&lt;hr> [ &lt;a href=&quot;javascript://&quot; onclick=&quot;b_links()&quot; title=&quot;Отправить баллы&quot;>Добавить ссылку&lt;/a> ]
    &lt;script type=&quot;text/javascript&quot; src=&quot;/php/ball/index.php?w=datamod&amp;m=links&quot;>&lt;/script>&lt;?endif?>
    -------- **/
    
    if(empty($work)) exit(&#39;err&#39;); # Защита от прямого вызова
    if($_GET[&#39;t&#39;] == &#39;get&#39;){
      $data = file_get_contents($modul.&#39;data.dat&#39;);
      if(empty($data)) $data = &#39;&lt;li>&lt;b>Тут может быть ваша ссылка...&lt;/b>&lt;/li>&#39;;
      exit($data);
    }
    if($uid == 0) exit($err.&#39;&lt;b>Войдите на сайт&lt;/b>&#39;);
    if(!shield($work)) exit($err.&#39;&lt;b>Не так часто!&lt;/b>&#39;); # Защита от частых запросов
    $url = urldecode($_GET[&#39;url&#39;]);
    $txt = urldecode($_GET[&#39;txt&#39;]);
    $txt = trim(strip_tags($txt));
    $urlImage = urldecode($_GET[&#39;urlImage&#39;]);
    $etxt = urldecode($_GET[&#39;$etxt&#39;]);
    if(!preg_match(&#39;@^(http://)@&#39;, $url)) exit($err.&#39;&lt;b>Неправильная ссылка&lt;/b>&#39;);
    if(strlen($txt) > $bll[&#39;maxlen&#39;]) exit($err.&#39;&lt;b>Макс. кол-во символов &#39;.$bll[&#39;maxlen&#39;].&#39;&lt;/b>&#39;);
    $txt = htmlspecialchars($txt);
    if(empty($txt)) exit($err.&#39;&lt;b>Название пустое&lt;/b>&#39;);
    $bls = getBall($uid);
    if(empty($bls)) exit($err.&#39;&lt;b>Попробуйте позже&lt;/b>&#39;);
    $bl = get($uid) + $bls;
    if($bl &lt; $bll[&#39;price&#39;]) exit($err.&#39;&lt;b>Недостаточно баллов&lt;/b>&#39;);
    $data = &#39;&lt;table align=&quot;center&quot; border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 100%;&quot;>&lt;tbody>&lt;tr>&lt;td style=&quot;text-align: center; vertical-align: middle;&quot;>&lt;img src=&quot;&#39;.$iurlImage.&#39;&quot;>&lt;/td>&lt;td style=&quot;vertical-align: middle;&quot;>&lt;li>&lt;b>&lt;a href=&quot;&#39;.$url.&#39;&quot; target=&quot;_blank&quot;>&#39;.$txt.&#39;&lt;/a>&lt;/b>&lt;/li>&lt;/td>&lt;/tr>&lt;tr>&lt;td colspan=&quot;2&quot;>&#39;.$etxt.&#39;&lt;/td>&lt;/tr>&lt;/tbody>&lt;/table>&#39;;
    
    
    
    $s = file($modul.&#39;data.dat&#39;);
    $s[0] = $data.PHP_EOL.$s[0];
    $e = sizeof($s);
    for($c = 0; $c != $e; $c++){
      if($c >= $bll[&#39;max&#39;]-1) $s[$c] = &#39;&#39;;
    }
    $d = fopen($modul.&#39;data.dat&#39;, &#39;w&#39;);
    foreach($s as $s_) fwrite($d, $s_.&#39;&#39;);
    fclose($d);
    record($uid, 0, $bll[&#39;price&#39;]);
    exit($ok.&#39;&lt;b>Готово&lt;/b>&#39;);
    ?>
    

    Это общий файл index
    <?php
    /** -------- Модуль "Баллы пользователя"

    $___notjson = 1;
    $var = array(array(),array());
    global $var;
    $uid = ucoz_getinfo(&#39;SITEUSERID&#39;);
    header(&#39;Content-Type: text/html; charset=utf-8&#39;);
    
    $work = trim($_GET[&#39;w&#39;]); # Какую операцию провести
    if(empty($work)) exit(&#39;err&#39;);
    
    #### Конфиг
    include &#39;config.php&#39;;
    
    #### Подключаем стандартные функции
    require(&#39;function.php&#39;);
    
    
    /* ------ Спец. work */
    # Получение изменений быллов
    if($work == &#39;get&#39;) exit(get($_GET[&#39;i&#39;]));
    
    # Возможность изменять баллы админу
    if($work == &#39;change&#39;){
      if($uid != 1) exit(&#39;Нет прав доступа!&#39;);
      $r = record($_GET[&#39;i&#39;], $_GET[&#39;p&#39;], $_GET[&#39;m&#39;]);
      if($r !== true) exit($err.&#39;&lt;b>&#39;.$r.&#39;&lt;/b>&#39;);
      exit($ok.&#39;&lt;b>Готово&lt;/b>&#39;);
    }
    
    # Получение списка модулей
    # $USER_ID$, $MODUL$, $LOAD$, $ERR$, $OK$ - Доступные коды
    if($work == &#39;listmod&#39;){
      $scan = scandir(&#39;moduls&#39;);
      foreach($scan as $dir){
        $config = &#39;moduls/&#39;.$dir.&#39;/config.bll&#39;;
        if(!is_file($config) || $dir == &#39;.&#39;|| $dir == &#39;..&#39;) continue;
        $data = bll(file_get_contents($config));
        if(!$data[&#39;switch&#39;] || !$data[&#39;display&#39;]) continue;
        nawvar(&#39;USER_ID&#39;, $uid, &#39;LOAD&#39;, $load, &#39;OK&#39;, $ok, &#39;ERR&#39;, $err, &#39;MODUL&#39;, $dir);
        $decl = decl($data[&#39;price&#39;], array(&#39;балл&#39;,&#39;балла&#39;,&#39;баллов&#39;));
        echo nawvar(&#39;&lt;div class=&quot;hbl&quot;>&lt;div class=&quot;ibl&quot;>&lt;img src=&quot;&#39;.$data[&#39;img&#39;].&#39;&quot; width=&quot;32&quot; height=&quot;32&quot; alt=&quot;&quot; border=&quot;0&quot;>&lt;/div>&lt;div class=&quot;cbl&quot;>&lt;a href=&quot;javascript://&quot; onclick=&quot;b_&#39;.$dir.&#39;()&quot;>&lt;b>&#39;.$data[&#39;name&#39;].&#39;&lt;/b>&lt;/a>&lt;span class=&quot;b0&quot;> - &#39;.$decl.&#39;&lt;/span>&lt;br>&#39;.$data[&#39;message&#39;].&#39;&lt;/div>&lt;/div>&#39;);
      }
      exit;
    }
    
    
    
    # Вызов молуля из списка
    # $USER_ID$, $MODUL$, $LOAD$, $ERR$, $OK$ - Доступные коды
    if($work == &#39;datamod&#39; &amp;&amp; $_GET[&#39;m&#39;]){
      header(&#39;Content-Type: text/javascript; charset=utf-8&#39;);
      nawvar(&#39;USER_ID&#39;, $uid, &#39;LOAD&#39;, $load, &#39;OK&#39;, $ok, &#39;ERR&#39;, $err);
      if($_GET[&#39;m&#39;] == &#39;allmod&#39;){
        $scan = scandir(&#39;moduls&#39;);
        foreach($scan as $dir){
          $config = &#39;moduls/&#39;.$dir.&#39;/config.bll&#39;;
          if(!is_file($config) || $dir == &#39;.&#39;|| $dir == &#39;..&#39;) continue;
          $data = bll(file_get_contents($config));
          if(!$data[&#39;switch&#39;] || !$data[&#39;display&#39;]) continue;
          nawvar(&#39;MODUL&#39;, $dir);
          if(!$data[&#39;ajax&#39;]) $data[&#39;ajax&#39;] = &quot;align:&#39;left&#39;,autosize:1&quot;;
          echo nawvar(&quot;function b_&quot;.$dir.&quot;(){ new _uWnd(&#39;b_&quot;.$_GET[&#39;m&#39;].&quot;&#39;,&#39;&quot;.$data[&#39;name&#39;].&quot;&#39;,&quot;.$data[&#39;w_h&#39;].&quot;,{&quot;.$data[&#39;ajax&#39;].&quot;,oncontent:function(){&quot;.$data[&#39;js&#39;].&quot;}},&#39;&quot;.$data[&#39;html&#39;].&quot;&#39;);}&quot;.PHP_EOL);
        }
        exit;
      }
      $config = &#39;moduls/&#39;.$_GET[&#39;m&#39;].&#39;/config.bll&#39;;
      if(!is_file($config)) exit(&#39;&quot;config.bll&quot; не обнаружен&#39;);
      $data = bll(file_get_contents($config));
      if(!$data[&#39;switch&#39;]) exit(&#39;Модуль не активен&#39;);
      if(!$data[&#39;ajax&#39;]) $data[&#39;ajax&#39;] = &quot;align:&#39;left&#39;,autosize:1&quot;;
      nawvar(&#39;MODUL&#39;, $_GET[&#39;m&#39;]);
      echo nawvar(&quot;function b_&quot;.$_GET[&#39;m&#39;].&quot;(){ new _uWnd(&#39;b_&quot;.$_GET[&#39;m&#39;].&quot;&#39;,&#39;&quot;.$data[&#39;name&#39;].&quot;&#39;,&quot;.$data[&#39;w_h&#39;].&quot;,{&quot;.$data[&#39;ajax&#39;].&quot;,oncontent:function(){&quot;.$data[&#39;js&#39;].&quot;}},&#39;&quot;.$data[&#39;html&#39;].&quot;&#39;);}&quot;);
      exit;
    }
    /* ------ */
    
    
    # Подключаем модуль
    $modul = &#39;moduls/&#39;.$work.&#39;/&#39;;
    if(!is_file($modul.&#39;index.php&#39;)) exit(&#39;Такого мудуля не существует&#39;);
    if(!is_file($modul.&#39;config.bll&#39;)) exit(&#39;&quot;config.bll&quot; не обнаружен&#39;);
    $config = file_get_contents($modul.&#39;config.bll&#39;);
    $bll = bll($config);
    if(!$bll[&#39;switch&#39;]) exit(&#39;Модуль не активен&#39;);
    require($modul.&#39;index.php&#39;);
    
    ?>
    

    Слишком много будет
    Вот этот код добавил в форму
    <legend><b>Адрес картинки</b></legend><input style="width:100%" value="" id="urlImage" type="text"></fieldset><fieldset><legend><b>Текст объявления</b></legend><input style="width:100%" value="" id="etext" type="text"></fieldset>

    В индекс этого же модуля добавил
    $urlImage = urldecode($_GET['urlImage']);
    $etxt = urldecode($_GET['$etxt']);
    и Это
    $data = '<table align="center" border="1" cellpadding="0" cellspacing="0" style="width: 100%;"><tbody><tr><td style="text-align: center; vertical-align: middle;"><img src="'.$iurlImage.'"></td><td style="vertical-align: middle;"><li><b><a href="'.$url.'" target="_blank">'.$txt.'</a></b></li></td></tr><tr><td colspan="2">'.$etxt.'</td></tr></tbody></table>';

    Не происходит запись в файл "data"
    Подскажите что еще куда вписать, а то голову всю сломал не могу разобраться.

  • Ivan.

    Сообщения: 495 Репутация: N Группа: Адекваты

    Spritz Янв. 22, 2016, 7:09 п.п., спустя 3 минуты 19 секунд

    Ты зачем пыху поломал

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Янв. 22, 2016, 7:13 п.п., спустя 4 минуты 45 секунд

    ужасный человек

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz Янв. 23, 2016, 9:05 д.п., спустя 13 часов 51 минуту 8 секунд

    @vahrecept, к сожалению, этот форум написан на петоне, а значит он не выносит пыхапэ в таких количествах. Надо дозировать.

    ιιlllιlllι унц-унц
  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz Янв. 24, 2016, 12:09 д.п., спустя 15 часов 4 минуты 57 секунд

    Чувак, ты тратишь время совсем не на то. Попробуй yii хотя бы.

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Янв. 24, 2016, 4:18 д.п., спустя 4 часа 8 минут 30 секунд

    i am drunk again :D

    Сапожник без сапог
  • vahrecept

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz Янв. 25, 2016, 8:21 п.п., спустя 1 день 16 часов 2 минуты

    Ну тогда скажите как из этого

    $s = file($modul.'data.dat');
    $s[0] = $data.PHP_EOL.$s[0];
    $c=1;
    $out = mt_rand(1, count($s) - $c);
    $sad=$out+$c;
    for($i = $out; $i < $sad; $i++) {
    print "$s[$i]";
    }
    $d = fopen($modul.'data.dat', 'w');
    foreach($s as $s_) fwrite($d, $s_.'');
    fclose($d);
    record($uid, 0, $bll[$den_b]);
    exit($ok.'<b>Готово</b>');
    ?>
    Сделать случайные данные. т.е. сделать вывод случайной ссылки. На данный момент показывает 5 ссылок

  • Ivan.

    Сообщения: 495 Репутация: N Группа: Адекваты
  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz Янв. 26, 2016, 11:05 д.п., спустя 12 часов 11 минут 58 секунд

    @vahrecept, так у тебя уже все там есть

    
    // читаем данные из файла и кладем их построчно в массив
    $s = file($modul.'data.dat');
    
    // получаем случайное число между 0 и количеством элементов в массиве $s
    $index = rand(0, (count($s) - 1) );
    
    //выводим случайную ссылку
    echo $s[$index];
    

    если возникают такие вопросы, то надо учить язык

  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz Янв. 26, 2016, 12:22 п.п., спустя 1 час 16 минут 38 секунд

    @vahrecept, please use pastebin.net

    не всё полезно, что в swap полезло
  • vahrecept

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz Янв. 26, 2016, 4:36 п.п., спустя 4 часа 14 минут 3 секунды

    Я прекрасно понимаю что надо учить язык.
    Но дело в том что не работает (уже пробовал по всякому)
    В коде еще присутствует вот это

    if($_GET['t'] == 'get'){
    $data = file_get_contents($modul.'data.dat');
    if(empty($data)) $data = '<li><b>Тут может быть ваша ссылка...</b></li>';
    exit($data);
    }

    Вот этот код который стоит в скрипте (а который стоит выше это уже переделанный который тоже не работает).

    $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>');

    Хотя в денвере запускаешь работает без file_get_contents.
    А в скрипте убираешь совсем ничего не работает

  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz Янв. 26, 2016, 5:43 п.п., спустя 1 час 7 минут 28 секунд

    @vahrecept, сообщения об ошибках есть?

  • vahrecept

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz Янв. 26, 2016, 5:47 п.п., спустя 3 минуты 40 секунд

    Нету

    Спустя 58 сек.

    Сколько добавляешь ссылок столько и показывает

  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz Янв. 26, 2016, 10:26 п.п., спустя 4 часа 39 минут 18 секунд

    Теперь по шагам показывай отладку, что пришло из файла, какой индекс ссылки, что под ним показывается. Умеешь?

  • vahrecept

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz Янв. 27, 2016, 5:02 п.п., спустя 18 часов 35 минут 46 секунд

    Ни где ни чего не показывает, просто сколько ссылок добавляешь столько и показывает.
    Ни в какую ни хочет показывать одну случайную ссылку.
    Я думаю все таки проблема вот в этом коде

    if($_GET['t'] == 'get'){
    $data = file_get_contents($modul.'data.dat');
    if(empty($data)) $data = '<li><b>Тут может быть ваша ссылка...</b></li>';
    exit($data);
    }

    А конкретнее из за file_get_contents
    Пробовал поменять на file пишет Array

    Пробовал и так

    $s = file($modul.'data.dat');
    $c=1;
    $out = mt_rand(1, count($s) - $c);
    $sad=$out+$c;
    for($i = $out; $i < $sad; $i++) {
    print "$s[$i]";
    }
    $d = fopen($modul.'data.dat', 'a+');
    $a = $data;
    fwrite($d, $a. "r\n\");
    fclose($d);
    record($uid, 0, $bll[$den_b]);
    exit($ok.'<b>Готово</b>');

Пожалуйста, авторизуйтесь, чтобы написать комментарий!