http://f29.aaa.livedoor.jp/~unyu/joban/unyu.cgi? …
上記のサイトのように、情報をフォームに入力し投稿ボタンを押すと入力したフォームに反映/保存され、その情報を他の人も変更(投稿)/回覧できるようにするにはどのようにすればよいのでしょうか?
CGI/perlなどを探し、掲示板のプログラムを改造したりしましたが分かりません。回答お願いします。
No.2ベストアンサー
- 回答日時:
こんなのはどうでしょうか。
我流プログラマなので、おかしかったら読み飛ばして下さい。
考え方はhtmlをcgiでデータ部分を書き換えて書き出す方法です。
test.htmlの、$~$で囲まれた部分を、cgiが書き換えます。
selectedの部分は、あるデータがある値のとき、$selected_データ名=値$ を'selected'に書き換えます。
checkedの部分は、$checked_データ名=値$ を'checked'に書き換えます。
ファイルの読み書きで、改行を\nにしてます。
言葉で説明するのが難しいので、プログラムを見てください。
下のtest.htmlと、test.cgiと、空のtest.datを用意してください。
test.cgiは、パーミッションを705(か755)にしてください。
#!/usr/bin/perlの部分は適当に書き換えてください。
test.datは、パーミッションを606(か666)にしてください。
perl5.8の標準モジュールCGIを使ってます。
perl5.6とかなら、cgi.pmをインクルードしてください。
--- test.html ここから ---
<form action="./test.cgi" method="post">
data1:<input type="text" name="data1" value="$data1$"><br>
data2:<input type="text" name="data2" value="$data2$"><br>
data3:<textarea name="data3">$data3$</textarea><br>
data4:<select name="data4">
<option value="" $selected_data4=$>選んでね
<option value="1" $selected_data4=1$>その1
<option value="2" $selected_data4=2$>その2
</select><br>
data5:<input type="checkbox" name="data5" value="1" $checked_data5=1$><br>
data6:
<input type="radio" name="data6" value="1" $checked_data6=1$>aaa
<input type="radio" name="data6" value="2" $checked_data6=2$>bbb<br>
<input type="submit" name="regist" value="登録">
</form></form>
--- test.html ここまで ---
--- test.cgi ここから ---
#!/usr/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
my $query = new CGI;
print $query->header(-charset=>'Shift_JIS');
my %data;
if(defined $query->param('regist')){
#データの登録
$data{data1}=$query->param('data1');
$data{data2}=$query->param('data2');
$data{data3}=$query->param('data3');
$data{data4}=$query->param('data4');
$data{data5}=$query->param('data5');
$data{data6}=$query->param('data6');
#改行変更
foreach my $key(keys %data){$data{$key}=~s/\n/\\n/g}
#データ書き出し
open(OUT,'>./test.dat');
print OUT join("\n",%data)."\n";
close(OUT);
}
#フォーム読込み
open(IN,'./test.html');
my $form=join("\n",<IN>);
close(IN);
#データ読み込み
open(IN,'./test.dat');
%data=grep(chomp,<IN>);
close(IN);
#改行変更
foreach my $key(keys %data){$data{$key}=~s/\\n/\n/g}
#selectedデータ作成(select)
$data{'selected_data4='.$data{data4}}='selected';
#checkedデータ作成(checkboxとradio)
$data{'checked_data5='.$data{data5}}='checked';
$data{'checked_data6='.$data{data6}}='checked';
#フォームへデータ書き込み
$form=~s/\$(.+?)\$/$data{$1}/g;
#フォーム表示
print $form;
exit;
--- test.cgi ここまで ---
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- その他(ネットショッピング・通販・ECサイト) フィッシング詐欺サイトに入力してしまった情報について 2 2023/04/23 18:09
- その他(ブラウザ) Mycrosoft Edge フォームの履歴を完全に削除したい 3 2022/08/11 09:59
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい 2 2023/01/16 16:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
ホームページでCGIのフォームを...
-
(フリーの)ツリー掲示版CGI、...
-
古ーくからフリーのtree.cgi掲...
-
フォームを再送信しますか?
-
ラズパイでのCGIで、pythonソー...
-
.htaccessでサーバエラー
-
opencvのコード、エラー発生
-
htmlからパラメータで、cgiに渡...
-
CGI.pmはもう古い!?
-
チェックボックスでのvalue値の...
-
3DCG
-
ホームページにメールフォーム...
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
ホームページにCGIを設置したの...
-
ホームページにCGIを設置したの...
-
サーバーのエラーでおしえてく...
-
ホームページの事でおしえてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォーム入力後の確認画面表示...
-
チェックボックスで得たデータ...
-
アクセス元URLによって振り分け...
-
htmlのフォームからcgiにデータ...
-
htmlからcgiに変数を配列にして...
-
フォームに入力した情報をその...
-
HDMLでCGIを使おうと思うのです...
-
(Perl)ReadParseによるハッシ...
-
perlで自動ログインをしたいが...
-
Javascriptの変数をCGIに送る方法
-
cgi-libを使って変数値渡しをし...
-
別サーバーのcgiへバイナリデー...
-
Rubyのmechanizeを利用したファ...
-
アンケートCGI作成について、fo...
-
perl cgiの変数の受け渡しがで...
-
自作掲示板で、長文を投稿でき...
-
掲示板「送信」に対して外部Jav...
-
CGIプログラムの最後に?がつい...
-
何れかが入力されていれば全て入力
-
アンケートフォーム複数ページ...
おすすめ情報