質問掲示板

CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。

新規発言一覧最新記事過去一覧 | 検索HOME

スレッド

└◇1078:
日記で、書込み項目の追加 [さくら] 04/09 12:20

 ├◇1079:Re:日記で、書込み項目の追加 [moon] 04/09
 └◇1080:改造できました〜 [さくら] 04/09
  └◇1081:ついでにもうひとつお願いしたいんですが・・ [さくら] 04/09
   └◇1082:Re:ついでにもうひとつお願いしたいんですが・・ [moon] 04/10
    └◇1084:見事です♪ [さくら] 04/10 <


1078● 日記で、書込み項目の追加[ さくら ] 2008 04/09 12:20
お世話さまです
以前会員ページで『日記』を使用させて頂きました。
また、新たに追加で使用しようと考えて、最新バージョンをDLさせて頂きました。
nik5.01では出来たのですが、最新バージョンではなかなか出来なくって困っています。
そこで、出来ましたら教えてください。
1、書込み項目を増やす
参加者が自由に投稿できるようにしたいと考えています。
ハンドルネームを記載する欄(項目)があればと思うのですが・・・
スクリプトを見たのですが、まったく変わっていて私には難しいみたいです。

改造は可能でしょうか?

また、2,3の書込み項目が追加であれば、自由に変形が出来ますので助かりますが・・・


ご検討宜しくお願いいたします。
さくら

http://webforest.net/blog/nik.cgi

スレッド一覧


1079● Re:日記で、書込み項目の追加[ moon ] 2008 04/09 12:58
すべてnik.cgiの編集です。
テンプレートファイルを使用することや、携帯からの閲覧は考慮に入れてません。

1、名前書き込み欄を作る。
3973行目辺り
    $tmp .= qq| <tr>\n|;
    $tmp .= qq| <td>\n|;
    $tmp .= qq|<tt>タイトル</tt> \n|;
    $tmp .= qq|<input type="text" size="60" name="tit" value="$in{'tit'}">\n|;
    $tmp .= qq| </td>\n|;
    $tmp .= qq| </tr>\n|;

辺りに書き込み欄を追加。
例)
    $tmp .= qq| <tr>\n|;
    $tmp .= qq| <td>\n|;
    $tmp .= qq|<tt>名前</tt> \n|;
    $tmp .= qq|<input type="text" size="60" name="hn" value="$in{hn}">\n|;
    $tmp .= qq| </td>\n|;
    $tmp .= qq| </tr>\n|;


2、プレビュー項目のところのHIDDENに名前の追加をする。
1342行目辺りとか、1394行目辺りとかの$in{'tit'}が書かれてあるところに追加する。

    print qq|<input type="hidden" name="hn" value="$in{'hn'}">\n|;

3、修正用の場所に追加。
3503行目辺り
                $in{'tit'} = $_[2];
                $in{'tit'} =~ s/\"/&quot;/g;
に追加する
                $in{'tit'} = $_[2];
                $in{'tit'} =~ s/\"/&quot;/g;
                $in{'hn'} = $_[17];
                $in{'hn'} =~ s/\"/&quot;/g;

4、その他修正
5184行目辺り
    $in{'tit'} =~ s/&quot;/\"/g;
に追加
    $in{'tit'} =~ s/&quot;/\"/g;
    $in{'hn'} =~ s/&quot;/\"/g;

5、記録データ追加
5217行目くらい
    $kousin_data .= $in{'will'} ."\t";
    $kousin_data .= $in{'willn'} ."\t";
    $kousin_data .= $File_Sam ."\t";
    $kousin_data .= "\n";

    $kousin_data .= $in{'will'} ."\t";
    $kousin_data .= $in{'willn'} ."\t";
    $kousin_data .= $File_Sam ."\t";
    $kousin_data .= $in{'hn'} ."\t";
    $kousin_data .= "\n";
とする。

1325行目辺り
    push(@line,"$in{'sort'}\t$in{'date'}\t$tmp_tit\t$comm\t"
    ."$in{'time'}\t$in{'kibun'}\t$in{'tenki'}\t$main_img\t"
    ."$main_W\t$main_H\t$in{'gaz'}\t"
    ."$File_Set\t"
    ."$theme_kakiko\t$in{'rank'}\t$in{'will'}\t$in{'willn'}\t$File_Sam\t\n");


    push(@line,"$in{'sort'}\t$in{'date'}\t$tmp_tit\t$comm\t"
    ."$in{'time'}\t$in{'kibun'}\t$in{'tenki'}\t$main_img\t"
    ."$main_W\t$main_H\t$in{'gaz'}\t"
    ."$File_Set\t"
    ."$theme_kakiko\t$in{'rank'}\t$in{'will'}\t$in{'willn'}\t$File_Sam\t$in{'hn'}\t\n");
