MySQL バージョンが 4.1大道 越えて来ながら MySQL してした PASSWORD()義 暗号化 方法が 変わったと する. 以前のPASSWORD()関数は 16席 結果物(亥時値)を 出す ところ 惚れて 新しいPASSWORD()関数は 41席 結果物を 出す.

使用者 認証の時 PASSWORD() 関数を 使って あったら, MySQL バージョンが 変わった 時 困り果てられる. これ 時 仮装(家長) 簡単な 対処法は, PHPイン 場合 コードに 次 値段を 追加して 与える のだ.

//mysql 連結を たいてい 後
@mysql_query( 'set old_passwords = 1 ');

こんなに すれば 問題が 解決される.

違う 方法 1. my.cnfold_password = 1 追加

違う 方法は 私が 実際で 日 見るのは なくて ささいな 正確性が 落ちる 数 ある.

/etc/my.cnf ファイルを 捜して old_password = 1 という オプションを 追加して 与えれば 解決されると する. (my.cnf ファイルの 位置は 使って ある 運営体制に よって 違う. そして 運営体制が ようで MySQLを どうに 設置して 使って イッニャに よって 違う. /etc/my.cnf 増えた リナックス 基本 設置 基準である ようだ.)

違う 方法 2. OLD_PASSWORD() 関数を 使用

もし ソース コードを はっきりと 管理する 数 あって, DB だからにだけ 問題が 生じた ことなら, MySQL クイーリー 部分のPASSWORD()関数を OLD_PASSWORD() 関数で 変更して 与える. それでは こぎれいに 解決される ことだ.

違う 方法 3. PHP路 代替

PHP 関数を 立ち後れて 見たら old_password()を 具現して おいた ガール 捜す 数 あった. これを 使う 首都 ある.

function old_password($password) {
	$nr=0x50305735;
	$nr2=0x12345671;
	$add=7;
	$charArr = preg_split("//", $password);
	foreach ($charArr as $char) {
		if (($char == '') || ($char == ' ') || ($char == 't')) continue;
		$charVal = ord($char);
		$nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8);
		$nr2 += ($nr2 << 8) ^ $nr;
		$add += $charVal;
	}
	return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff));
}

- コメント機能はありません。コメントの代わりに[email protected]にメールを送ってください。