現在位置: ホーム / みらくるブログ / CentOS7+Apache+Ajax+PHP+PostgreSQLでインタラクティブなページづくり-10

CentOS7+Apache+Ajax+PHP+PostgreSQLでインタラクティブなページづくり-10

ログインスクリプトを、ZendSkeletonApplication-master でつくる、最初の設定を実行してみます。

こんにちは、ニックネーム たいちょう です。

第10日目ですね。

前回までは、https でトップページが出るように環境を整えたのでした。

ところで、ログイン画面が出てきていましたけど、これは私が作ったものです。
ここで、この画面で、ログイン名 パスワードに、admin admin と入れると、次の画面に飛ぶように作っています。
そして、ログアウトをクリックすると、元のログイン画面に戻ります。

たったこれだけですが、これは ZendSkeletonApplication-master の機能だけでは足りません。作り込みが必要になります。
何が必要でしょうか。

ZendSkeletonApplication-master は、MVC を利用しています。
私は、Model を PostgreSQL, View を htmlとjQuery, Control を PHP スクリプトとしました。

今、ログイン画面の話です。
ここで、ログインパ名、パスワードのハッシュ値をデータベースのテーブルに格納しています。
そして、https プロトコル経由で送られてきた値と照合して、合致すれば、オブジェクトを作成します。そのオブジェクトが存在していれば、ログイン画面に飛ばす、という仕組みです。

ログアウト時には、そのオブジェクトを破棄します。
そのオブジェクトが存在していなければ、ログイン画面に飛ばされます。
そのような仕組みになっています。
世の中に存在するログインスクリプトとは、このような仕組みです。

今日は、そこのところをZendSkeletonApplication-master でつくる、最初のところをやります。

作ったあとは、画面を便利に作り込んでいけば、それなりに便利になります。例えば、パスワードを変更するとか。
今は、そこまでは作り込んでいません。

ちなみに、パスワードはデータベーステーブルにそのまま格納してはいけません。
管理者自身も、パスワードを知ってはいけないからです。

さて、ZendSkeletonApplication-master では、どのような流れでプログラムを作成していけはいいのでしょうか。
apache の設定を思い出します。

# cat /etc/httpd/conf/httpd.conf | more
#DocumentRoot "/var/www/html"
<IfModule dir_module>
    #DirectoryIndex index.html
    DirectoryIndex index.html index.php
</IfModule>
# cat /etc/httpd/conf.d/ssl.conf | more
<VirtualHoat _default_:443>
# General setup for the virtual host,inherited from global configuration
#DocumentRoot "/var/www/html"
DocumentRoot /var/www/ZendSkeletonApplication-master/public
ServerName wwww.matsue-lab-test.co.jp:443
...

DocumentRoot を、
/var/www/ZendSkeletonApplication-master/public

にしていました。

じゃ、そこのところを確認します。

# cd /var/www/ZendSkeletonApplication-master/public
# ls
css fonts img index.php js

https://www.matsue-lab-test.co.jp
にアクセスすると、
/var/www/ZendSkeletonApplication-master/public/index.php
が読み込まれる、という算段です。

では、index.php を見てみます。

...
// Setup autoloading
require 'init_autoloader.php';

// Run the application!
Zend\Mvc\Application::init(require 'config/application.config.php')->run();

ここでは、ZendFramework を読み込んでいます。
そして、config/application.config.php で、モジュールを読み込んでいます。
ここで、モジュール名を、mlcdb とします。config/application.config.php の記述は次のようになります。

return array(
    // This should be an array of module namespaces used in the application.
    'modules' => array(
       //'Application',
        'mlcdb',
    ),

次に、読み込まれるのは、config/autoload/global.php 及び local.php です。

config/autoload/global.php に、データベース名を記述します。

...
return array(
    'db' => array(
        'driver' => 'Pdo',
        'dsn' => 'pgsql:dbname=mlcdb;host=localhost',
   ),
...

config/autoload/loacl.php に、データベースのユーザ名を記述します。

return array(
    'db' => array(
        'username' => 'postgres',
        'password' => '',
    ),
);

上記のように、データベースをPostgreSQL, データベース名を mlcdb としたので、
PostgreSQL上で実際にデータベース及びパスワードを格納するテーブルを作成しておきます。

# su - postgres
$ createdb mlcdb
$ psql mlcdb
mlcdb=# create table password(login_name varchar(32) primary key, password varchar(60) not null);

ここで、password カラムは、ぴったり60バイトで作ります。
生の値が入ることはありません。管理者もパスワードを知ってはいけないからです。
その仕組みは後でやります。今は、箱だけを作ります。
確認します。

mlcdb=# \d password
        テーブル "public.password"
      列     |           型         |  修飾語
 -------------+----------------------+-------------
 login_name  |character varying(32) | not null
 password    |character varying(60) | not null
インデックス:
    "password_pkey" PRIMARY KEY, btree (login_name)

できていますね。

mlcdb=# \q

さて、これから必要なファイル群を作成していきます。
完成すると、ログインすると次のような画面が出る様にします。


でも今日はここまでにしておきます。お疲れさまでした、第10日目の終了です。
ニックネーム たいちょう でした。

次回をお楽しみに。

 

タグ: