1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Занятие №1

Discussion in 'Подготовка' started by SpartakuS, Mar 14, 2011.

  1. SpartakuS Thread starter User


    Offline
    • Знаменитый
    Message Count:
    797
    Likes Received:
    82
    Gooos, норм. Давай твой окончательный код. Буду критиковать сам код.
    PS Только скобки не нужно $filename_with = ('domen_s_' . $alph);

    ---------- Сообщение добавлено в 00:06 ---------- Предыдущее сообщение было в 00:04 ----------

    San Jaro, норм. Но, есть одно но. Вот скинул ты мне этот скрипт. А я обыкновенный радиотехник и мне по образу и подобию доменов надо список транзисторов расчистить. В код я не лезу. Мне только конфиг надо настроить.
    Твой $_POST ввел меня в ступор.
    Ну и _with_ обязательно в кавычки.
  2. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Сделал без, но наверное не верно что-то:
    PHP:

        $filename_with 
    'domen_s_ . $alph'// задаваемое имя файла для с буквой
        
    $filename_without 'domen_bez_ . $alph'// задаваемое имя файла для без буквы

    Attached Files:

  3. SpartakuS Thread starter User


    Offline
    • Знаменитый
    Message Count:
    797
    Likes Received:
    82
    $filename_with = 'domen_s_' . $alph;

    ---------- Сообщение добавлено в 00:14 ---------- Предыдущее сообщение было в 00:14 ----------

    Завтра меня не будет до вечера, так что ребят, помогайте другим)
  4. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    В общем вот:
    Конфиг.пхп
    PHP:

    <?php
        $alph 
    'c'// буква, которой не должно быть
        
    $path 'Z:/home/lesson.ru/www/my_folder/'// заканчивается на слеш, указывает путь до папки, где наш файл
        
    $file "domains.txt"// а вот и сам файл
        
    $filename_with 'domen_s_'// задаваемое имя файла для с буквой
        
    $filename_without 'domen_bez_'// задаваемое имя файла для без буквы
    Рабочий файл:
    PHP:

    <?php
        
    /**
        * spartakus aka vasenin for prodomainer.ru
        */
        
    require "header.html"// однократная вставка верха шаблона

        
    include "conf.php"// подключаем файл конфигурации
        
    echo "Искомая буква: <b style='color:grey;'>\"$alph\"</b><br />"// Вывод искомой буквы
        
    echo "Путь: <b style='color:grey;'>\"$path$file\"</b><br />";  // Вывод пути до обрабатываемого файла
        
    echo "Файл доменов с буквой \"$alph\": <b style='color:grey;'>\"$filename_with.txt\"</b><br />"// Файл результатов
        
    echo "Файл доменов без буквы \"$alph\": <b style='color:grey;'>\"$filename_without.txt\"</b><br />"// Файл результатов

        
    $domains file($path $file);  //переменная равна содержимому файла путь до файла указан в скобках
        
    $domain_without = array(); // делаем переменную массивом для implode
        
    $domain_with = array(); // делаем переменную массивом для implode
        
    foreach ($domains as $domain)   // цикл перебора массива domains где значения domain
         
    {
          
    $domain explode('.'$domain);  //  делим домен на части, делитель точка
          
    $domain $domain[0];  // Берём только первую часть, т.к. 0 это первое значение, если я правильно понял это ключ
            
    if (stripos($domain$alph) === false) { // ищем в $domain нашу букву $alph, если не находим, то:
                
    $domain_without[] = $domain//...то: значит $domain_without, что такое [] я не понял
            
    } else {                                       // в пртивном слечае
                
    $domain_with[] = $domain;     // т.е. буква нашлась, значит $domain_with, что такое [] я не понял
            
    }
        }
        echo 
    "<b style='color:green;'><br />Домены с буквой \"$alph\":&nbsp;</b>";  // вывод текстовой строки для удобсва визуализации
         
    file_put_contents($path $filename_with $alph  '.txt'implode("\n"$domain_with)); // создание файла и запись в него отфильтрованных доменов, разделитель - перевод каретки

          
    echo count ($domain_with); // подсчёт доменов и вывод числа


        
    echo "<br /><b style='color:red;'>Домены без буквы \"$alph\":&nbsp;</b>"// вывод текстовой строки для удобсва визуализации
         
    file_put_contents($path $filename_without $alph  '.txt'implode("\n"$domain_without)); // создание файла и запись в него отфильтрованных доменов, разделитель - перевод каретки

          
    echo count ($domain_without); // подсчёт доменов и вывод числа


        
    require "footer.html";  // однократная вставка футера шаблона


    ---------- Сообщение добавлено в 00:19 ---------- Предыдущее сообщение было в 00:15 ----------

    И да, хотелось бы некоторой разжовки, типа "Как это работает?", думаю многим станет более понятен код. Я комментировал как мог, но сами понимаете...
    Некоторые вещи мне не понятны пока, например последнее замечание по скобкам. У меня скрипт не ругнулся и сработал со скобками.
  5. Red Rabbit Tough member


    Offline
    Message Count:
    898
    Likes Received:
    193
    $value[] - скобки обозначают что передается массив, а не строка.
  6. nikolas25 Novice member


    Offline
    Message Count:
    21
    Likes Received:
    0
    Gooos, если ты про эти скобки "$filename_with = ('domen_s_' . $alph);" то скрипт выполняется и со скобками, просто когда присваеваеш значение переменной скобки не нужны по правилам синтаксиса

    и ещё здесь у тебя не правильные коменты :
    $domain_without = array(); // делаем переменную массивом для implode
    $domain_with = array(); // делаем переменную массивом для implode

    здесь мы перестраховываемся если результат будет равен нулю, а масив создаётся в цикле foreach
  7. Red Rabbit Tough member


    Offline
    Message Count:
    898
    Likes Received:
    193
    Набросал на коленке вот такой вариант. Не проверял, но должно работать. Далеко не идеально, но легко для восприятия. Приятно, если сразу появится желание убрать недостатки, а не "о, работает - и ладно". :)

    Из очевидного
    - Код в виде каши. Никогда не стоит мешать логику кода, с визуальным представлением. В будущем от этого у вас будет только головная боль.
    - Можно искать только по имени домена.
    - Не учитываются поддомены.

    Конфиг
    PHP:
    <?
        
    $path 'C:/htdocs/temp/'// путь к папке, слеш в конце
        
    $file 'domains.txt'// имя файла
        
    $filename_with_prefix 'domains_with_'// префикс имени файла с содержанием указанной буквы
        
    $filename_without_prefix 'domains_without_'// префикс имени файла без указанной буквы
        
    $filename_suffix '.txt'// суффикс, сейчас - просто в виде расширения файла
    сам файл
    PHP:
    <?php
        
    /**
        * spartakus aka vaseninm for prodomainer.ru
        */
        
    include 'header.html';
        require 
    'config.php';

          if (!isset(
    $_GET['alph'])) { // если искомая строка не передана, выводим форму запроса...
        
    echo "<form action = \"?alph=\" method=get>
           Ищем: <input type=\"text\" name=\"alph\"/><br />
        <input type=\"submit\"/>
        </form>\n"
    ;
        } else { 
    // ... в противном случае считаем что строка передана и пытаемся её обработать
        
    $alph $_GET['alph']; // для удобства присваиваем более короткое имя переменной
        
    $filename_with $filename_with_prefix $alph $filename_suffix// определяем имя файла сразу, чтобы потом не загромождать код
        
    $filename_without $filename_without_prefix $alph $filename_suffix// та же фигня

        
    echo "Искомая буква: <b style='color:grey;'>\"$alph\"</b><br />"// Тут вроде и так всё понятно
        
    echo "Путь: <b style='color:grey;'>\"$path$file\"</b><br />";
        echo 
    "Файл доменов с буквой \"$alph\": <b style='color:grey;'>\"$filename_with\"</b><br />";
        echo 
    "Файл доменов без буквы \"$alph\": <b style='color:grey;'>\"$filename_without\"</b><br />";

        
    $domains file($path $file); // после этого $domains будет содержать в памяти файл в виде массива указанный в конфиге как $file, по пути $path. Точка обозначет объединение строк.
        
    $domain_without = array(); // явно обзначаем что переменная $domains_without является массивом.
        
    $domain_with = array(); // то же самое
           
    foreach ($domains as $domain// начало цикла
         
    {
          
    $domain explode('.'$domain); // делим домен на части используя точку как разделитель
          
    $domain $domain[0]; // берем первую часть, это - имя домена. В данном случае работает только с домена первого уровня.
            
    if (stripos($domain$alph) === false) { // ищем в $domain[0] то, что совпадает с с условием поиска. В данном случае - переменная $alph.
                
    $domain_without[] = $domain
            } else {
                
    $domain_with[] = $domain;
            }
    }
        echo 
    "<b style='color:green;'><br />Домены с буквой \"$alph\":&nbsp;</b>";
        echo 
    count($domain_with);
         
    file_put_contents($path $filename_withimplode("\n"$domain_with)); // создаем файл и пишем в него данные с $filename_with, разделяем переводом строки

        
    echo "<br /><b style='color:red;'>Домены без буквы \"$alph\":&nbsp;</b>";
        echo 
    count($domain_without);
         
    file_put_contents($path $filename_withoutimplode("\n"$domain_without)); // создаем файл и пишем в него данные с $filename_without, разделяем переводом строки

        
    $back "http://".$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']; // получаем полный адрес к скрипту для ссылки "Назад"
        
    echo "<br /><a href=\"$back\">Вернуться</a>\n";
    }
        include 
    'footer.html';
    upd. Точнее не написал, а модифицировал последний вариант Gooos. И добавил\переделал комментарии.
    Различия -
    - Форма ввода искомой буквы.
    - Отдельная страница вывода результатов.
    - Ссылка "Назад", заодно можно почитать это и это тоже. Тогда будет понятно как оно работает. =)
  8. San Jaro User


    Offline
    Message Count:
    16
    Likes Received:
    0
    Gooos, личку посмотри
  9. mafiarus User


    Offline
    • Знаменитый
    Message Count:
    305
    Likes Received:
    71
    Вопрос такой)
    Как сделать кнопку чтобы при нажатие в базе например xxx менялась число 0 на 1 ????
  10. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Почему именно так? Для меня логичнее сначала файл, а потом подсчёт в нём.

Share This Page

All rights reserved SocEngine.ru ©