• Как заменить переменные внутри класса через перезапись файла?

    @SidVisceos
    Ваш подход мне в принципе не нравится. Я бы подумал что с сериализацией переменной перед сохранением. Вдруг в переменной передастся что то типа:“ '; rmdir(../..);”
    Ответ написан
    3 комментария
  • Есть ли список распространённых и общепринятых слов для именования переменных в PHP?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Нет, словаря нету. просто используются подходящие по смыслу английские слова.
    Собственно, и приведенный вами список для HTML - это именно что словарь. В смысле такой очень смешной англо-русский словарик. В котором приведены не какие-то особые "термины", а просто переводы русских слов на английский язык.

    Так что в целом можно сформулировать правило, что используется одно или несколько английских слов, подходящих по смыслу.
    С одним уточнением: в общем случае в качестве переменной используется подробное описание того, что в ней лежит. Но для очень часто используемых переменных обычно делается исключение, потому что стройные ряды какого-нибудь $userSelectQueryResult выглядят задротством.

    И в ваших примерах для PHP тоже просто переводы. Причем не очень удачные.
    link - звено - не слишком подходит по смыслу, и почти не используется.
    connect - это глагол, а в качестве имен переменных обычно используются существительные. connection подойдет лучше, но совсем длинно.
    con - хоть и является сокращением от connection, само по себе означает жульничество. Тоже так себе слово. Поэтому если уж сокращают, то обычно до conn.
    Но само по себе "соединение" малоинформативно. Соединение с чем?
    Поэтому я обычно рекомендую писать $db - сокращение от database. Тут и коротко, и сразу понятно, о чем речь.

    Причем если речь идет об объектах, то всегда можно использовать имя класса в качестве имени объекта.
    Например, если вы используете mysqli, то и называйте переменную $mysqli.
    Если используете PDO, то называйте переменную $pdo.

    $result - подходящее имя, от объекта mysqli_result.
    $response обычно употребляется в контексте НТТР., для базы данных не очень подходит.

    Причем от использования $result в коде надо уходить. Это промежуточная переменная, которая сама по себе вам не нужна, а требуется для получения реального результата запроса. Ну так вы вполне в состоянии написать функцию, которая сразу возвращает нужный результат, без колупания в промежуточных результатах.
    $user = db_get_row($mysqli, "SELECT * FROM users WHERE email=?", [$email]);

    и никаких мусорных $result, не говоря уже о том что кода в 5 раз меньше
    Ответ написан
    Комментировать
  • Как сделать множественную автозамену в буферизации вывода на PHP?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    $_buf = array(
      "LINK.USLUGI" => "/page/uslugi",
      "LINK.CONTACT" => "/contact",
      "EMAIL" => "email@domain.zone",
      "TG.CANNEL" => "https://t.me/cannel",
      "TG.PERS" => "https://t.me/",
      "VK.PERS" => "https://vk.com/id",
      "VK.GROUP" => "https://vk.com/group"
    );
    
    $buffer = ob_get_contents();
    foreach($_buf as $k => $v)
    {
        $buffer = str_replace("{{ {$k} }}", $v, $buffer);
    }
    
    ob_end_clean();
    echo $buffer;


    Так не пробовали?
    Ответ написан
    1 комментарий
  • Как реализовать шанс выпадения того или иного?

    xpert13
    @xpert13
    Full Stack Developer
    <?php
    
    function numberOfDecimals($value)
    {
        if ((int)$value == $value)
        {
            return 0;
        }
        else if (! is_numeric($value))
        {
            // throw new Exception('numberOfDecimals: ' . $value . ' is not a number!');
            return false;
        }
    
        return strlen($value) - strrpos($value, '.') - 1;
    }
    
    function roulette($items)
    {
    	$sumOfPercents = 0;
    	foreach($items as $itemsPercent)
    	{
    		$sumOfPercents += $itemsPercent;
    	}
    
    	$decimals = numberOfDecimals($sumOfPercents);
    	$multiplier = 1;
    	for ($i=0; $i < $decimals; $i++) 
    	{ 
    		$multiplier *= 10;
    	}
    
        $sumOfPercents *= $multiplier;
    	$rand = rand(1, $sumOfPercents);
    	//echo "max percent = {$sumOfPercents}\n";
    	//echo "rand = $rand\n";
    	
    	$rangeStart = 1;
    	foreach($items as $itemKey => $itemsPercent)
    	{
    		$rangeFinish = $rangeStart + ($itemsPercent * $multiplier);
    		//echo "$itemKey in [$rangeStart, $rangeFinish]\n";
    		if($rand >= $rangeStart && $rand <= $rangeFinish)
    		{
    			return $itemKey;
    		}
    
    		$rangeStart = $rangeFinish + 1;
    	}
    
    }
    
    
    $items = array('item-1' => 0.25, 'item-2' => 0.5, 'item-3' => 5, 'item-4' => 4.25333);
    echo roulette($items);
    Ответ написан
    4 комментария
  • Помогите найти пост про генерацию 2D мира на canvas

    Lerg
    @Lerg
    Defold, Corona, Lua, GameDev
    Вот она!
    savepearlharbor.com/?p=190458

    Нашёл через пещеру. А автор simbiod переведён в read-only за что-то.
    Ответ написан
    2 комментария
  • Как узнать класс из блока ответа для sweetAlert?

    HalfBloodPrince
    @HalfBloodPrince
    Front-End Developer
    Эм, если я правильно понял вопрос:

    <script>
        var error = document.querySelector('#result');
        if (error.querySelector('.success, .error') != null) {
        
        var type = error.querySelector('.success, .error').className;
        
        console.log(type);
        
        //$('#error').css("opacity","1").css("z-index","100000");
        
     swal({
     position: 'center',
     type: type, 
     title: '<?php if ($this->error) echo $this->error; ?>',
     showConfirmButton: false,
     timer: 2500
    })
    </script>
    Ответ написан
    Комментировать
  • Как массив php запихнуть в Chart.js?

    @Mysterion
    $de_donat = new \app\models\donat();
    $dechart = $de_donat->getUserDonat($this->usid, 5, 5);
    foreach($dechart as $v) {
        $data[] = $v->sum;
    }
    echo json_encode($data)."<br>";

    А лучше сразу из базы выбирать только sum колонку и отдавать без foreach.
    Ответ написан
    1 комментарий
  • Разговаривал по телефону, через пару дней вижу рекламу Вконтакте про то о чем говорил, Как так?

    Sanes
    @Sanes
    Может вы не только говорили, а еще и искали автошколы. Никто вас не слушает, не слушайте параноиков и пораженцев.
    Ответ написан
    25 комментариев
  • Таймер countdown почему обновляет счет?

    0xD34F
    @0xD34F Куратор тега JavaScript
    А вы знаете, что такое new Date(2017, 0, 1)? Это первое января текущего года. То есть, условие (new Date()) > ts всегда оказывается истинным, и... ну да, выставляется дата, на 27 дней больше текущей. Ничего удивительного, что у вас постоянно происходит "обновление счета". Вы уж разберитесь, к какому моменту времени надо делать обратный отсчёт.
    Ответ написан
    Комментировать
  • Как сократить js код?

    Stalker_RED
    @Stalker_RED
    Вместо
    var $data;
        $data = $('#mlog').serialize();

    можно же сразу
    var $data = $('#mlog').serialize();
    Более того, можно его перенести еще не несколько строк ниже, туда где data:

    .removeClass("hidden_toast").addClass("visible_toast");
    скорее всего это можно переписать так, чтобы добавлять/убирать один класс, но не трогать второй.
    Из .toast_visible перенести всё в toast-container а .hidden убирать при необходимости.

    Там, где два раза setTimeout можно воспользоваться .queue()

    Получится примерно так:
    $('#Login').click(function(e) {
        e.preventDefault();
        $.ajax({
          url: "/ajax/manager.php?p=1",
          type: 'post',
          data: $('#mlog').serialize(),
          success: function(result) {
            $('#hum').html(result);
            $("#toast-container")
                .removeClass("hidden")
                .delay(3000)
                .fadeOut(500, function(){ // on complete
                    $("#hum").html('');
                });
            }
        });
    })
    Ответ написан
    Комментировать
  • Проверка пароля регулярным выражением?

    dmeroff
    @dmeroff
    Вы меня, конечно, извините, но зачем ограничивать пользователя в выборе пароля? Зачем ограничивать длину пароля сверху? Зачем вырезать спецсимволы из его пароля, если он все равно будет хэширован (вы ведь хэшируете пароль, а не храните его plain текстом?)? Просто ограничьте минимальную длину пароля символами шестью.

    P.S. И вообще как же меня выводят из себя всякие ограничения для пароля, типа: введите одну цифру, одну букву, одну букву в верхнем регистре, один спецсимвол, один китайский иероглиф. Для людей, которые делают такие формы, в аду, наверное, есть отдельный котел.
    Ответ написан
    1 комментарий
  • Как сократить код?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Логика не понятна, но код можно упростить так:
    var tRish = "tits_rish_a1 tits_rish_a2 tits_rish_a3";
    var tRishClasses = tRish.split(' ').map(e=>'.' + e).join(', '); // список классов .tits_rish_a1, .tits_rish...
    var tClick = "#tits_click_a1, #tits_click_a2, #tits_click_a3";
    $(function() {
    	
    	function onClick(e) {
    		var n = (n = this.id.match(/b(\d+)/)) ? n[1] : null; // n == 1, 2 или 3
    		if(!n) return;
    		
    		$(tClick).removeClass(tRish).addClass( 'tits_rish_a' + n);
    		// $(tClick).attr('id', 'tits_click_a' + n); // id менять некошерно!
    		$(tRishClasses).attr('style', '');
    	}
    	
    	$('#b1, #b2, #b3').on('click', onClick);
    });

    Одна функция обрабатывает клики. Определяет номер из id кликнутого элемента #b2 => 2 и далее использует полученный номер для составления классов/id.
    Ответ написан
    Комментировать
  • Как написать проверку лицензии?

    NeiroNx
    @NeiroNx
    Программист
    Напишите у себя базу ключей, напишите процедуру регистрации - когда ИП+домен хостинга клиента привязывается к его ключу. При запросе на лицензию проверяете ключи и ип+домен: совпадает все хорошо, дублирующиеся Ключи к разным ИП+доменам - сервер отвечает что нет лицензии. Одну таблицу делать или несколько - это вам решать.

    Как часто проверять лицензии тоже вам решать - по моему достаточно 1 раз в день, чтобы не долбить хостинг постоянно.
    Ответ написан
    Комментировать
  • Как написать проверку лицензии?

    @IceJOKER
    Web/Android developer
    Один из способов - выдать лицензию на домен, записать у себя этот домен и в движке записать функцию, которая будет обращаться к вашему сайту для проверки, есть текущий сайт в базе или нет.
    Можно еще паучок свой написать, который будет ходить и искать сайты с вашим движком + проверять.

    Насчет последнего вопроса:
    Y2LqB8oTGJGjA6.jpg
    Ответ написан
    Комментировать
  • Мотивация для разработчика. Как мотивировать себя/команду работать продуктивно?

    Sanes
    @Sanes
    Да никак. Есть слово хочу и есть слово надо.
    Ответ написан
    Комментировать
  • Как сделать переход по вложенным в контейнер вкладкам без обновления стр?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    z-index
    Ответ написан
    Комментировать
  • Как изменить вид ссылки через .htaccess?

    @IceJOKER
    Web/Android developer
    RewriteRule ^site.php/(\d+)?$ index.php?nav=site&id=$1 [L]
    RewriteRule ^site.php/(\d+)/(\d+)$ index.php?nav=site&id=$1&rat=$2 [L]
    Ответ написан
    Комментировать
  • Как сделать выбор рандомной строки, если строки могут удаляться (т.е id не по порядку)?

    BuriK666
    @BuriK666
    Компьютерный псих
    SELECT * FROM (SELECT * FROM tablename ORDER BY id DESC LIMIT 5) AS t ORDER BY RAND() LIMIT 1;
    Ответ написан
    Комментировать
  • Как передать массив в js?

    @Oleg-v7
    PHP, js, jq, css3
    <?
    $r = array();
    $d = array();
    $query = $mysqli->query("SELECT * FROM history WHERE id2='1'");
    while ($set = $query->fetch_array()) {
      $r[] = $set['sum'];
      $d[] = '"'.date("d.m", $set['time']).'"';
      
    }
    $dt = implode(", ", $d);
    $str = implode(", ", $r);
    ?>
    var myArr = [<?=$str?>];
    var Date = [<?=$dt?>];
    Ответ написан
    Комментировать