Ответы пользователя по тегу PHP
  • Пополнение, вывод денег из личного кабинета?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    "как сделать вывод денег пользователю на карту например." Делать ничего не надо все уже есть и придумано. операции по таким картам ведутся через банковские транзакции (переводы).
    То есть для начала тебе нужен банк который будет делать переводы физических если так можно выразиться денег. я думаю Альфа-банк с их "кликом" вполне годный инструмент для начала. Для перевода нужно знать номер карты и собственно сумма перевода. При переводах между абонентами комиссии нет поэтому издержек на выводе будет минимум. так что касаясь програмной части нужно будет реализовать только механизм заявок на вывод средств для ручной обработки. Двигаясь дальше можно добавить еще 3 метода вывода денег. вебмани киви и яндекс деньги. Они тоже имеют достаточно хорошую инфраструктуру для вывода налички. ну а дальше уже прочувствовав всю систему оборота денег пытаться искать пути автоматизации обработки заявок. Вывод на пластиковые карты для начала не самый хороший выбор. Лучше подключить для начала системы которые уже умеют выводить на пластик а там смотреть по обстоятельствам.
    Ответ написан
  • Сложный запрос mysql в php. В чём ошибка?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    $qr_result = mysql_query($sql); //исправил
    or die(mysql_error());

    1. Между функцией mysql_query($sql) и or die(mysql_error()); не должно быть точки с запятой.
    2. При подключении к базе нужно передать команду с присвоением кодировки:
    mysql_query("SET NAMES UTF8") or die('Не получилось выставить кодировку');

    Попробуйте может в этом и весь подвох собственно. Если у вас нет синтаксических ошибок. либо еще каких подводных камней о которых мы не знаем.
    Ответ написан
  • Как сделать грамотное условие для запроса к БД? с JOIN?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    SELECT `table1`.`lol`, `table2`.`name`
    FROM `table1`
    LEFT JOIN `table2` ON `table2`.`id` = `table1`.`id`
    Ответ написан
  • Как вывести на сайт консоль?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Написал на вскидку по документации. Если что, думаю, разберешься.
    Если нужно прямо сразу отправлять, можешь возврат такой функции пропустить через nl2br()
    function exec_output( $cmd, $return_array = FALSE) 
    {
        $console = array();
        exec($cmd, $console);
    
        if ( ! $return_array )
        {
            return implode(PHP_EOL, $console);
        }
        else {
            return $console;
        }
    }
    Ответ написан
  • Есть ль готовые решения или плагины для онлайн чата между пользователями на сайте?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Поднимайте websocket.
    На связке "ajax + mysql + php" реализовать данный функционал технически не возможно ввиду устройства протокола HTTP.
    Ответ написан
  • На какие ПО вы пишите сайты?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    бесплатный - NetBeans. (очень нравится реформатирование кода, очень не нравится работа с кодировками) Есть под все платформы. Собственно им и пользуюсь отдавать 200 баксов за phpstorm нет желания с такой бесплатной альтернативой.
    Так же бесплатный Codelobster - в принципе не плохой в чем-то даже лучше нетбинса простой и легкий.
    Если есть деньги - PhpStorm ну если вы не одноглазый пират конечно. Пользовался лицензией в компании, впечатления положительные но вот реформат кода как-то не впечатлил.
    Часто слышу Sublime Text но он тоже платный (70 баксов) Даже не смотрел в общем.
    Notepad++ - для мазохистов, и людей которые не жалеют своего труда и времени. На нем хорошо учится а вот реально работать я бы не советовал.
    Ответ написан
  • Cannot send session cache limiter - headers already sent почему?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    смените кодировку файла на Utf-8 без BOM.
    Ответ написан
  • Как лучше организовать файловую БД?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    В вашем случае, нужен очень грамотный специалист который знает все недостатки такой организации информации.
    В частности блокировка файлов, ожидание разблокировки файла, в общем организация одновременного доступа. Если вы просто будете делать инслюд а потом что-то типа "file_put_contents()" вас могут ожидать неприятные последствия. по сути вам нужно будет написать sqlite только языком PHP.
    Ответ написан
  • Как определить успешность выполнения подфункций в классе?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Если у тебя все реально так работает то тут печаль беда а не код. если ты конечно не ссылками переменные получаешь.
    public function registerUser ( $data  ) { // Обращаем внимание $data
    
          /* от такого кода ничего не изменится
          $this->prepareData($data);
          $this->checkMail($data['email']);
          $this->checkData($data);
          */
    
          $this->createUser( $data ); // Обращаем внимание $data
        }

    я бы написал так
    public function registerUser ( $raw_data  ) 
    {
    
          $data = $this->prepareData($raw_data);
    
          if ( $this->checkMail($data['email']) && $this->checkData($data) ) 
          {
              $this->createUser( $data );
          }
          else
          {
               return FALSE;
          }
    }
    Ответ написан
  • Что за чудеса творится с исключениями php?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Ошибка != Исключение. Это 2 разные сущности.

    set_error_handler() посмотрите.

    catch(Exception $e) - создаете ошибку а ловите исключение. чтобы поймать исключение нужно его выбросить через throw

    ваш код правильнее будет выглядеть так
    try{
       $a = 1;
       $b = 0;
    
       if ($b != 0){
           echo $a/$b;
       }
       else {
           throw new Exeption('Division by zero');
       }
    } catch(Exception $e){
      echo 111;
    }
    Ответ написан
  • Стоит ли идти работать в компанию где занимаются разработкой сайтов на cms?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Если ты не уверен. иди в такую компанию верстальщиком (html/js). Хапнешь лиха зато поймешь как работать в сфере верстки, а дальше будешь уже наращивать знания в других областях. Не берись быть мастером фломастером на все руки возьми что-нибудь одно и практикуйся и оттачивай свои знания. Не забывай постоянно учится (всегда, даже через 5 лет работы). IT сфера очень динамично развивается тут если не умеешь учится, делать нечего и уже через 2 года твои знания будут частично не актуальны.
    Ответ написан
  • Можно ли использовать global в php?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    class Test
    {
        public function __construct( & $app )
        {
            $this->app = $app;
        }
    
    }
    
    $test = new Test( $app );


    Вот такой код еще куда ни шло но и он я бы сказал не очень хорош.

    Использовать global можно только в конструкторе класса чтобы присвоить внутренним полям класса глобальные значения. При условии что эти глобальные переменные не объекты, и создаются кодом который находится в большой зависимости, например в index.php на котором 5 лет группа программистов писала код. Естественно поменять такие переменные не всегда возможно (ввиду необходимости глобального рефакторинга). Либо когда это "псевдоконстанты" как я их называю, когда переменной присваивается значение и оно не меняется на протяжении всего выполнения скрипта. В любом другом случае это крайне не рекомендуется.

    Если следовать этому правилу (которое я придумал сам) то в принципе ничего страшного случится не может.
    А вообще лучше всетаки посмотреть в сторону Dependency injection.
    Ответ написан
  • Загрузил на хостинг сайт показывает это?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Если тебе нужен переводчик то тут говорится что ты допустил ошибку и у тебя в браузер уже отправлены заголовки. а следовательно у тебя не может стартовать сессия.
    output started at "/hermes/bosnaweb03b/b201/ipg.ibstorenet/index.php:59"
    Ответ написан
  • Как передать php в шаблон smarty через плагин?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    "но как передать в шаблон переменную с объектом и как построить с ней if-else никак не дойдет."
    Вы пытаетесь сделать ужасную вещь. Вот как более или менее надо.
    <?php
    require_once 'Mobile_Detect.php';
    $detect = new Mobile_Detect;
    $is_mobile = $detect->isMobile();

    И переменную $is_mobile передать в шаблон.
    Ответ написан
  • Post и Get запросы, какая между ними разница и что лучше и для каких целей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.

    Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.

    GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).

    Поэтому в контексте PHP опираясь на эту идеологию сделали следующим образом:
    1. При каждом запуске PHP по умолчанию создаются суперглобальные массивы ($_GET, $_POST).
    2. Если в строке запроса есть вопросительный знак(?). То все что после него считается параметрами GET запроса они представлены в формате 'ключ'='значение' и в качестве разделителя используется знак амперсанда (&)
    Пример:
    GET /index.php?name=Андрей&surname=Галкин
    это строка запроса, тут 2 параметра. эти параметры попадут в массив $_GET.
    3. $_POST заполняется другим способом. содержимое этого массива заполняется из "заголовков запроса". То есть из места, скрытого от глаз в явном виде. Всю рутину по созданию таких заголовков берет на себя браузер. Хотя иногда и что-то редактируется в заголовках в ручную.

    Чаще всего пост запрос используется в формах (для отправки данных).

    Например у нас есть форма для входа 2 поля логин и пароль.

    Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.

    А вот если бы мы указали методом POST то мы бы получили следующий запрос:
    POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.

    Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится "Публичные параметры", которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.

    В общем подводя итог:
    GET - это чтобы получить определенную страницу в определенном виде ( сортировка, текущая страница в блоге, строка поиска и т.п. ).
    POST - для оправки данных которые не влияют на отображение страницы, в том плане что эти данные влияют только на результат выполнения скрипта ( логины, пароли, номера кредиток, сообщения и т.п. ).

    И еще одна хорошая новость их можно комбинировать, например
    POST /index.php?page=login (login=Андрей&password=123) Думаю я уже достаточно объяснил что из этого получится и какие параметры в какой массив попадут.
    Ответ написан
  • Система бана на MySql, будет ли это работать?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    таблица users поле ban (boolean) при авторизации получаем это поле если TRUE то высылаем. на страницах к которым есть доступ у пользоателей делаем проверку что пользователь авторизировался. Забаненый пользователь не получает авторизации а следовательно находится на сайте как гость.
    Ответ написан
  • Что такое public и почему не работает функция PHP?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    class Person {
    public $isAlive = true;
    public $firstname;
    public $lastname;
    public $age;
    }

    public function __construct(){} - функция за пределами класса не может быть публичной или вообще иметь какой либо модификатор доступа.

    public значит что к этому методу могут обращаться все кому не попадя (echo $teacher->isAlive;). при любом другом модифиаторе доступа такой код вызовет ошибку.
    Ответ написан
  • Как сделать оповещение на сайте с помощью php + mysql + ajax для большого количества пользователей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Реализация просто ужасная. но если все же нужно то стоит выучить двунаправленные протоколы. через HTTP теоретически и технически ничего хорошего получится не может.

    "на сайте делается запрос аля comet, ожидает ответа, если ответа нет,
    то через 2 минуты делает новый запрос, и все до тех пор, пока цикл php не выдаст ответ."

    Бесполезная трата ресурсов. Если ничего не происходит вы в холостую гоняете циклы. Для справки каждый процесс пхп минимум требует около мегабайта. оперативной памяти (а зачастую больше) Умножте на количество клиентов и вы поймете что отдавать (на вскидку могу сказать что тут будет примерно по 1,4 мб в среднем) около 700 мегабайт оперативной памяти на холостую обработку слишком жирно.

    теперь представим что мы отказались от циклов на сервере давайте запустим цикл на клиенте? А че? просто на джава скрипте каждые 5 секунд отправляем запрос на сервер скрипт обработчик делает запрос на табличку просто на наличие записей с галочкой new. обрабатывается запрос не долго в считаные милисекунды да еще и все-го лишь каждые 5 секунд лепота... Но клиент сволочь! он вздумал средней кнопкой мыши вкладки открывать! Да еще и по 10 штук! да еще и откроет и не закроет и пойдет свою сантабарбару смотреть! Нативный ДДОС самого себя по другому.

    Как бы вы не пытались найти решение. Но самый грамотный и правильный ответ на ваш вопрос - На связке "ajax + mysql + php" реализовать данный функционал технически не возможно ввиду устройства протокола HTTP.
    Ответ написан
  • Как вывести данные в цикле из mysql?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Укажу старый добрый метод mysql для простоты. А вообще начни не с практики а с мануала php.net/manual/ прочитай минимум один раз а потом уже задавай вопросы. ну или хотябы почитай про массивы.
    $content = array();
    
    while ( $res = mysql_fetch_assoc( $query_result ) )
    {
        $content[] = $res;
    }
    
    print_r($content);
    Ответ написан
  • Проблема с cookie?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Для ответа не хватает данных. каким образом вы храните данные о авторизации? Если в сессии. то куки не исчезают, просто может протухнуть сессия. То есть первый браузер отправляет идентификатор сессии от которой уже отвязана авторизация для пользователя (либо после выполнения манипуляций с хранением авторизации старая сессия убивается вовсе).

    Собственно текущий ответ как и дальнейшие рассуждения это гадание на кофейной гуще. Дополните исходную задачу описанием механизма авторизации.
    Ответ написан