Скрипт входа со скрытыми кнопками

@ 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;
}

19
задан ɢʀᴜɴᴛ 25 June 2017 в 05:05
поделиться

6 ответов

Относительно безопасности Вы не можете доверять тому, что прибывает от клиента :

  • посетитель видит весь Ваш код (HTML и JavaScript, не PHP) и материал попытки
  • , посетитель даже не может использовать браузер; тривиально легко отправить запрос со сценарием

, который Это означает скрывать, кнопки хороший дизайн Пользовательского интерфейса (потому что Вы не можете использовать их, если Вы не зарегистрированы). Но это не средство защиты. Средство защиты проверяет на сервере, что посетитель зарегистрирован перед каждым действием, которое требует его.

, Если Вы не намереваетесь показать кнопки, не полезно отправить HTML и изображения к браузеру и затем скрыть их с JavaScript. Я сверился бы с PHP.

19
ответ дан Christian Lescuyer 25 June 2017 в 05:05
поделиться

То, что мы сделали на моей работе, имеют библиотеку, обеспечивает функции, такие как проверка, если пользователь зарегистрирован. Например:

<?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();
}
1
ответ дан grom 25 June 2017 в 05:05
поделиться

Все, что записал Christian Lescuyer, корректно. Заметьте, однако, что он сказал, что "Я буду" и не, "Вы должны". Выбор не настолько легок.

, В первую очередь, безопасность не является проблемой в выборе. У Вас должна быть проверка защиты на сервере при выполнении действия. То, которое код решает показать/скрыть кнопке, которая приводит к действию, не важно.

, Который оставляет нас только с одним недостатком выполнения, показывают/скрывают логику в JavaScript - HTML, отправленный пользователю, больше, чем необходимый. Это не может быть грандиозным предприятием.

Наличие показывает/скрывает, что логика в PHP действительно имеет минус, все же. Требуемый код PHP обычно суп тега . Код Akira обеспечивает хороший пример того, как он обычно делается.

Соответствующий код JavaScript, вероятно, выглядел бы примерно так:

if (logged())
{
    elementSecretArea.style.display = "list-item";
}

(предполагающий, что элементы, которые могли быть скрыты, имеют display:none по умолчанию).

Этот стиль также позволяет хороший сценарий "Ajax": пользователь видит страницу секретная область, w/o, пароль исходных данных, видит секретную область все, не обновляя страницу.

Так, если у Вас уже есть сценарий, который работает, когда Ваша загрузка документа по другим причинам, я серьезно рассмотрел бы наличие, показывают/скрывают логику там.

1
ответ дан Markus Safar 25 June 2017 в 05:05
поделиться

При использовании JavaScript для сокрытия кнопок, Вы открываете дыру в системе безопасности в приложении. Злонамеренный пользователь мог или отключить JavaScript или применить некоторых собственных для обхождения безопасности.

я предлагаю использовать PHP для, принял решение или представить кнопки или нет. Я делаю это в.NET довольно часто.

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

2
ответ дан EndangeredMassa 25 June 2017 в 05:05
поделиться

В Вашем файле меню или 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;
        }
    }
?>
9
ответ дан Markus Safar 25 June 2017 в 05:05
поделиться

В основном там, где у вас есть меню в html, например, в виде списка

  • Home
вы добавляете php после последнего элемента:

<?php
  if($session-logged_in) {    
?>

<li>My Account</li>

<?php  
  }
?> 
0
ответ дан 30 November 2019 в 03:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: