• Как правильно выносить "важные" файлы за пределы корня сайта (PHP)?

    @m-haritonov
    Вынесение за пределы корня сайта это частный случай правила "запретить доступ к системным файлам из браузера".

    Например, в ядре находится скрипт "add-user.php", в котором не осуществляется проверка прав доступа (т.к. такая проверка осуществляется в файле index.php, через который должны вызываться все другие скрипты с помощью PHP инструкции "include").

    Соответственно, оставлять доступ к этому скрипту напрямую из браузера нельзя (т.к. в таком случае злоумышленник сможет воспользоваться уязвимостью; особенно, если скрипт открытый и файлы ядра всем известны).

    Поэтому в папке со скриптами ядра создают специальный файл, указывающий веб-серверу, что напрямую предоставлять доступ к файлам в папке нельзя (в случае веб-сервера apache, это файл ".htaccess" с содержимым "deny from all") или вообще выносят файлы ядра за пределы той папки, файлы из которой доступны браузеру напрямую. Второй способ (вынесение файлов за пределы) считается более надёжным.
    Ответ написан
    Комментировать
  • Как реализовать добавление значений в текстовое поле через ссылку?

    mindnomind
    @mindnomind
    если по-быстрому:
    <html>
    <head>
    	<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    	<script>
    			function ans (a) {
    			var id = $(a).attr('data-id');
    			var username = $(a).attr('data-username');
    			$('#answer').val(id+username)
    			}
    	</script>
    </head>
    <body>
    	<a href="#" data-id="<id>" data-username="<username>" onclick="ans(this);">Ответить</a>
    	<textarea id="answer"></textarea>
    </body>
    </html>


    Собственно средствами php выводите в data-id и data-username айдишник и юзернейм пользователя
    Ответ написан
    6 комментариев
  • Как реализовать добавление значений в текстовое поле через ссылку?

    animhotep
    @animhotep
    через php повесьте на ссылку нужные значения через data-id и data-username
    по клику и забирайте и вставляйте куда нужно
    api.jquery.com/data
    Ответ написан
    Комментировать
  • Как можно проверить онлайн ли человек на моем сайте

    ghaiklor
    @ghaiklor
    NodeJS TechLead
    Используйте сессию и timeout. Если по истечении определенного времени человек не совершал никаких действий - оффлайн. Если ходит по ссылкам, то записываем флаг в $_SESSION, мол онлайн. Если не ошибаюсь, раньше нужно было что-то записать в сессию, чтобы сбросить таймаут.
    Само собой в базе можете тоже пометку делать, мол человек залогинился\вышел.
    Ответ написан
    1 комментарий
  • Реализовать класс на C++, матрицы

    #include <stdexcept>
    
    using namespace std;
    
    class Matrix
    {
    protected:
    	double *matrix;
    	unsigned size_x, size_y;
    	
    public:
    	Matrix()
    	{
    		matrix = NULL;
    		size_x = size_y = 0;
    	}
    	
    	Matrix(unsigned sz_x, unsigned sz_y)
    	{
    		matrix = new double[sz_x * sz_y];
                                size_x = sz_x; size_y = sz_y;
    	}
    	
    	/** Во всех операциях, где участвуют две матрицы нужно проверять их совместимость по размеру **/
    	
    	Matrix& operator+(Matrix &b)
    	{
    		
    	}
    	
    	Matrix& operator-(Matrix &b)
    	{
    		
    	}
    	
    	Matrix& operator*(Matrix &b)
    	{
    		
    	}
    	
    	double* operator[](unsigned index)
    	{
    		if(index > sz_y)
    			throw out_of_range("Index is out of range");
    		
    		return &matrix[index * sz_x];
    	}
    	
    	Matrix& transpose()
    	{
    	
    	}
    	
    	Matrix& reverse()
    	{
    	
    	}
    };


    По поводу доступа к элементам - оператор [] возвращает строку матрицы, т.е. при доступе к элементу матрицы - my_matrix[<номер_строки>][<номер_столбца>], первые скобки возвращают кусок массива, который начинается с необходимой строки (здесь индекс контролируем), а вторые - собственно элемент (здесь уже индекс неконтролируем). Если нужен полный контроль - тогда двойной массив и функция double get(unsigned i, unsigned j) {}. Если это не так важно, то можно так, как указано.
    Ответ написан
  • Как изменить вид url сайта php?

    @m-haritonov
    Вообще, эта задача из двух частей:
    1. Получение URL адреса.
    2. Вывод HTML страницы с правильными URL адресами.

    Пример.

    Код для mod-rewrite, перенаправляющий все запросы в файл content.php:
    RewriteEngine on
    RewriteRule .* content.php


    Файл content.php:
    <?php
    // Эту часть кода можно реализовать и через mod-rewrite
    $parts = explode('/', substr($_SERVER['REQUEST_URI'], 0, strpos($_SERVER['REQUEST_URI'], '?')));
    $_GET['page'] = $parts[2];
    $_GET['id'] = $parts[3];
    ?>
    <html>
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    	<title></title>
    </head>
    <body>
    	<?php /*
    	А код, отвечающий за то, ссылки на какие URL адреса будут в сгенерированной HTML странице, нужно размещать именно в PHP скрипте.
    
    	Либо использовать какой-нибудь модуль apache (например, mod_ext_filter), который будет заменять ссылки в отдаваемой пользователю HTML странице на нужные (а в PHP скрипте выводить ссылки вида "?page=news&id=5").
    	*/ ?>
    	<ul>
    		<li><a href="/page/<?=htmlspecialchars($_GET['page'])?>/<?=htmlspecialchars($_GET['id'])?>">Ссылка на текущую страницу</a></li>
    		<li><a href="/page/news/10">Ссылка на новость номер 10</a></li>
    	</ul>
    </body>
    </html>
    Ответ написан
    Комментировать
  • Функция с переменным числом параметров

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    int *p=&k;//настроили указатель на параметр k
    ...
    s+=*(++p);

    Вот за такую х..ю надо лишать права преподавания. Используйте va_list/va_start/va_arg/va_end, потому что это единственный стандартный способ доступа к аргументам, переданным через многоточие.
    Ответ написан
    Комментировать
  • Где найти вот такой редактор PHP на WIN

    ftp13
    @ftp13
    Так же можно посоветовать PhpStorm, лично мне он очень понравился
    Ответ написан
    1 комментарий
  • Как пользоваться трассировкой в xCode?

    morozovdenis
    @morozovdenis
    если вы имеете ввиду это - ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D1%81%D1%...

    то всё очень просто: нажмите на номер строчки слева от кода, там появится синяя стрелка - это breakpoint. запустите программу на выполнение и доведите программу или дождитесь когда программа дойдёт до этого места. после чего программа остановит выполнение кода в указанном месте и вы сможете видеть значения переменных в дебагере, а слева стек вызовов. над панелью где показаны текущее переменные есть несколько кнопок:

    кнопка похожая на play - продолжить выполнение программы(если на её пути встретится очередной breakpoint, то программа опять остановится)

    изгибающаяся стрелка над горизонтальной палочкой - перейти на следующую строку(программа выполнит строчку когда и не продолжит выполнение)

    стрелка вниз указывающая в палку - войдёт в функцию/метод находящуюся на текущей строчке выполняемой строчке кода
    Ответ написан
    1 комментарий