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です。

回答の条件
  • 1人3回まで
  • 登録:2009/11/29 17:43:04
  • 終了:2009/11/29 19:29:50

ベストアンサー

id:azuco1975 No.1

azuco1975回答回数613ベストアンサー獲得回数162009/11/29 17:46:40

ポイント45pt

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

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

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

id:mitaina

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

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

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

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

2009/11/29 19:28:13

その他の回答(1件)

id:azuco1975 No.1

azuco1975回答回数613ベストアンサー獲得回数162009/11/29 17:46:40ここでベストアンサー

ポイント45pt

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

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

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

id:mitaina

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

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

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

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

2009/11/29 19:28:13
id:goog20090901 No.2

goog20090901回答回数637ベストアンサー獲得回数172009/11/29 17:56:04

ポイント30pt

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

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

id:mitaina

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

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

2009/11/29 19:28:20

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません