人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの文字列の比較について質問です。

if($row = $stat->fetchObject()){
$tempsalt = $row->tempsalt;
$password = decryptedData($row->password, $tempsalt);
}
$body1 = "EpAXoeKJAn";

var_dump($password);
var_dump($body1);

if($password !== $body1){
echo "×[比較3]";
}

if($password != $body1){
echo "×[比較2]";
}

if(strcmp($password,$body1) != 0){
echo "×[strcmp]";
}

?>


以上を実行すると、

string(16) "EpAXoeKJAn"
string(10) "EpAXoeKJAn"
×[比較3]
×[比較2]
×[strcmp]

という結果です。

1.$passwordがstring(16)となる原因は何が考えられますか。
2.どのようにすれば、両者が一致していると判断できるでしょうか。

PHP Version 5.2.5、MySQL 5.1.22-rcです。

●質問者: mitaina
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:echo MySQL password PHP RC
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● azuco1975
●45ポイント ベストアンサー

>1.$passwordがstring(16)となる原因は何が考えられますか。

スペース(空白)が入ってるんじゃないでしょうか?

前後の空白を除去する関数を使ってください。

◎質問者からの返答

ご指摘のとおり、スペース(空白)が入っていたようです。

trimしてみたら、string(10)となり、問題解決しました。

"EpAXoeKJAn"と表示されているから、まさかスペース(空白)などあるまいと考えていたのですが、そういうわけではないのですね。他の方のソースをみていたときに、なんでここでtrimをいれているんだろうとおもったことがあったのですが、こういうことがあるからなのかな……。

どういう機序でスペースが入るのか、まだ理解はできていないのですが、今後はこういうことがあるのだと頭にいれておきます。入門者一人では気付くことが出来ませんでした。ありがとうございました。


2 ● goog20090901
●30ポイント

http://nyx.pu1.net/function/strings/trim.html

trim関数をつかってから文字列比較すればうまくいくと思います。

◎質問者からの返答

リンク先のご提示、ありがとうございました。

ご案内のtrimの使用で解決いたしました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