0

要件に従って、ユーザー、パスワード、プロフィール画像を .txt ファイルに保存しています。ユーザーは、パスワードやパスワードの写真を変更できるプロファイル変更ページにリダイレクトできます。

ユーザーが [OK] をクリックしたときに、.txt ファイル内のパスワードやプロフィール写真の名前を置き換える必要があります。

users.txt ファイルは次のように配置されます。

mike mike Avatar1
jessica123 123jessica Avatar4
mohd MoHd Avatar3
xiao AxiaoA Avatar2
anna abcANNAabc Avatar1

いくつかの調査を行った後、次を使用してみました:

userFilePath = userFilePath.Replace(Session["password"].ToString(),
                                    passwordTextBox.Text);

元のパスワードは、ファイル内の元のテキストを見つけるために使用していたセッション変数を介して、ログイン時に保存されます。

しかし、これはうまくいきません。私はC#にかなり慣れていません。どんな助けでも大歓迎です。

4

3 に答える 3

2

関係する行だけを変更する必要があることに注意してください。多くのユーザーが同じパスワードを持っている可能性があるため、ファイルを1行ずつ読み、関係するログインを特定し、もちろんログインまたはアバターも同じ値になる可能性があるため、何も置き換えないでください。パスワードとして使用しますが、新しい情報を使用して行を再作成し、ファイルを新しい全文値で保存した後。

そして、そのようなニーズに対するアドバイスとして、リレーショナルデータベースを使用することをお勧めします。

于 2012-10-12T02:29:54.243 に答える
1

プレーンテキストファイルに情報を保存し、他の人がすでに悪い考えとして言及しているクリアテキストにパスワードを保存する以外に、ファイルレベルでの直接の文字列変更を無効にするのが最善だと思います。これを(リストの)オブジェクトに抽象化し、オブジェクトを変更してディスクに保存するのが最善です。ホイールを再発明せずにプレーンテキストファイルを使用したい場合は、FileHelpersという名前のライブラリを使用してこれを簡単に行うことができます。

また、これをテキストファイルに保持することを主張する場合は、JSONやXML形式などのより構造化されたテキストファイルに切り替えることも考慮する必要があります。.NETにはすでに両方のデ/シリアライザーが付属しているため、上記のライブラリを使用する必要はありません。

于 2012-10-12T02:31:15.847 に答える
0

可能であれば、あなたはあなたの質問に対するコメントのアドバイスをとるべきであり、このようにこれをしないでください。

何らかの理由でそれが不可能な場合は、ここから始めてください。ロードフェーズ中、通常はアプリケーションの起動時、または最初にデータが必要になったときに、ファイルシステムからメモリにファイル全体をロードする必要があります。

データがメモリ内の何らかの構造になったら、C#のオブジェクトを変更するのと同じように変更できます。

メモリへの変更が完了したら、古いファイルを上書きして、すべてをファイルに書き戻します。

ですから、あなたの質問は非常に大きなものです。ファイルからデータをどのように読み取るかという問題がありますか?この特定のデータセットを保持するために、メモリ内にデータ構造をどのように作成しますか?そして、どのようにしてデータをファイルに書き戻すのですか?この順序で一度に1つずつ作業することをお勧めします。

ああ、データベースを作成できないが、ファイル形式を変更してXMLまたはJSONに切り替えると、ファイルからメモリに移動してファイルに戻すプロセスがはるかに簡単になります。

于 2012-10-12T02:31:10.870 に答える