@ hop5 и @RnMss предложили использовать C ++ 11 lambdas, но если вы имеете дело с указателями, вы можете использовать их напрямую:
#include
#include
class CFoo {
public:
int m_i = 0;
void bar() {
++m_i;
}
};
int main() {
CFoo foo;
std::thread t1(&CFoo::bar, &foo);
t1.join();
std::thread t2(&CFoo::bar, &foo);
t2.join();
std::cout << foo.m_i << std::endl;
return 0;
}
выходы
2
Переписанный образец из этого ответа был бы тогда:
#include
#include
class Wrapper {
public:
void member1() {
std::cout << "i am member1" << std::endl;
}
void member2(const char *arg1, unsigned arg2) {
std::cout << "i am member2 and my first arg is (" << arg1 << ") and second arg is (" << arg2 << ")" << std::endl;
}
std::thread member1Thread() {
return std::thread(&Wrapper::member1, this);
}
std::thread member2Thread(const char *arg1, unsigned arg2) {
return std::thread(&Wrapper::member2, this, arg1, arg2);
}
};
int main() {
Wrapper *w = new Wrapper();
std::thread tw1 = w->member1Thread();
tw1.join();
std::thread tw2 = w->member2Thread("hello", 100);
tw2.join();
return 0;
}
Относительно безопасности Вы не можете доверять тому, что прибывает от клиента :
, который Это означает скрывать, кнопки хороший дизайн Пользовательского интерфейса (потому что Вы не можете использовать их, если Вы не зарегистрированы). Но это не средство защиты. Средство защиты проверяет на сервере, что посетитель зарегистрирован перед каждым действием, которое требует его.
, Если Вы не намереваетесь показать кнопки, не полезно отправить HTML и изображения к браузеру и затем скрыть их с JavaScript. Я сверился бы с PHP.
То, что мы сделали на моей работе, имеют библиотеку, обеспечивает функции, такие как проверка, если пользователь зарегистрирован. Например:
<?php
require_once 'Auth.php';
// output some html
if (isLoggedIn()) {
echo 'html for logged in user';
}
// rest of html
страницы For, которые только authenicated пользователи должны видеть, проверки контроллера, если они зарегистрированы и если не это перенаправляет их к странице входа в систему.
<?php
public function viewCustomer($customerId) {
if (!isLoggedIn())
redirectToLoginPage();
}
Все, что записал Christian Lescuyer, корректно. Заметьте, однако, что он сказал, что "Я буду" и не, "Вы должны". Выбор не настолько легок.
, В первую очередь, безопасность не является проблемой в выборе. У Вас должна быть проверка защиты на сервере при выполнении действия. То, которое код решает показать/скрыть кнопке, которая приводит к действию, не важно.
, Который оставляет нас только с одним недостатком выполнения, показывают/скрывают логику в JavaScript - HTML, отправленный пользователю, больше, чем необходимый. Это не может быть грандиозным предприятием.
Наличие показывает/скрывает, что логика в PHP действительно имеет минус, все же. Требуемый код PHP обычно суп тега . Код Akira обеспечивает хороший пример того, как он обычно делается.
Соответствующий код JavaScript, вероятно, выглядел бы примерно так:
if (logged())
{
elementSecretArea.style.display = "list-item";
}
(предполагающий, что элементы, которые могли быть скрыты, имеют display:none по умолчанию).
Этот стиль также позволяет хороший сценарий "Ajax": пользователь видит страницу секретная область, w/o, пароль исходных данных, видит секретную область все, не обновляя страницу.
Так, если у Вас уже есть сценарий, который работает, когда Ваша загрузка документа по другим причинам, я серьезно рассмотрел бы наличие, показывают/скрывают логику там.
При использовании JavaScript для сокрытия кнопок, Вы открываете дыру в системе безопасности в приложении. Злонамеренный пользователь мог или отключить JavaScript или применить некоторых собственных для обхождения безопасности.
я предлагаю использовать PHP для, принял решение или представить кнопки или нет. Я делаю это в.NET довольно часто.
необходимо быть в состоянии проверить доступ пользователя на серверной стороне каждый раз, когда они пытаются использовать ограниченную кнопку также.
В Вашем файле меню или w/e Вы помещаете:
<? require 'auth.php' ?>
<ul>
<li><a href="">Home</a></li>
<li><a href="">Products</a></li>
<? if( loggedin() ): ?><li><a href="">Secret area</a></li><? endif; ?>
</ul>
Затем на страницах, которые требуют, автор просто делает это:
<?php
require 'auth.php';
require_login();
?>
Где auth.php может содержать:
<?php
function loggedin(){
return isset( $_SESSION['loggedin'] );
}
function require_login(){
if( !loggedin() ){
header( 'Location: /login.php?referrer='.$_SERVER['REQUEST_URI'] );
exit;
}
}
?>
В основном там, где у вас есть меню в html, например, в виде списка
вы добавляете php после
последнего элемента:
<?php
if($session-logged_in) {
?>
<li>My Account</li>
<?php
}
?>