この投稿は lljl2009 によって最終編集されました: 2013-12-09 19:59:49
私は全くの初心者です、アドバイスをお願いします!
要件は次のとおりです:
1. ページ上にフォームがあり、1 つは保存、もう 1 つはキャンセルです。
2. フォームのコンテンツが変更された後。 、 [保存] をクリックします データをファイル a に保存した後、[キャンセル] をクリックして変更をキャンセルします。 問題は、[更新] をクリックするとフォームが繰り返し送信されることです。次のような単純なコード:
#include ade979de5fc0e1ca0540f360a64c230b
#include 8e359799bdf1a571032ba13cc96acda9
char text_value []={"AAAAAAAAA"} // text_value はファイルからのものです
void htmlPage()
{
fprintf(cgiOut, "100db36a723c770d327fc0aef2ce13b193f0f5c25f18dab9d176bd4f6de5d30en");
fprintf(cgiOut, "eb3c3c5ebbbe9297ee8be7a32a9126ec7cdffbc981ce578dc6212f54b5f55c8en");
fprintf(cgiOut, "6c04bd5ca3fcae76e30b72ad730ca86d n");
fprintf(cgiOut, "32f13c208360354c7c73dd4e22ea1dc6n");
fprintf(cgiOut, "6002e4b14867514a50c76f53885140a0n");
fprintf(cgiOut, "8f5c5fecca4eaa15d6c738be17014c84n");
fprintf(cgiOut, "f5a47148e367a6035fd7a2faa965022en");
fprintf(cgiOut, "73a6ac4ed44ffec12cee46588e518a5e n");
}
show_data .c:
#include ade979de5fc0e1ca0540f360a64c230b
#include "cgic.h"
#include bbed3fed50f96ac7490cfc6a498c4bc5
#include 8e359799bdf1a571032ba13cc96acda9
#include f55648144b4a1c5cce7ad2f6519be0f3
#include "mypage.h"
int cgiMain()
{
if (cgiFormSubmitClicked("save") == cgiFormSuccess)
{
// データをファイルに保存します。 ...
// ページをリロードします
cgiHeaderContentType("text/html");
return 0;
}
// ファイルからデータを読み取ります
// ...
cgiHeaderContentType("text/ html");
htmlPage();
return 0;
}
4. インターネット上でいくつかの方法を試しました: JavaScript でグローバル変数を使用したり、隠しコントロールを使用したりすることは、この値が常に初期値であるため、機能しませんでした。ページがリロードされた後、非表示の iframe を使用し、フォームのターゲットがこのフレームをポイントすると機能しません。そのため、送信後に保存コントロールを無効にすることはできません。 cgiMain でデータの保存やその他の処理を行う必要があり、これを無効にすると、この部分は実装されなくなります。 。 。
他のセッション、ajax、その他のメソッドがどのように使用されるのか理解できません。目的は達成できますか?どうすればよいかアドバイスをいただけますか?全く分からない。 。 。
ありがとうございます!
ディスカッションに返信 (解決策)
ページの最後にランダムなタイムスタンプを生成します
バックグラウンド抽出の前にセッションを比較します
例:
http://www.baidu.com?p=12345678912
サーバー-サイド抽出
if( isset( $_GET["p"] ) && $_GET["p"] != session["submit"] ){ // do sth. // session["submit"] = $_GET["p"];};
ページの後ろでランダムなタイムスタンプを生成します
バックグラウンド抽出の前にセッションを比較します
例:
http://www.baidu.com?p=12345678912
サーバーサイドフェッチ
if( isset( $_GET["p"] ) && $_GET["p"] != session["submit"] ){ // do sth. // session["submit"] = $_GET["p"];};
お返事ありがとうございます!ページの裏側とはどういう意味ですか?このコードのどこでこれを実行すればよいでしょうか?また、コードに直接適用できるこの Php コードはありますか?