welcartが動いているWPサイトからcookieを共有する

やりたいこと:welcartで運用しているWPサイトAでログインした際にWPサイトBにログインのステータスを表示させたい

1) サイトA site-a.domain.com が動いているサーバーでディレクトリの設定をする
apache2.conf

<Directory /var/www/directory >
Header set Access-Control-Allow-Origin "https://site-b.domain.com" // サイトBでcookieを受け取ることを許可する
Header set Access-Control-Allow-Credentials true
</Directory>

2) サイトAで渡したい情報をcookieへセットします。
functions.php
add_action( 'wp_headers', 'hoge');
function hoge() {
if (usces_is_login()){
$site-a-user-name = usces_the_member_name('return'); // ←welcartのログインユーザー名を取得
}
if (!isset($_COOKIE["site-a-user"])){
setcookie("site-a-user",$site-a-user-name, time() + 86400, "/", "site-b.domain.com"); // ←cookieをセットする時にこのcookieを参照できるサイトを指定する
}
}

setcookie関数は他の出力よりも前に処理される必要があるとのことなのでwp_headersへフックします
・5つ目のパラメータがcookieを使用できるドメインです

3) サイトB site-b.domain.com でcookieを取得する
function.phpfunction getcookie() {
$site-a-user = $_COOKIE['site-a-user'];
return $loginUser;}

・サイトBからは $_COOKIE でアクセスできます。

RHEL4のためのrpmライブラリ

環境 : RHEL4ES(x86_64) apache2.0 php4.3.9

PHPのインストール時にphp<-mbstringとphp-gdを入れてなかったみたいでいろいろ滞っている。

yumコマンドで追加インストールを試みるもうまく行かず。
http://mt.hiroyukiarai.jp/mt-tb.cgi/20

yum install php-mbstring

RHELではyumではなくてrpmでパッケージ管理するとのこと。apt-getでももちろんない。知らんかった。。。
なのでrpmファイルをダウンロードしてきてインストールします↓↓
まずは現在インストールされているphpのモジュールのお問い合わせをします。

rpm -qa | grep php
  • qaは
  • q query 問いあわせ
  • a 全てのインストール済みパッケージの問い合わせ

php 4.3.9-3.22.9

とか出てくるので、
php-mbstring-4.3.9-3.22.9.x86_64.rpm
を探せば良いみたい。

探してみると。。。

ftp://zid-lux1.uibk.ac.at/pub/dist/centos/4/updates/x86_64/RPMS/
http://ftp.yz.yamagata-u.ac.jp/pub/linux/scientific/4x/archives/obsolete/x86_64/
ftp://ftp.pbone.net/mirror/www.whiteboxlinux.org/whitebox/4/en/updates/x86_64/  ← ココに!!

以下はroot権限で。

ファイルのダウンロード

wget -v ftp://ftp.pbone.net/mirror/www.whiteboxlinux.org/whitebox/4/en/updates/x86_64/php-mbstring-4.3.9-3.22.9.x86_64.rpm
  • vはダウンロード状況を表示するオプション

rpm のインストール

rpm -ivh php-mbstring-4.3.9-3.22.9.x86_64.rpm
  • i パッケージのインストール
  • v 詳細情報を表示する。
  • h インストールの進行状況を#で表示

終わったら再起動

service httpd restart

確認してみると。。。

お〜インストールできちょるー

アクセスログを記録して解析する-1

シェルスクリプトとcronでアクセス毎の時間、url、ホスト名を日ごとに別ファイルに記録する

1)サイト内の各ページ(phpファイル)にアクセス毎にログファイル(log.dat)に記入していくよう記述する

$year = date('Y');
$month = date('m');
$day = date('d');
$hour = date('H');
$hostip = getenv("REMOTE_ADDR");
$hostname = gethostbyaddr($hostip);
$platform = get_browser(null, true);
$browser = $platform["parent"];
/*** アクセス情報を一件のレコードとする ***/
$log = $hour . "," . $item_id . "," . $hostip . "," . $hostname . "," . $browser . "\r\n";
/*** 記録するファイル名 ***/
$countfile = "log.dat";
/*** レコードを末尾へ記入 ***/
$fp = @fopen($countfile,"a");
fputs($fp, $log);
fclose($fp);
使った関数
getenv(“REMOTE_ADDR”) アクセス元のIPアドレスを取得する
gethostbyaddr IPアドレスからホスト名を取得する
get_browser(null, true) ブラウザ情報を取得する

2)毎日夜中にlog.datを[日付].datへコピーして消去する

log.datを[日付].datへコピーして内容を消去するのshellスクリプトlog_bk.shを作成します。

#!/bin/sh
fecha=`date '+%Y%m%d'`            ←日付(fecha)を取得
cp -p log.dat ${fecha}.dat    ←log.datを日付.datへコピー
cat /dev/null >log.dat      ←log.datへnullを書き込み消去

上記のスクリプトを毎日23時59分に実行するようcronを設定します。

#crontab -e

でツールを起動して/etc/crontabを編集します。
viと同じ感じで操作します。

59 23 * * * /[ディレクトリ]/log_bk.sh

と記入。
数字は左から、分、時間、日、月、週 を指定し、実行するファイル名を記入して保存。

#crontab -l

で記入した内容が表示されればOKです。

phpとcronで日毎のlog.datをデータベースへ格納する

1)log.datの中身をDBへ格納するphpファイルlog.phpを作成する

$file_name = "/hoge/log.dat";
$text = fopen($file_name,'r');
while(!(feof($text))){
$lines = fgets($text);
$_line = explode(",", $lines);
$sql = "insert into tbl_log (itm_id, log_ip, log_month, log_day, log_hour, log_year) values ('" . $_line["1"] . "', '" . $_line["2"] . "', '" . $month . "', '" . $day . "', '" . $_line["0"] . "', '" . $year . "')";
$rst = mysql_query($sql,$con)or die("no");
}
fclose($text);

使った関数
fopen ファイルを開く。’r’は読み込み専用
feof ファイルの最後かどうかをチェックする
explode(“[区切り記号]”, “[文字列]”) 文字列を区切り記号で区切って配列に格納する

2)log.phpを毎日実行させる

crontabへ記述します。

58 23 * * * /usr/bin/php /hoge/logtodb.php

phpをcronで実行させるにはcrontabへphpへのパスを指定する必要があります。
user/bin/php

which php

で調べます。

エクアドル、サリーナスのカジキマグロ

にほんブログ村 IT技術ブログ MySQLへ