Часть 1: jQuery-> MySQL-> jQuery-> HTML

Я прочитал все возможные решения, и все в порядке, если вы помните, чтобы подключиться к базе данных, прежде чем предоставить вещи;) В любом случае, спасибо всем остальным решениям !!!

user@server:~$ sudo su - postgres

create psql user:

postgres@server:~$ createuser --interactive 
Enter name of role to add: readonly
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

запустите psql cli и установите пароль для созданного пользователя:

postgres@server:~$ psql
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1), server 9.5.14)
Type "help" for help.

postgres=# alter user readonly with password 'readonly';
ALTER ROLE

подключитесь к целевой базе данных:

postgres=# \c target_database 
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1), server 9.5.14)
You are now connected to database "target_database" as user "postgres".

предоставьте все необходимые привилегии:

target_database=# GRANT CONNECT ON DATABASE target_database TO readonly;
GRANT

target_database=# GRANT USAGE ON SCHEMA public TO readonly ;
GRANT

target_database=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly ;
GRANT

изменить привилегии по умолчанию для целей db public shema:

target_database=# ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
ALTER DEFAULT PRIVILEGES
5
задан Steven 22 June 2009 в 11:39
поделиться

2 ответа

Единственное, что я бы изменил, - это jquery_getset_data.php . Я бы использовал оператор switch вместо многих операторов if. Метод jQuery $ .post подходит для того, что вы делаете, говоря со сценарием, который влияет на базу данных (удаляет / обновляет / и т. д.), используя один из методов GET ajax ($ .load или $ .get), нарушающий спецификацию HTTP.

1
ответ дан 15 December 2019 в 01:09
поделиться

Чтобы уменьшить jquery_getset_data.php, я бы использовал шаблоны проектирования ООП, чтобы избежать переключателей и операторов if.

class ICommand
{
     public:
          function execute( );
};

class CommandGetItemA
{
     public:
           function execute( )
           {
               //do some staff here
           };
};

а затем:

CommandsMap['getItemA'] = new CommandGetItemA( );
CommandsMap['setItemA'] = new CommandGetItemB( );
....

CommandsMap[ $_POST['instance']].execute( );

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

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

.click(function() {
      window[instance]( this);   
});

Там "instance" - это имя функции , или вы можете обновить или добавить его последнее, чтобы оно стало именем функции;

3
ответ дан 15 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

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