Bookmarkletを作成する際の調整
bookmarklet、色々できて面白いのだが最終的に1行にまとめなければいけないのがつらい。。
ということで、notepad++では最後に以下処理。備忘録。
置換で
\n → 空白 改行削除
\t → 空白 タブ削除
Ajaxでphpからのデータを取得する方法
答えはわかれば簡単。でも意外とphp側にデータを渡す事だけ書いていて、受け取り方が書いてない。
まず、bunki.phpに、burl、jidという2つのデータを渡すときは
$.ajax({ type: 'post', url: 'bunki.php', data: { 'burl': aURL,'jid': j_id } });
ですよね。この場合、jsでの[aURL]→burl、[j_id]→jidとしてデータを渡す。
次に、bunki.php側で処理したデータはどうやって戻すかというと、、echoで吐き出すだけ。
ん?それだと一つのデータしか戻せないじゃんと。jsonとか色々あるかもだけど、一番簡単
なのは「,」区切りでデータ返せばよい。
例えば・・・
echo $honbu.",".$tokatsubu;
こんな感じで。するとデータとしては「A本部,B統括部」というデータになるわけです。
php側でechoで吐き出されたデータはそのまま"data"に戻り値としてはいるわけです。
なので、正常処理をした場合の処理"success:・・"を付け加えて
$.ajax({ type: 'post', url: '/psw/db/event/2012/if/bunki.php', data: { 'burl': aURL,'jid': j_id } ,success: function(data){ //dataをカンマで区切って配列dtに入れる。dt[0]→A本部、dt[1]→B統括部 var dt = data.split(","); // if(dt[0] == "A本部"){ if(dt[1]==""){
みたいな。
「jQuery Alert Dialogs」がIEでうまく表示されない
jQuery Alert Dialogsについてはこちらが詳しいですが・・
http://h2ham.seesaa.net/article/117267913.html
実際にコーディングを進めていき、chromeやFirefoxで問題ない!という事で
公開した後に、、IEで正常表示できていない事に気づく。。
画面の上部や下に張り付くように変なポップアップになるんです。
結論は簡単。html側のheaderの宣言が曖昧だと表示がバグる。
まー例えばこんなやつね。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
jsやcss側を散々探した後に・・上記結論にたどりつきました。。疲れた。。
countifの複数条件バージョンで結果を集計したい
超基本編になってしまいますが、、備忘録。
色々やり方はありますが、、sumproductが一番はやい。
例えば
A列 B列
-
-
-
-
-
-
- -
-
-
-
-
-
1 ○
0 ×
0 ○
1 ×
でA列が1かつB列が○を出したいなら
= sumproduct( (A2:A5=1)×(B2:B5="○") )
でさくっとでます。
同様に0の○、1の×、0の×も。
なるほど、それで配列ね。
PHPを使い、LDAPヘSSLでBIND認証が繋がらないとき(ldap_bind)
この中身で丸一日デバッグしまくり気力が限界に来てましたが。。何とかなった。
環境はPHPで、LDAPサーバへSSL(ポート636)形式でbind認証したい。
「ldap rdn」と「pass」はもらっているので、、
<?php $ldaprdn = 'cn=****,o=++++,c=--'; // ldap rdn あるいは dn $ldappass = 'password'; // パスワード $link_id = ldap_connect("ldaps://ldap.hogehoge.jp",636) or die("Could not connect to LDAP server"); $ldapbind = ldap_bind($link_id,$ldaprdn,$ldappass); // バインド結果を検証する if ($ldapbind) { echo "LDAP bind successful..."; } else { echo "LDAP bind failed..."; } ?>
で接続できるはずが・・・できない。
正確に言えばldap connectは出来るが、bind認証でエラー。
ん?そもそもrdnってユーザ名?あれ、階層みたいに書けばいいんじゃ。。
と混乱し、anonymous(匿名)にしたり色々したり。。で丸一日。。
ググりまくりたどりついたのが以下。
http://www.mail-archive.com/php-windows@lists.php.net/msg22439.html
以下流用
The client is configured in the following manner: 1) Windows 2003 Server Running IIS 2) PHP 5.0.4 installed 3) LDAP support enabled - Uncommented the php_ldap.dll extension - Copied the php_ldap.dll file into the appropriate directory - Restarted IIS Using the LDP tool, I was able to connect and bind via ports 389, 636, and 3269. Here is the code I am using to attempt the bind: <?php $host = "ldaps://server.addomain.domain.com"; $un = "jdoe"; $pw = "password"; $lc = ldap_connect($host); ldap_set_option($lc, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($lc, LDAP_OPT_REFERRALS, 0); $lb = ldap_bind($lc, $un, $pw); ldap_close($lc); ?>
結局、PHPのiniファイルでphp_ldap.dllをコメントアウトしてる?ってところで
ひえー!そういえば。と確認したら案の定。。。。
まさか、、と思い実行したらbind認証できた!
ちなみに文中にある set optionは必須です。つまりプログラムとして正解は
<?php $ldaprdn = 'cn=****,o=++++,c=--'; // ldap rdn あるいは dn $ldappass = 'password'; // パスワード $link_id = ldap_connect("ldaps://ldap.hogehoge.jp",636) or die("Could not connect to LDAP server"); ldap_set_option($link_id, LDAP_OPT_PROTOCOL_VERSION, 3) or die("couldn't set protocol version..."); ldap_set_option($link_id, LDAP_OPT_REFERRALS, 0) or die("couldn't set referrals..."); $ldapbind = ldap_bind($link_id,$ldaprdn,$ldappass); // バインド結果を検証する if ($ldapbind) { echo "LDAP bind successful..."; } else { echo "LDAP bind failed..."; } ?>
という事に。おおおおお!英語サイト、やはり毛嫌いせずみねば。
OSSのヒントは日本語だけでは限界ありますね。。