LDAP->Unix に変換する方法については多くの例がありますが、Unix->LDAP のように元に戻すことはできません..
LDAP-> Unix用に私が持っているものは次のとおりです:
LDAP タイムスタンプを Unix タイムスタンプに変換する方法
http://www.morecavalier.com/index.php?who=Apps%2FLDAP+timestamp+converter
function LDAPtoUnix($t) {
$secsAfterADepoch = $t / (100000000);
$AD2Unix = ( (1970-1601) * 365 -3 + round((1970-1601)/4) ) * 86400;
return intval($secsAfterADepoch-$AD2Unix);
}
私は正確であるべきだと思います。しかし、私は数学を逆転させるために私のちっぽけな小さな脳をひねっていますが、それを理解することはできません..異なるエポック間の秒単位の差を計算し、それらを特定の時間パラメータに単純に加算/減算するだけで頭が沸騰していますか?
タイムスタンプを逆にする方法について誰かが光を当てることができますか?
参照: http://msdn.microsoft.com/en-us/library/windows/desktop/ms679430(v=vs.85).aspx
また、脳が数学を計算したくないことに加えて、私が尋ねている主な理由は、PHPの浮動小数点メカニズムが必要なほど具体的ではないように見えるからですか? Unix->LDAP タイムスタンプを計算すると1.3009518089E+17
、Active Directory がこの特定の表記法を好むかどうかわからないので、文字列に格納する必要がありますが、これらの計算方法がわかりません。大きな数であり、double にはなりません。
現時点で私は持っています:
printf("%.0f", UnixToLDAP(time()));
これにより正しい長さが得られますが、実際には具体的ではありません。
私が必要なもの
pwdLastSet
Active Directory に適合する短くてシンプルな Unix->LDAP タイムスタンプ。また、それは可能な限り完璧でなければなりません。
Google: 自動ソリューション (Windows 2012 Active Directory)
pwdLastSet に -1 を指定するだけで、Windows はパスワードが変更された後の最終ログイン時刻を自動的に設定します。完璧ではありませんが、グーグルで検索してここにたどり着いた人なら誰でもうまくいきます。