アプリ版:「スタンプのみでお礼する」機能のリリースについて

HPで小説をのせているのですが、主人公の名前などを
読んでくださる人が自由に自分の名前に変えたりできる
ようにしたいと思っています。
ですが、どんな仕組みでみなさんしておられるのかわか
りません(汗
どうかご存知の方おられましたら教えてください

A 回答 (5件)

#1です。


とりあえず作ってみました。
もしCGIで実装する際にご使用ください。

"read.cgi"-------------------------
#!/usr/local/bin/perl -T
print "Content-type: text/html\n";
print "\n";

my %IN;
my $filename;
my $dat_folder = './files/';#.datファイルの格納場所

#read.cgi?file=filename&key=value
#と読み出します、filenameに.datは必要ありません。置き換え文字はいくつでも設定可能です。
my $str = $ENV{'QUERY_STRING'};

#&で切る
my @temp = split(/&/, $str);

foreach my $temp (@temp) {
#=で切る
my($key,$value)=split(/=/,$temp);
#デコードします
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$key =~ tr/+/ /;
if ($key eq 'file'){$filename = $value;next;}
$IN{'%'.$key.'%'} = $value;
}

#汚染CHECK
$filename =~ /(\w+)/;
$filename = $1;
unless (-e $dat_folder.$filename.'.dat'){
#ファイルが存在しない場合
print <<"EOM";
<HTML>
<HEAD>
<TITLE>error</TITLE>
</HEAD>
<BODY>
無効なファイル名を設定しました。<br>
$filename.dat<br>
は存在しません<br>
</BODY>
</HTML>
EOM
exit 0;
}

open (FH,'<',$dat_folder.$filename.'.dat');
while(<FH>){
foreach $temp (keys %IN){
s/([^%])$temp|^$temp/$1$IN{$temp}/g;
}
s/%%/%/g;
print;}
close(FH);
-----------------------------------
使用する際は、read.cgiと同じフォルダにfilesというフォルダをつくり、html文書の拡張子を.datにして保存します。
read.cgi
files
|-file1.dat
|-file2.dat

読み出す際はread.cgi?file=filename&key1=value1&key2=value2
のようにURLを入れます。
filenameは上記のfile1、file2に相当するファイル名
文章中に%key1%や%key2%を書き込むとvalue1、value2としてHTML文書が作成されます。
%%と書くと%として出力されます。
valueに日本語など2byte文字を設定するときは%nn(nは0-9a-f)にエンコードする必要がありますが、HTMLタグの<Form>を使い送信すれば自動的に%nnにエンコードしてくれます。日本語コード(Shift-Jis,Jis,EUCなど)を設定しないと文字化けの可能性もあります。
    • good
    • 0

あ、さっきのつけたしなんですが、


タグをコピーして、ちょっと変えたりしながら使ってくださいね。

環境によっては使えない人もいるかもしれませんが、
CGIを使えない人はjavascriptが便利です!

この回答への補足

お2人へのお礼をまとめさせていただきました。

補足日時:2005/10/04 16:58
    • good
    • 0
この回答へのお礼

こんなタグまで打ってくださってありがとうございます!申し訳ないです!!
お知らせするのが大変遅くなってしまいまして...わたしの利用させていただいているサーバはCGIが使えないのです(汗)javascriptをつかうことに致しました。わざわざ本当にありがとうございました!
お心遣い感謝します!

お礼日時:2005/10/04 16:57

タグだとこんな感じだと・・・


javascriptを使用かな?

-------------------------------------------
二つの名前の場合(苗字と名前とか)

<head>~</head>に

<script type="text/javascript">
<!--
chip = prompt("名前を教えて下さい。","");
if(chip == null || chip == ""){
chip = "名前未入力時に呼ぶ名前";}
chip1 = prompt("名前2を教えて下さい。","");
if(chip1 == null || chip1 == ""){
chip1 = "名前2を未入力時に呼ぶ名前する";}
-->
</script>


名前1を表示させたい所に
(<body>~</body>で)

<script type="text/javascript">
<!--
document.write(chip);
-->
</script>

名前2を表示させたい所に
(<body>~</body>で)

<script type="text/javascript">
<!--
document.write(chip1);
// -->
</script>


-------------------------------------------
一つだけの名前を使用のとき

(<head>~</head>で)

<script type="text/javascript">
<!--
chip = prompt("お名前を記入してください","");
if(chip == null || chip == ""){
chip = "名前未入力時に呼ぶ名前"}
-->
</script>

名前を呼ばせたい場所に

<script type="text/javascript">
<!--
document.write(chip);
-->
</script>

こんな風にいれるだけでいいんじゃないでしょうか?
    • good
    • 0

所謂ドリーム小説でしょうか?


でしたらDream Makerを使っている方が多いように思います。
http://www.babu.jp/~raika/Dream/
こちらでしたらレンタルですので、CGIが使えなくても使えると思います。

参考URL:http://www.babu.jp/~raika/Dream/
    • good
    • 0
この回答へのお礼

ドリーム小説といったらなにか漫画のキャラでつくる小説のことでしょうか(今調べたのでよくわからなくて;)オリジナル小説なのですが、このサイト様のいいですね!とても勉強になりました。教えてくださってありがとうございました!!

お礼日時:2005/10/04 16:55

動的に、HTMLを作成する何らかのプログラムを使用することになると思います。


たとえばCGIの一つであるPerlをつかうとしたら
文章本文が、text1.datだとして、この中で主人公の名前を%name%と書いておくとします。
あとは、Perlにファイルがtext1ということと名前を送って、書き換えてもらえばいいのです。
tunamayo様の環境でCGIが使えるようなら、私がCGIを作成することも可能ですが、それなりの手間が掛かりますゆえに、使えるようなら補足をください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!