de「私のコードでは、データが挿入されると直ちに別のページにリダイレクトするため、DBを変更するためのURLを操作する方法はありません」というのは非常に危険な考えです。ユーザーはブラウザを制御しており、要求を観察することができます。あなたのWebサーバーは、インターネット上のポート80上のHTTP要求を聞いて応答を吐き出すだけのサーバーです。ユーザーはWebサーバーに必要な要求を行うことができます。1つの要求ごとに検証を実行してデータが適切に処理されることを確認するのはサーバーに任されます。"冪等"でなければなりません。データを変更することは副作用です。POSTではGETではなくのみ使用するべきです。源しかし、私は自分のデータを処理する場所を必要とします。それはprocessCategory.phpです。データをデータベースに挿入する前に、データを同じページにまず検証したいと思います。ポストリクエストでリダイレクトすることはできません。答えどのようにデータがそこに到達するかは問題ではなく、変更することができます。あなたはGETまたはPOSTに入れることができ、ユーザーはそれを改竄したり、独自のリクエストをしたり、途中の誰かがそれを変更する可能性があります(httpsを実行しない限り)。あなたのスクリプトは、addCategory関数のSQLインジェクションに対して脆弱です。次のように最小限に変更する必要があります。http://xkcd.com/327/また、より安全なPDOやパラメータ化されたクエリを使用してルックアップすることもできます。ユーザーが物事を修正して再提出する場合、Noncesを使用することでこれを防ぐことができます。」に使用されるセキュリティのものです。これを行うための簡単な方法は次のとおりです。ユーザーにフォームを表示するときは、データベースに何らかの並べ替えを行い、その数値をフォームの隠しフィールドに配置する必要があります。ユーザーが送信すると、スクリプトはフィールド内のnonceを確認し、データベースに存在するかどうかを確認して削除します。スクリプトがナンスを見つけることができなかった場合、スクリプトは既に使用されていることを知っており、そのリクエストはすでに処理されていたので、ユーザーのリクエストを拒否します。これをさらに安全にするには、ユーザーのIDをデータベースに格納します(ユーザーIDを与える何らかのセッション処理があると仮定します)。各セッションに一意のIDを与え、それをノンスと一緒に使用することは、さらに優れています。このシステムは完璧ではありませんが、ユーザーが誤ってページを更新する場合には少なくとも役立ちます。"要求ID"が処理されると、再度処理することはできません。繰り返しますが、何らかの方法でデータを検証する限り、データをどこに置いても問題ありません。1つの制限は、一部のブラウザ(一部のバージョンのIEなど)では2048文字以上のURLを許可しない傾向があることです。POSTデータは一般的に(PHP自体を除いて)制限されていないので、(POSTのような)データをたくさん送ることを計画しているなら、おそらくPOSTを使いたいでしょう。わずかなデータ(ツイートのような)を送信している場合は、GETを使用することができます。パスワードはGET経由で送信されるべきではありません。これは、ユーザーのブラウザがその履歴を保持していて、パスワードがどこでも履歴に浮かび上がることを望まないからです。編集:あなたのデータを処理するために必ずしも2つの別々のURLを持っている必要はありません。someSuccessPage.php");大したことではありませんが、リダイレクトやリクエストが多すぎると、サイトの速度が低下し、サーバーが必要以上に多くのリクエストを処理する可能性があります。Locationヘッダーを変更するたびに、ユーザーのブラウザーがサーバーから別のURLを要求する302を送信します。Frijoles源そのLocation:ヘッダーを実行すると、実際にはユーザーのブラウザにそのページに行くように伝えられます。その時点で、誰かがブラウザーにURLを一時停止して変更するように指示し、URLを再び非衛生的にすることができます。_POSTから出てくるものを決して信用しないことです。源それはすべて優先と慣例です。設定されたルールはありません(しかし、誰もが一方的に議論するでしょう)。私の個人的な好みは、RESTful規約と呼ばれるものに従うことです:GETリクエストはデータベースから物事を取得し、POSTリクエストはデータをポスト(追加)し、PUTは変更を行い、DELETEは削除を要求します。それがどのように働くかを理解している限り、あなたが使用する規則は重要ではありません。GETリクエストの場合にのみ、ブラウザの履歴がキャッシュする可能性があるので、履歴ファイルに表示されないようにしてください。私はそれがすべてのリダイレクト(意図的な犯罪ではない)でちょっと乱雑だと思っています。違う方法で構造化していきますが、それは私の方法が唯一の方法であるということではありません。それが私の場合は、RESTfulな規約に従うので、データを変更するためにPOSTを使用します。GETを使用することは悪くありません(また、PHPを使用してビューを追跡する場所によって、GETリクエストでデータベースが変更される場所もあります)。標準でより多くのコードを適合させたい場合は、テンプレートエンジン(Savant3は私のお気に入り)やフレームワーク(CakePHPとDrupalは人気のあるもの)の使用を検討してください。源データがクエリに反映されている場合は、そのデータをサニタイズする必要があります。それがクエリに入らない場合は、ユーザーに表示されない限り、実際には必要ありません(クロスサイトスクリプティング攻撃を参照)。SQLインジェクションでDROPテーブルを実行するだけでなく、クエリやPHP自体に脆弱性が存在すると常に想定しています。mysql_queryが複数のクエリを実行することができない場合でも、攻撃者はそれをどのようにトリックするかを知ることはできません。源それはキャラクターからエスケープされているので、それだけで動作するはずです。あなたはいつも試してみることができます。_POSTを使うべきだと私は幾分読んでいます。データベースの管理とは、データベースへのデータの挿入と削除を意味します。mysql_query()とmysqli_query()は単一のSQL文しか実行できません。源データベースの中に「もしあなたが検索すれば」あなたは「あなたは手に入りますか?すみません。参加者のこのグループではPHPについて話します。