Ответы пользователя по тегу PHP
  • Как и где лучше всего начать изучать программирование?

    FilimoniC
    @FilimoniC
    1. Опытный программист всегда лучше. Тут вам нужно взвесить готовность тратить свое время против готовности тратить свои деньги. Иногда заказать готовое выходит дешевле.

    Первым делом вам нужно поставить перед собой задачу и решить ее на языке программирования.
    Лучше брать простой и очевидный язык (например, PHP, причем без "Web-морды", то есть консольный).
    Ставьте простейшие задачи, например, постройка дерева. у вас есть MSSQL таблица
    <УникальныйНомерЗаписи><НомерЗаписиРодителя><Именование>
    Где НомерЗаписиРодителя если 0, то значит пункт является корневым
    Составьте из этого списка дерево, отобразите его в виде дерева (чтобы была понятна вложенность), сделайте веб-морду, сделайте красиво, чтобы разворачивалось по клику мышки (js), добавьте возможность добавлять и удалять пункты (и целые деревья), добавьте возможность одной записи иметь несколько родителей, добавьте поиск, забудьте про поиск и сделайте поиск на нормальном движке (например, Sphinx)

    Постепенно вы будете составлять алгоритмы и искать в интернете методы реализации их (как что-то вывести на экран, как получить данные из MSSQL, какие возможности есть у JQuery, как мне использовать это, как то, и т.д.)

    Ну и "самглавное", по началу привязывайтесь к тому, с чем планируете работать. Если вы хотите Web-Разработку, то не стоит начинать с не-web-ориентированных языков. Даже с "не-только-web-ориентированных" тоже начинать не стоит (это я про всякие asp.net и вебморды на cgi\c#)
    Ответ написан
    Комментировать
  • Не могу поменять разрешения на файл с помощью php chmod?

    FilimoniC
    @FilimoniC
    print_r(posix_getpwuid(fileowner($filename)));
    Кто Owner файла? Должен быть apache, иначе будет фейл
    Ответ написан
    Комментировать
  • Как составить сложное регулярное выражение?

    FilimoniC
    @FilimoniC
    $symMatch = '(?:/p/(?<Pvar>\d+|)|/id/(?<IDvar>[^/]+)|/q/(?<Qvar>\d+))'
    $regm = "^book/(?<Xvar>[^/]+)$($symMatch)$($symMatch)$($symMatch)(?:/|)`$"


    То есть суммарно
    ^book/(?<Xvar>[^/]+)(?:/p/(?<Pvar>\d+|)|/id/(?<IDvar>[^/]+)|/q/(?<Qvar>\d+))(?:/p/(?<Pvar>\d+|)|/id/(?<IDvar>[^/]+)|/q/(?<Qvar>\d+))(?:/p/(?<Pvar>\d+|)|/id/(?<IDvar>[^/]+)|/q/(?<Qvar>\d+))(?:/|)$


    Более кошерно, конечно, поиграть с LookAhead и LookBehind, но тут, увы, я не помогу.
    * Не матчит book/BOOK_ID_Q_noP/id/Aa12345/q/12345/p так как после P нет слешей
    * Некорректно матчит, если в строке, например, два и более одинаковых тега (P\Q\id), и не хватает одного (и более) тега. Тут LookAhead\LookBehind в помощь

    Проходит по строкам
    book/BOOK_P_ID_Q/p/12345/id/Aa12345/q/67890
    book/BOOK_Q_ID_P/q/67890/id/Aa12345/q/12345
    book/BOOK_ID_P_Q/id/Zz12345/p/12345/q/12345
    book/BOOK_noP_ID_Q/p//id/Aa12345/q/12345
    book/BOOK_ID_Q_noP/id/Aa12345/q/12345/p//

    > $Matches
    
    Name                           Value                                                                                                                                                          
    ----                           -----                                                                                                                                                          
    Qvar                           67890                                                                                                                                                          
    Pvar                           12345                                                                                                                                                          
    IDvar                          Aa12345                                                                                                                                                        
    Xvar                           BOOK_P_ID_Q                                                                                                                                                    
    0                              book/BOOK_P_ID_Q/p/12345/id/Aa12345/q/67890

    PS> PowerShell-синтаксис RegExp (именованые выделения как (?<SelectionName>) ; без выделения - (?:)

    UPD:
    А вот вариант с LookBehind-ами. Избавит от "двойных" тегов.
    $symMatch = '(?:(?<!.*/p/.*)/p/(?<Pvar>\d+|)|(?<!.*/id/.*)/id/(?<IDvar>[^/]+)|(?<!.*/q/.*)/q/(?<Qvar>\d+))'
    $regm = "^book/(?<Xvar>[^/]+)$($symMatch)$($symMatch)$($symMatch)(?:/|)`$"


    ^book/(?<Xvar>[^/]+)(?:(?<!.*/p/.*)/p/(?<Pvar>\d+|)|(?<!.*/id/.*)/id/(?<IDvar>[^/]+)|(?<!.*/q/.*)/q/(?<Qvar>\d+))(?:(?<!.*/p/.*)/p/(?<Pvar>\d+|)|(?<!.*/id/.*)/id/(?<IDvar>[^/]+)|(?<!.*/q/.*)/q/(?<Qvar>\d+))(?:(?<!.*/p/.*)/p/(?<Pvar>\d+|)|(?<!.*/id/.*)/id/(?<IDvar>[^/]+)|(?<!.*/q/.*)/q/(?<Qvar>\d+))(?:/|)$

    * LookBehind (?<= .... ); LookBehindNot (?<! ..... )
    Ответ написан
    Комментировать
  • Уникальный ключ (Алгоритм)?

    FilimoniC
    @FilimoniC
    И почему просто не использовать последовательные ключи?
    Ответ написан
  • Уникальный ключ (Алгоритм)?

    FilimoniC
    @FilimoniC
    Если ваши ключи не секретные, то просто берите таймштамп и какой-нибудь ID (например, последовательный) и кодируйте в Base62 (это Base64 без символов +-)
    Таймштамп равен 4 байта (8 байт если планируете дожить до 2038).
    Ответ написан
    Комментировать
  • Как замаскировать номер кредитной карты с помощью регулярного выражения?

    FilimoniC
    @FilimoniC
    Вы работаете в сертифицированной по PCI конторе?
    Если нет, то вы не имеете права запрашивать CVV\CVC и номер карты. Хранить карту можно в формате «Первые шесть+последние четыре», это разрешено для передачи в открытом виде.

    Раз уж так пошло, зачем вам вообще знать длину номера карты? Замените просто на «HIDDEN»
    Ответ написан
    4 комментария
  • Менеджер паролей php + https?

    FilimoniC
    @FilimoniC
    1) Читайте про ассиметричное шифрование
    2) Чем не устраивает Dropbox + KeePass?
    Ответ написан
    3 комментария