とする

6、表示する
1872行目辺り
            $tmp .= qq| <th>|;
            if ($kiji_top_c and $kiji_top_s) {
                $kiji_top_s--;
                $tmp .= qq|<font color="$kiji_top_c">$_[2]</font>|;
            } else {
                $tmp .= qq|<font color="$ti_c">$_[2]</font>|;
            }
            $tmp .= qq|</th>\n|;
この辺の好きな場所に表示するヤツをいれる
            $tmp .= qq| <th>|;
            if ($kiji_top_c and $kiji_top_s) {
                $kiji_top_s--;
                $tmp .= qq|<font color="$kiji_top_c">$_[2]</font>|;
            } else {
                $tmp .= qq|<font color="$ti_c">$_[2]</font>|;
            }
            $tmp .= qq|<br>名前:$_[17]\n|;
            $tmp .= qq|</th>\n|;



以上でOK
スレッド一覧


1080● 改造できました〜[ さくら ] 2008 04/09 17:37
有難うございます。m(_ _)m あるいはv(".")v♪
無事、改造が出来ました。
http://webforest.net/blog/nik.cgi

前回といい、今回といい本当にお返事有難うございます。
これでスタートに間にあいました

感謝感謝
です
スレッド一覧


1081● ついでにもうひとつお願いしたいんですが・・[ さくら ] 2008 04/09 20:10
名前欄で、cookieを使用して再び名前を入力する手間を省くにはどの様にしたらよいのでしょうか?

宜しくお願い申し上げます
m(_ _)m
スレッド一覧


1082● Re:ついでにもうひとつお願いしたいんですが・・[ moon ] 2008 04/10 00:07
> 名前欄で、cookieを使用して再び名前を入力する手間を省くにはどの様にしたらよいのでしょうか?

rib.plに525行目辺り(と言うかどこでもいいけど)に以下追加

# レス名前用クッキーを読み込む
sub gmncook{

    @COOKIE=split(/;/, $ENV{'HTTP_COOKIE'});
    foreach (@COOKIE){
        ($name,$value) = split(/=/);
        $name=~ s/ //g;
        if($name eq "nikmn"){
            ($hn) = split(/\,/, $value);
            if ($hn) {
                $hn =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
            }
            last;
        }
    }

}

# レス名前用クッキーの発行
sub smncook {

    my $ck = 31;    # クッキー保存日数
    $hn = shift;

    ($secg,$ming,$hourg,$mdayg,$mong,
        $yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + $res_ck*24*60*60);

    $yearg += 1900;
    if ($secg < 10) { $secg = "0$secg"; }
    if ($ming < 10) { $ming = "0$ming"; }
    if ($hourg < 10) { $hourg = "0$hourg"; }
    if ($mdayg < 10) { $mdayg = "0$mdayg"; }

    $month = ('Jan','Feb','Mar','Apr','May','Jun',
            'Jul','Aug','Sep','Oct','Nov','Dec')[$mong];
    $youbi = ('Sunday','Monday','Tuesday','Wednesday',
            'Thursday','Friday','Saturday')[$wdayg];
    $date_gmt = "$youbi, $mdayg\-$month\-$yearg $hourg:$ming:$secg GMT";

    if ($hn) {
        $hn =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
    } else {
        $hn = '';
    }

    print "Set-Cookie: nikmn=$hn; expires=$date_gmt\n";

    # 表示する場合不都合があるから戻しておく
    if ($hn) {
        $hn =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
    }

}


nik.cgi 454行目辺りに以下追加

    if ($in{'hn'}) {
        &smncook($in{'hn'});
    } else {
        &gmncook;
    }


3985行目くらいに追加した
    $tmp .= qq| <tr>\n|;
    $tmp .= qq| <td>\n|;
    $tmp .= qq|<tt>名前</tt> \n|;
    $tmp .= qq|<input type="text" size="60" name="hn" value="$in{'hn'}">\n|;
    $tmp .= qq| </td>\n|;
    $tmp .= qq| </tr>\n|;

の上に以下を追加

    $in{'hn'} = $hn unless $in{'hn'};
スレッド一覧


1084● 見事です♪[ さくら ] 2008 04/10 11:33
出来ました〜

本当に有難うございます。

自分が納得したように改造できるのがとてもうれしいし、ありがたいです。

平に伏して崇め奉り候

へっへ
スレッド一覧

CGIROOM