ユーザーが入力したユーザー名とパスワードがデータベースではなくファイル内に格納されていることを確認しようとしています。私はユーザー名とパスワードの2つしか書いておらず、それらをtestPass.filというファイルに入れ、ユーザー名とパスワードをタブ(\ t)で区切っています。ファイルに保存されているユーザー名とパスワードを確認するためにPHPを使用する際に問題が発生しました。
explode関数を使用してファイルから取得したユーザー名またはパスワードの値を表示するようにテストすると、自分のコードが動作するようです。しかし、ユーザがログインページで入力したユーザ名とパスワードを確認しようとすると、ファイルに保存されているユーザとの間で問題が発生します。私はそれを検証するためにecho文を使ってみましたが、まったく同じ文字列であるように見えますが、等しいかどうかを調べるIf文を実行しません。申し訳ありませんが、愚かで紛らわしい質問がありましたら、私はこれをしばらく試しています。少しのPHPしか知りません。助けを借りて、このコードを下記に投稿します。
<?php
$userName=$_POST['userName'];
$userPass=$_POST['userPass'];
$correctPass=0;
$file=fopen("testPass.fil","r");
$record=fgets($file);
while(!feof($file))
{
$fileData=explode("\t",$record);
//echo "$fileData[0] <br> $userName <br><br> $fileData[1] <br> $userPass<br><br>";
//this line was used to make sure that the username entered and my stored username were the same.
if($userName==$fileData[0])
{
if($userPass==$fileData[1])
{
$correctPass=1;
break;
}
}
$record=fgets($file);
}
if($correctPass == 1)
{
echo "UserName and Password are present";
}
else
{
echo "The UserName or Password you entered is incorrect.";
}
fclose($file);
?>あなたのユーザ名とパスワードから空白を除去する必要があるかもしれません
コードの将来のバージョンで塩漬けハッシュを使用することをお勧めしますか?プレーンテキストのパスワードを保存することは悪いです.... – Zoredache
ところで、あなたは爆発をスキップし、ちょうど[fgetcsv](http://php.net/manual/en/function.fgetcsv.php)を使うことができます。デリミタとして '\ t'を指定するだけです。 – Zoredache
そうですね。このコードは基本的にPHPを使用してユーザーのパスワードが正しいことを確認してから、次のページにリダイレクトするためのテストです。 iPhone Web Appのためのものなので、フォームが正しく送信されていることを確認したいだけです。助けを借りて皆様に感謝します。 – Alan