#================================
# スレッドの説明
#================================
「スクリプトを改造したいけどやりかたわかんないよー」という人がいましたら
ここで聞いてください。ひょっとしたらアドバイス出来るかもしれません。
質問するときは以下の点に注意して書いて下さい
(1) そのスクリプトの内容と置いてある場所を明記する (txtファイルでUPすればなお良い)
(2) どんな風に改造して欲しいのか? (完成イメージHTMLを用意すればなお良し)
(3) 出来るだけ詳しく書くこと。少しは自分で考えること。できれば御礼も言ったほうが良い
※答えてくれないからといって逆ギレする厨はお断り
スクリプトを改造しているけどうまくできない場合のヘルプはこちらで。
配布先でアドバイスが得られない場合、ここで聞けば
親切な人が助言してくれるかもしれません。
依頼テンプレ
【. CGI名 .】 複数のバージョンがある場合には正確に (必須)
【配布先URL】 教えてくれる人が参照する場合があるので (必須)
【. 置き場所 .】 配布先が閉鎖の場合、すぐ見られるようtxtなどで
upした場合、 デザインをhtmlで作成した場合など (任意)
【ヘルプ内容】 どのように改造したくてどのようにうまくできないか (必須)
機能・動作などを簡潔かつ詳細に
http://pc8.2ch.net/test/read.cgi/php/1104624784/2 より
■ エラーメッセージについて
500エラーやInternal Server Errorって言うのは、エラーメッセージじゃないから、そんなもん書いても問題解決に繋がらない。
ちゃんとしたエラーメッセージを書くように。
エラーメッセージはログに記録されている。
ログのありかがわかんないときは、サーバの管理人に問い合わせる。
もしくは、モジュールが入っている事が前提だが、
2行目に
use CGI::Carp qw(fatalsToBrowser);
の一文を挿入する。
したらエラーメッセージがブラウザに表示される。
あとは修正すればよい。
自分で修正できなかったら、エラーメッセージも書いて質問しる。
※ 共有サーバでいきなりテストせず、自宅のPCでテストできる環境を作れ 要るのかどうかわからんけど、スレだけひょっこり立ってたので貼っといた。
要らないもんだったら(>>5とか)ごめんよ。 b_write.cgiの90行目の条件を日付に変えれば良さそうな気がしているのですが、
データに日付の項目を加えておかないと駄目ですかね?
>>11-12
書き込み時に日付データも加工して入ってるね。
この日付の加工タイミングをずらすも
新たに消去処理用の日付データを追加するもそのあたりは自由。
問題点としては消去のタイミングが書き込み時のみになること。
書き込みの多い掲示板ならいいだろうけど
そうでないなら、表示処理のところに仕込んでもいいと思う。 誘導されてきました。ヨロシクお願いします。
【 CGI名 】 携帯絵文字対応BBS「SmallPICT」 (Ver2.161)
【配布先URL】 http://hdml.cside.com/DLcgi/spict/
【ヘルプ内容】 1.機種情報を表示しないようにしたいのですがどこを消したらいいのかわかりません。
2.アクセス解析のタグを挿入したいのですがどこに入れたらいいのかわかりません。
init.cgiの53行目辺りかと思ったのですがエラーが出てしまいます。
どうぞヨロシクお願いします。
2.の挿入したいタグはアクセス解析dopvSTAR*のもので以下のような感じです。(見本のまま貼っておきます。)
<a href="http://tech.bayashi.net/">
<script type="text/javascript" language="JavaScript">
<!--
//----- ログ取得CGIへのパス(相対パスもしくはURL)
var pa = "パス/dsw.cgi";
//----- ページ名(半角英数文字のみ)
var pg = "ページ名";
//----- 出力タイプ(g=gifカウンタ, p=pngカウンタ, m=gifロゴ, n=出力ナシ)
var p = "g";
//----- カウントアップしないなら "no"
var cnt = "";
var a="&&"; var pf=navigator.platform; var lng=navigator.language;
var swh=screen.width+"x"+screen.height;
var cd=screen.colorDepth; var pd=screen.pixelDepth; var rf=document.referrer;
document.write("<img src='"+pa+"?xx=",new Date().getSeconds(),a+"pg="+pg+a+"p="+p+a+"md=j"+a+"cnt="+cnt+a+"pf="+pf+a+"lng="+lng+a+"swh="+swh+a+"cd="+cd+a+"pd="+pd+a+"rf="+rf+"' alt='アクセス解析' border='0' />");
// -->
</script>
<noscript>
<img src="パス/dsw.cgi?pg=ページ名&&p=g&&md=nj" alt="アクセス解析" border="0" />
</noscript>
</a> >14
とりあえず1.だけ。
スクリプトだけをざっと眺めただけなんで、てきとう対処だけど。
sub dispUAってサブルーチンの最後、
return($ua); (2643行目くらい)
という行の前に
$ua = '';
という1行を入れる。
Kentのaskaで設定した書き込んだ人のパスと管理パスと二つで記事を消すようにしたいんだけどどうすればいいかな?
どのように改造したくて
「どのようにうまくできないか」
>>15
すごいです!ありがとうございます。
1行入れただけで、機種表示が消えて思うように表示されました。
今まで消すことばかり考えていたのでビックリしました。
本当に助かりました。
2.も引き続きお願いします。 >>22
>init.cgiの53行目辺り
これ、ヒアドキュメントでできそうな気がする >>22
つか自分で解決する気無いなら丸投げ行けよ >>14
>>24の通り、スレ違いだと思うけど。
まず解析タグの中にある"を全部\"にしてから
int.cgiの58行目
</b>と";の間に挿入。
解析タグのパスとかページ名の書き換え方は自分で考えて。
それでも上手くいかなかったら所得方法をIMG式に換えてみる(その場合も\"に)。 >>23,25
modulesディレクトリのファイル見ると解るけど、携帯用モジュールは
$BBSsubtitle変数読み込んでいないので、それだとPCからのログしか取れないと思う。
ヘッダとかも全部独立してるし、結構面倒臭い作りになってるな〜コレ。 >>26
それは解っていて、やりやすい方を書きました。
丸投げの方で
>携帯は…どうなんでしょうか?PCで携帯の絵文字を表示させたいだけで
>携帯では殆どアクセスしませんです。
と書かれてたので。
携帯ログもとるにはmodukesの中身のjsky,imode.plで
<body $bodyColStr で検索して出てきたbodyタグの直後に
IMG式の解析タグ("を全部\"にしてから)を挿入。
ezweb.pl141行
$title = "<CENTER>$BBStitle$hr2\n"; "と<CENTER>の間
wap2.pl146行
$title .= "</p>$hr2\n"; "と</p>の間
にそれぞれIMG式の解析タグ("を全部\"にしてから)を挿入。
eawebの方はリンクタグを外さないと動かないかもしれない。
(解析の配布元では推奨してはいないが) >>23-27
ありがとうございます。
そんな面倒な物とは知らずにすみませんでした。
>>27
丸投げから誘導されたのですが、あちらの書き込みも見て下さってありがとうございます。
>>14に書いた内容だけでなく、携帯ログもとることができました。
本当に感謝しています。 >28
どうやら成功したようでなによりです。
上でも書いたけど
ezweb.plの書き換えの結果、エラーが出そうなのが心配だ。
古いAu携帯でちゃんと見れるか確認した方が良いと思う。
記述のルールを守らないと
簡単にコンパイルエラー(表示不能)が起きてしまう。
古いAu携帯は少ないと思うからログを取らないという選択もあり。
>>29
古いAu携帯で来ている人が知り合いにはいないので
しばらく様子見てみます。
ありがとうございました。 >>32
ifだけだとちょっと分かりそうもないので丸投げのほう逝ってみます・・
スレ汚しすみませんでした。 【. CGI名 .】 nicky.cgi
【配布先URL】 http://www.din.or.jp/~raelian/ReadMeNicky.html
【 ヘルプ内容 】
SpeedyCGI対応。
要するにグローバル変数名を割り出せればいいと思われる。
しかし、nickyは人気がある割りにこの手の情報は皆無。
http://tech-web.net/perl_memo.html#8
ここを参考に出てきた変数を初期化したが不完全。
落ちはしないが、書き込みの初期状態時にゴミが入っている不具合あり。
他にexitの前にundef %USER_VARS;を全て入れてみたが過去ログが表示されない。
仕方がないので、手作業でグローバル変数名割り出し中だが、連休全て使っても恐らく半分も進まない。
なんとかうまい方法を知っている職人を求む。
>>36
元々SpeedyCGIを意識してないスクリプトを対応させるのは大変だから
情報なんか無くて当たり前だが・・・。
しかし人気があるものに限って凄い作りしてるよね。 >37
thx
効率上がりそうだ。
local宣言もひっかかるのが難点だが。
ひっかかったもの丸ごと全部初期化するのが無難?
作業終了。
手順
1.use strict 'vars';を宣言。
2.local変数をすべてmy変数に置換。
3.スクリプトを実行。
4.エラーログにグローバル変数が全てはかれる。
5.エラーログをエディタで整形して初期化ルーチン作成(定数部分は初期化しない)。
6.元のスクリプトを処理開始時点で初期化ルーチンを呼ぶように変更。
以上、数時間でnickyのSpeedyCGI化完全終了。
連休に時間ができた。
>37はネ申
>>47
まったく検討がつかないなら丸投げに行けよ >>48
すみません。移動します。
誘導ありがとうございました。 【. CGI名 .】 YY-BOARD5.6最新
【配布先URL】 tp://www.kent-web.com/bbs/yybbs/yybbs.cgi
【ヘルプ内容】 なんとかランダムアイコン機能を追加しました。下の奴です。
それに+してランダムを選択しないと出てこない、
ランダム専用アイコンを追加したいのです。どうすればよいのでしょうか?
色々と試してみたのですが、私にはムリです。
秘密扱いにしたいので、アイコン一覧には表示したくありません。
$ico1 = 'space.gif i1.gif i2.gif・・';
$ico2 = 'ランダム 1 2・・・';
# アイコンランダム追加
if ($in{'icon'} eq 'space.gif') {
$in{'icon'} = $ico1[int(rand($#ico1)) + 1];
53nobodyさんNGNG
>>52
if ($in{'icon'} eq 'space.gif') {
$ico1 = ($ico1, $ico2);
$in{'icon'} = $ico1[int(rand($#ico1)) + 1]; >>53
ありがとうございます。
$ico1がファイルの場所で
$ico2が上に対となるファイルの名前になります。セットです。
初めは$ico1だけ書けばアイコン選択で出ないと思ってたのですが、
名前無しのアイコンが選択画面、アイコン一覧画面に出てきてしまい。
どうすればいいのかと思いました。
$ico3をどうにかして作るしかないのでしょうか。 >>52
>>54
それは$ico1基準で表示されてるから。$ico2基準で一覧作ってもらえればその通りになる。
表示するところのコード見たらいい。
もしくはランダムに選ぶ時だけマージする$specialico = ...みたいなのを用意しておくとか。 >>55
表示に関係してそうな点が2箇所ありました。
<select name=icon>\n";
foreach(0 .. $#ico1) {
if ($ico eq $ico1[$_]) {
print "<option value=\"$_\" selected>$ico2[$_]\n";
} else {print "<option value=\"$_\">$ico2[$_]\n";}}
print "</select>\n";
<tr>
EOM
@ico1 = split(/\s+/, $ico1);
@ico2 = split(/\s+/, $ico2);
$i=0; $j=0;
$stop = @ico1;
foreach (0 .. $#ico1) {
$i++; $j++;
print "<td><img src=\"$imgurl$ico1[$_]\">
$ico2[$_]</td>\n";
if ($j != $stop && $i >= 10) {
print "</td><tr>\n";
これをどういじればよいのでしょうか?よろしければお願いします。 57nobodyさんNGNG
>>54
ああそう、
てかスクリプト自体を見てないから何とも言えないけど、
$i = 0;
foreach $tmp(@ico2)
{
if ($tmp eq "") {splice(@ico2, $i, 1);}
$i++;
}
で >>57
ありがとうございます。
早速53の部分を57に変えてやってみました。
そうしたらランダムを選んだときだけアイコンが表示されないようです。
難しいですね。これは。 【. CGI名 .】 Web Calendar2
【配布先URL】 http://www3.biwako.ne.jp/~nobuaki/webcal/
【ヘルプ内容】 カレンダーの従来タイプで一行の文字数を増やしたいのですがどこをいじったらいいのかわかりません。
webcalconf.cgiの
#カレンダーの枠の中の桁数(標準タイプ表示時、半角ベースです)
$keta = 12;
#カレンダーの枠の中の行数(標準タイプ)
$gyou = 8;
の辺りだと思って数字を増やしてみましたが、どこが変化したのかわかりませんでした。
よろしくお願いします。 >63
サーバはSSIは使えますが、フォルダのことは未確認でした。
とほほのリンク、じっくり読んでみます。ありがとうございました!
>64
誘導ありがとうございました。
【 CGI名 】2ちゃんねるのサーバーサイドスクリプト
【配布先URL】 調べたらあるのかも知れない
【 質問内容 】
2ちゃんねるのような、新規スレッド作成ボタンを押し、新規スレッド作成画面に出て
クッキー認証(ライブドアのしたらばJBBSのクッキー認証ありに反応するように)を経て
書き込みボタンを押し、書き込みましたと表示され一定時間後にスレッドが立つような感じ
サーバーを経由する必要があるなら、できたスクリプトのその部分にhttp:(置き場)と記入してくれればいいです
分かり易説明すると新規スレッド作成画面のボタンを押し、新規スレッド作成画面に変わった時に2ちゃんの場合は
画像、板名、スレ立ての心得、書き込む前に読んでね | 2ちゃんねるガイド | チャット
が出るでしょ?そういう状態にしたいんですよ
[タグの書き方の例(1)]
画像、板名、スレ立ての心得、書き込む前に読んでね | 2ちゃんねるガイド | チャット
が出ないソースなら下にあるのですが、このソースに付加して書き込んでも無駄みたいです
<THREADFORM_DISABLE>
<form method=POST action="../../bbs/writebox.cgi">
<input type=submit value="新規スレッド作成" name="submit">
<JBBS_CUSTOM_HIDDEN>
</form>
>>67
マルチじゃなくて教えてもらえなかったから聞いて回ってるわけっす
因みにそっちは依頼です 解決してもらった方には金渡します 69nobodyさんNGNG
それをマルチと言うんだが
まだ答える人を待ってる状態な訳でしょ
>66
昔ぱど厨の間ではやってた「文字の色が変わるタグ」とか「画像が貼れるタグ」とかと同レベルの
とんでもなくアフォな書き込みだな
>>70
そんな単純な問題じゃないんだって
自分でやってみれば難しいことが分かるんだから
ただ単に掲示板の上部に画像とリンクで2ちゃんねるガイド表示させるわけじゃないんだぜ どうせ荒らしに使うだけだろうから放置しとけw
金だって払う訳ねぇw
>>74
そういうことです!。
あとクッキー認証と看板画像表示場所の確保、掲示板タイトルとスレ立ての心得が書けるようにして、
テーブルでタイトル、名前、E-mail、内容を囲むだけじゃないですか
>>75
荒らしには使えだろ
訂正 76
荒らしには使えだろ×
荒らしには使えないだろ○
78nobodyさんNGNG
金出してスレの方に書いといたからよろしく〜
荒らしはともかく、2chに似せて何を狙っているのかな…とは思うがな。
報告致します、Sir!
>>61の依頼は丸投げスレで引き受けますた。 すみません。今まで私が試してみてるのは、
comchatq.cgi
(1453行目) $br$sfont1$lname > $comment</font>$br2
↓
(1453行目を1433行目と同じに) $db1$br$ir$sfont1$lname >$sfont2 $comment</font>$ir2$br2
びくともしないので着眼点間違ってるのだと思います。
簡易ログモード=未入室時の表示ログ、では無いのかな…。
>>82
今ざっと見てみたが、
comchatq.cgiの1983行目あたりのsub loginhtml以降で
いわゆる最初のフレーム分けのHTMLが吐かれているようだ。
で、GETメソッドで"colortype=on"というのを指定してやると
ログ表示における発言部分が染色されるようになるみたいだ。
というわけで、入室中の状態での下フレームのURLを参考に
comchatq.cgiの2003行目あたりをいじってみるといいんじゃないかな。 >85
出来ました!
同じく色の反映されてなかった過去ログも、
1225行目あたりに同じ処置を施して上手く行きました。
大感謝です。
>>88
言葉が足りませんでした。すみません。
改めて
【 CGI名 】 しぃちゃん作PaintBBS及びしぃペインター対応
固定ハンドル機能付き画像アップロード型掲示板「Pallet Town」v3.00
【配布先URL】 http://paoron.jp/script/pallet_town.html
【ヘルプ内容】 固定ハンドル機能はついていますが、トリップ機能がありません。
トリップ機能をつけるには、どの部分をどう弄ればいいのか教えて下さい。 >>89
pallet_town.cgiのデコード部分で名前にトリップキーが含まれていた場合に
トリップに変換する処理を入れておけば良い。具体的にどういじるかはググれ。
まあ2chと完全に同じ動作を実現するのならともかく、
適当なキーからユニークなトリップを出力という処理だけなら難しい事は何も無い。
ぼちぼち頑張れ。 丸投げにて
>lib.plの改行処理を
>$val =~ s/\r\n|\r|\n/<br>/g;
>にして
>album.cgiのメモの<input type=text>を<textarea>にして(2箇所)
>album.cgiの# 並び替え/編集/削除
>の所の<textarea>の$i_photographer[$_]はprintする前に<br>を\nにする。
とアドバイスもらいました。
「lib.pl」を開き
# 改行処理
$val =~ s/\r//g;
$val =~ s/\n//g;
}
$form{$key} = $val;
}
}
を
# 改行処理
$val =~ s/\r\n|\r|\n/<br>/g;
}
$form{$key} = $val;
}
}
にしました。
album.cgiをみて1箇所の「メモ」のinput部分を
# メモ(投稿時)
print "<tr>\n";
print "<td width=\"60\" class=\"item\">メ モ</td>\n";
print "<td><textarea cols=\"50\" rows=\"5\" type=text name=\"photographer\" size=\"50\" value=\"$b_photographer\" class=\"list\"></textarea></td>\n";
print "</tr>\n";
にかえました。
# 並び替え/編集/削除
の部分は
# メモ
print "<textarea cols=\"50\" rows=\"5\" type=text name=\"$n_photographer[$_]\" size=\"25\" value=\"photog\" class=\"list\">";
print "$i_photographer[$_]";
print "</textarea>\n";
print "</td></tr><tr><td>\n";
「>album.cgiの# 並び替え/編集/削除
>の所の<textarea>の$i_photographer[$_]はprintする前に<br>を\nにする。」
部分ができていないため、編集画面ではテキスト
エリアに表示される文面に「<br>」が表示され、
さらにそのまま投稿しても<br>がタグとして処理
されず、そのまま文字として表示されてしまい編集
画面の意味をなしえません。
改行させるための命令だといろいろと調べてわかっ
たのですが、挿入の仕方が悪く、反映されませんでした。
正しい改変の仕方をアドバイスいただきたく思います。
お願いいたします。
>>94
$i_photographer[$_] =~ s/<br>/\n/g; >>96
大感謝です!
きちんと表示されるようになりました。
スクリプトに目を通してくださってありがとうございました!
>>95
簡潔な書き方ができず、すみませんでした。 【CGI名】 T-bookmarkPlus Final
【配布先】 http://www.de-bug.net/ (閉鎖?)
【置き場所】 http://www.uploda.org/uporg465634.txt
【ヘルプ内容】
検索画面の分野(カテゴリ)表示部分で、「分類」(ジャンルコードの頭に「_」がつくもの。見出し
として扱われ、登録や検索の対象外になる)にあたる行(TD)だけデザインを変えて見やすく
したいと思っています。
デザインの変更方法などはわかるのですが、cgiのどの部分がジャンルコードの頭に「_」が付く
場合の表示指定なのかわからず作業が進みません…。
改造の質問といえるかどうか分かりませんが、cgiファイルをtxtでUPしておきますので、該当
部分を教えていただけないでしょうか。よろしくお願いします。
(恐らく491行〜530行のあたりではないかと思うのですが…) 【. CGI名 .】 nicky.cgi
【配布先URL】 http://www.din.or.jp/~raelian/ReadMeNicky.html
【 ヘルプ内容 】
カレンダー部分を、今日の日付の背景色を変えるようにしたい。
また、カレンダーを横一列で表示させたい。
上記のようにしてるnicky!ユーザーはまだ見たことがないのですが…
可能であれば教えてくださいm(_ _)m >101
>カレンダーを横一列で表示させたい。
この位の書き換えが解らないなら丸投げ向き。
再配布禁止。修正物も配布禁止になっているので回答は得られにくいよ。
両方ともレスしてくださりありがとうございました。
そして間違ってカキコした旨書けなくてすんません。
カレンダーの横一列、頑張ってなんとかしてみます。
今日の日付は保留で…とにかくありがとうございました。
【CGI名】 Webclap
【配布先】 http://guron.net/
【置き場所】 http://guron.net/document/dl/cgi/webclap.php
【ヘルプ内容】
UTF-8化しようとして拍手は送れるがコメントが送れない状態になっています。
全ファイルの文字コードをUTF-8にしてwebclap.cgiに以下の変更を加えました。
002 use open ":utf8"; を追加
059 "sjis" を "utf8" に変更
578 charset=shift_jis を charset=utf-8 に変更
603 charset=shift_jis を charset=utf-8 に変更
恐らく間抜けなことをしているのだと思いますが、よろしければご指摘下さい。 >>105
その置き場所って本当にお前がこのCGIを置いた場所か? >106
KCatch.pmで
[clap.cgi:226:warn] Wide character in print at
E:\www\koiyami\uru\clap\clap.cgi line 226, <out> line 21.
と出てくるので、とりあえず226行目に utf8::encode($tag); を追加してみました。
エラーは出なくなりましたがやはりコメントは送れないままでした。
>107
すみません【配布先URL】です。
コピペしてそのまま書き込んでしまいました。
>>109
特にCGIのエラーらしきものは見えないのですが、以下になります。
errors.log
Sun Oct 08 21:54:59 2006 Error Response 404
Thread 0(ID= 2892) to 127.0.0.1 for "/favicon.ico" CGI名■KENT WEBさんのYY-CHAT
配布場所■http://www.kent-web.com/chat/index.html
改造内容■同じくKENT WEBさんのWindyのように、YY-CHATをノーフレーム式(アイコン有)で表示したいのです。
YY-CHATの機能をそのまま使いたいので、YY-CHATを改造して、フレーム形式をノーフレーム形式に変換希望。
Windy、YY-CHATのソースを見比べてみたのですが、フレーム式からノーフレーム式への転換がやはり分かりません。
どなたかご存知の方、ご指摘いただければ幸いです。 リロードで書き込み中の下書きが消えちゃうけどいいのか?
お返事ありがとうございます。リロードは初期設定を手動にして、リロード設定部分を削除しますので、大丈夫です。
すぐにお返事が頂け、嬉しいです。宜しければご指導お願い致します。
↑追記↑要するに、フレーム非対応の携帯でも使えるようにしたいのです。
よく、携帯用のチャットは手動ですので大丈夫です。
【. CGI名 .】 PatiPati - Version 3.0 -
【配布先URL】 http://www.gnbnet.com/
【. 置き場所 .】 http://www.gnbnet.com/cgi/?mode=mail
【ヘルプ内容】
http://www.gnbnet.com/bbs/index.cgi?mode=view&seq=391
↑の人と同じことを思ったので質問させて下さい。
________________________________________________
拍手ボタンを押す→最初の画面が出る→後の画面はランダムに表示
という表示は可能でしょうか?
一番最初の画面だけ固定して、その後の画面をランダムにしたいのですが…
宜しくお願いします。
________________________________________________
の書き込みに、制作者は
________________________________________________
申し訳ありませんが、こういった要望に対応しているとキリがなくなりますので、
ご自分で改造などして対処してくださるようお願いします。
________________________________________________
と言っているのですが、どう改造すれば良いのかわかりません。
どうぞ宜しくお願いします。 <?php
echo "Hello World";
?>
これをWeb2.0風に改造してください。
一個前のレスも読めない君の亀田級の脳味噌には佐賀県庁の職員一同も心底がっかりだ。
何をどうやったらどう駄目だったのかを書いてアドバイスをもらうのがこのスレ。
それも理解できない丸投げ野郎はもう死んでいいよ。スレ違いを指摘するのもかったるい。
>>121さん、本当に申し訳ございませんでした。ご指摘頂き、ありがとうございます。
>>112の追記です。
自分なりにWindyより、見よう見まねでYY-CHATと引っ付けた、という感じとなってしまいました。このままでは無理だとは思いますが、どのように変更して良いかがわかりません。
基本設定以降が
http://www.geocities.jp/aokiaoki_332/yychat.html
です。
YY-CHATをWindyのように、ノーフレーム版(アイコン有り)で表示したいのです。
「Script Error」と表示されてしまいますので、宜しければご存知の方、ご指摘の程、お願いいたします。 >>124
つかWindyにアイコン表示つけたほうが速くないか?
yychatをノンフレームに改造するのは相当大変だぞ >>124
それは分かったからとっととエラーメッセージの詳細を出せやコラ。
まさかろくに動きもしない駄目スクリプトをローカルでチェックもせずにアップしてるのか? >>125さん>>126さん
早速のお返事ありがとうございました。
メイン処理部分の部分を一部変更して転送し直したところ、エラーメッセージは出ずに著作権部分しか表示されなくなっていました。
やはりWindyの方につけた方が良いのですね。助言ありがとうございました。
自分の知識不足ですので、また出直してまいります。
レス下さった方、本当にありがとうございました。 【. CGI名 .】 cmcboard.zip v0.23
【配布先URL】 http://cgi-lounge.eek.jp/
【ヘルプ内容】
先月未明からi-パラダイス(http://www.i-paradise.nu/)に設置してある、
サイト内コンテンツの一つであるアップローダーの記事投稿が不可能な状態です
PostModeでの記事投稿前の認証を試みますが、
パスワードを入力し認証ボタンを押した次の瞬間空白のページに(ソースを見たところ無記述)移動してしまい、
ファイルのアップロード自体が出来ず、
PostMode以外での投稿はファイルがアップロードされる直前に先述したページが表示され、
ファイルのアップロードが無効になってしまうという状態です
Check Modeでのcgiの動作確認も試しましたが、各種パーミッション設定・各種パス等には異常は見受けられませんでした
また、この事象と併発するかのように、以前は見られなかった携帯閲覧時の502エラーも見受けられます
試しに他のレンタルサーバーのアカウントを取得し、上記cgiの設置・動作確認を試みてみたところ、
特に問題なくPostModeでのログイン・ファイルのアップロード、通常のファイルアップロードが出来ました
続きです
管理元にその旨問い合わせを行ったところ、
>おそらく記事投稿前の認証時の不都合は広告挿入が邪魔をしていると
>思われますので、その処理の部分に<!--banner-->を挿入して
>広告の位置を変更してください。
><!--banner-->はHTMLの部分に記述しなければ有効になりませんので、
>CGIの処理の流れを見て頂く必要が御座います。
>目安として該当の認証を押した後の<BODY>が記述される直後か、
>更にいくつか下に設定されると良いと思います。
とのことでした
>その処理の部分に<!--banner-->を挿入 の部分の処理の手順が分からなく、今回質問を書き込んだ次第です
お願いします
>>134
つーかそもそも落とせなかったよ。古いし、他の探したほうがいいかも。 >>136
無理では無い気もするが
まぁとりあえず俺にはできない 最初は、日記のログに書き込む時に、頭に追記じゃなくて尻に追記する
ように考えてみたのだが・・・ログがぐちゃぐちゃになった。
次にJSへ出力する時に順を変えてみようとしたのだが・・・
「JSファイルに書き込みを〜回まで繰り返す」という処理になっていたので
出力する段階の配列をソートってわけに行かなかった。
>>142
置き場所つーのは『お前が』置いた場所だと何度言えばもうね。
…で、あんまちゃんと見てないけど、
外部JavaScriptへの出力ってkd_diary.cgiの800行目くらいからある部分のことかな。
だとしたら852行目の
print JS "document.write(\'$w_line\');\n";
で直接書き出す代わりに適当な配列に格納して、855行目の
close(JS);
の手前でまとめて吐き出せば良いんじゃないかな。
配列に格納する時に先頭にねじ込めば順番は逆になると思うが。 >>145
半分わかったような気がする。がんがってみる。ありがとん。 >>150
ひとつめ
投稿のたびにIPを記録して同じIPなら規制すればいい
ふたつめ
Location >>150ですが
説明不足でした。>>151さんすいません。
秒数で連続投稿規制をつけたいのです。
一回投稿したら、10秒は投稿できないようなものです。
よろしくお願いします。 >>153
それってなにか違反になったりしませんよね? 連続投稿規制をつけるほうほうがのってるサイトがあったら教えてください
そんなピンポイントな方法は需要から考えてもそのものずばりが見つかるとは思えんし
大人しく自分で処理を考えるべきだと思うよ。死ぬほど簡単だし。
実際に動作するサンプルだってそこら中にあるでしょ。
連投規制の処理がKENTの著作だとは知らなかったwww
PatiPati http://www.gnbnet.com/patipati/
メッセージを送るためのフォームです。
これによって出力されるHTMLを改造したいのですが、
どのようにいじればよいものかと悩んでいます。
メッセージの送信ページでは2つの項目を用意していて、
<input type="text" name="com">
このようなinputで名前を送信し、
<textarea name="sub1">
このようなtextareaでメッセージを送信するしくみにしています。
デフォルトの設定では"com"の内容のみ送信され、
"sub1"はユーザがオプションで設置するようにマニュアルで書かれています。
メッセージを送信すると、
送信された内容が以下のように出力されるようになってほしいのですが、
<dl>
<dt>(ここに、<input type="text" name="com">で送ったメッセージが入る)</dt>
<dd>(ここに、<textarea name="sub1">で送ったメッセージが入る)</dd>
</dl> 現状では以下のように出力されてしまいます。
<dl>
<dt>(ここに、<input type="text" name="com">で送ったメッセージが入る)
<dd>(ここに、<textarea name="sub1">で送ったメッセージが入る)</dd></dt>
</dl>
index.cgiを改造すれば解決できそうだということは予想がついていて、
70〜80行目あたりの「$QUERY{'com'}」や、
「$msg」あたりをいじれば解決できるだろうと思うのですが…。
なお、現在はそのへんを以下のように書いています。
$QUERY{'com'} .= "\n<dd>$QUERY{$wk}<\/dd>";
$msg = "<dl>\n<dt>$QUERY{'com'}<\/dt>\n<\/dl>";
CGIの知識はまったくないので、このへんをどのようにすればよいのかわかりません。
あと一歩でなんとかなりそうなので、
どなたかお力を貸していただけるとうれしいです。
バージョンを書き忘れました。すみません。
2006/11/18 Ver3.2 です。
ついでに書いておきますと、
メッセージの送信ページのフォームは以下のように書いています。
<dl>
<dt>名前</dt>
<dd><input type="text" name="com" value="名前" size="40"></dd>
<dt>メッセージ</dt>
<dd><textarea name="sub2" cols="20" rows="4">メッセージ</textarea></dd>
<dt>返信不要ならばチェックしてください。</dt>
<dd><input type="checkbox" name="sub1" value="返信不要">返信不要</dd>
<dt>送信ボタン</dt>
<dd><input type="submit" name="submit" value="送る"></dd>
</dl>
そこまで分かればもう一歩だったのにな。
$QUERY{'com'} .= "\n<dd>$QUERY{$wk}<\/dd>";
$msg = "<dl>\n<dt>$QUERY{'com'}<\/dt>\n<\/dl>";
を
$QUERY{'com'} .= "<\/dt>\n<dd>$QUERY{$wk}<\/dd>";
$msg = "<dl>\n<dt>$QUERY{'com'}\n<\/dl>";
にしてみそ。
>163
どうもありがとうございます。
最初に謝らなければなりません。
>161でname="com"とname="sub1"についてのことを書きましたが、
>162で書いた通り、「返信不要」のオプション(name="sub2")をつけております。
$QUERY{'com'} .= と $msg = を>161のように設定しているときは
name="sub1"とname="sub2"の送信内容に問題がなかったので、
以下のように例文を端折って書いたのですが…。
<dl>
<dt>(ここに、<input type="text" name="com">で送ったメッセージが入る)</dt>
<dd>(ここに、<textarea name="sub1">で送ったメッセージが入る)</dd>
</dl>
>163さんの設定だと
<dl>
<dt>(ここに、<input type="text" name="com">で送ったメッセージが入る)</dt>
<dd>(「返信不要」にチェックを入れた場合のみこの行が入る)</dd></dt>
<dd>(ここに、<textarea name="sub1">で送ったメッセージが入る)</dd>
</dl>
このように「</dt>」が余計になってしまいました。
なお、name="sub2"にチェックしなかったときは希望通りになりました。
せっかく考えていただいてたいへん申し訳ないのですが、
必要な情報をすべて書かなかった私の失敗です。申し訳ございません。
「返信不要」の項目とメッセージを同時に送信しても
「</dt>」が入らなければよいのですが、そのような方法はありますか?
name="com"の内容を「○○」、name="sub1"の内容を「○○」などと、
各nameごとにHTMLのタグを書ければ都合がよいのですが、
元のソースがそういう仕様ではないようなので惜しいです。
もし不可能であれば、「返信不要」のチェックを使用することはあきらめて、
>163さんが書いてくださったものをそのまま使用したいと思います。
あと、>164で『、「返信不要」のオプション(name="sub2")』と書いてしまいましたが、
正しくは、「返信不要」がname="sub1"で、メッセージがname="sub2"でした。
CGIの仕様で、もともとはメッセージをname="com"として送信するしくみになっているので、
そのへんの順番をいじったため、まぎらわしい文章になってしまいました。
ループの前に
$QUERY{'com'} .= "<dt>$QUERY{'com'}<\/dt>\n";
でループの中に
$QUERY{'com'} .= "<dd>$QUERY{$wk}<\/dd>\n";
でループの後に
$msg = "<dl>\n$QUERY{'com'}\n<\/dl>";
でどうよ。
オリジナルのソースと照らし合わせてみたところ、
現在のソースもオリジナルと行番号が同じになっているので、
オリジナル版のソースの行番号を合わせて書きます。
>166
どうもありがとうございます。
「ループの前」というのは、
if($QUERY{$wk} ne ""){}(line69〜)の外側という意味ですよね?
「while($i <= $sub_su){」(line67)と「if($QUERY{$wk} ne ""){」の間に
$QUERY{'com'} .= "<dt>$QUERY{'com'}<\/dt>\n";(>166)を書いてみましたが、
<dt>〜</dt>が何度も出力されてしまいます。
$QUERY{'com'} .= "<dd>$QUERY{$wk}<\/dd>\n";(>166)はline73のそれに置き換え、
$msg = "<dl>\n$QUERY{'com'}\n<\/dl>";(>166)もline79のそれに置き換えてみましたが、
<dd>も同様に、何度も出力されてしまいました。
何でifがループなんだよ。
ループはそこのwhileだっての。
>168
どうもありがとうございます。助かりました。
Proxomitronでグローバル変数の使い方を習っていたので、
それを応用することでとりあえず解決しました。
if($bk_ck == 0){(line65)の中に
$QUERY{'total'} .= "<dt>$QUERY{'com'}<\/dt>"; を挿入し、
その後の$QUERY{'com'}をすべて$QUERY{'total'}に書き換えることで解決しました。
これで問題なければよいのですが…。
それそもそも動いてるのか?
あとエラー出てるならエラー文書けや
>>170
それはぼくにいってるんですかね?
10秒規制を付けたいんですが
いつ投稿しても「連続投稿は禁止です。」とでます。 >>170
そんな部分的な変更点(しかも文法がおかしい)だけ見せられてもな
おまえ自身よくわかってなさそうだし、現時点でのソースどこかにupして晒せ 【. CGI名 .】 切って出し日記 Ver2.5
【. 置き場所 .】 http://wws.cside.com/cgi-plant/
【ヘルプ内容】
改造するのはkd_diary.cgiです。
1ページの表示と過去ログへの移行を、設定した件数ごとではなく
月ごとにしたい。
しかし・・・私の改造では、翌月の投稿をしても動作しませんでした。
※ちょうど年も変わりますしね。
やってみたのは、このCGI内の
##########################################
# ログデータ書きこみ
##########################################
の部分。
以下の部分を・・・
if($LOGDATA >= $pagemax) {
$log_data = pop(@LOGDATA);
if($logmax >= 0) {
($l_date,$l_comment,$l_face,$l_weather,$l_color_1,$l_color_2,$l_title,$l_time,$l_min) = split(/<>/,$log_data);
$log_name = $logdir .'/'. substr($l_date,0,4) . substr($l_date,4,2) . '.log';
open(OLD,"$log_name");
@oldLOG = <OLD>;
close(OLD);
unshift(@oldLOG,"$log_data\n");
sort sorter1 @oldLOG;
open(OLD,">> $log_name")|| &error('過去ログファイル/ディレクトリ異常');
print OLD @oldLOG;
close(OLD);
}
}
if($logmax > 0) {
opendir(DIR,"$logdir") || &error('過去ログ格納ディレクトリがありません');
@dirent = grep(/[0-9]+\.log/,readdir(DIR));
@dirent_s = sort(@dirent);
@dirent = reverse(@dirent_s);
closedir(DIR) ;
if($dirent >= $logmax) {
unlink ("$logdir\/$dirent[$dirent]")|| &error("過去ログ($logdir\/$dirent[$dirent])が削除できませんでした");
}
}
$log_data = pop(@LOGDATA);
($l_date,$l_comment,$l_face,$l_weather,$l_color_1,$l_color_2,$l_title,$l_time,$l_min) = split(/<>/,$log_data);
#新規投稿データ↓
($n_date,$n_comment,$n_face,$n_weather,$n_color_1,$n_color_2,$n_title,$n_time,$n_min) = split(/<>/,$line);
#現在のログの月を取得
$olddate = substr($l_date,4,2);
#新規投稿データから月を取得
$newdate = substr($n_date,4,2);
#現在の月より、ログの方が大きかったら・・・。
if($olddate < $newdate){
$log_name = $logdir .'/'. substr($l_date,0,4) . substr($l_date,4,2) . '.log';
open(OLD,"$log_name");
@oldLOG = <OLD>;
close(OLD);
unshift(@oldLOG,"$log_data\n");
sort sorter1 @oldLOG;
open(OLD,">> $log_name")|| &error('過去ログファイル/ディレクトリ異常');
print OLD @oldLOG;
close(OLD);
}elsif($olddate eq '12' && $newdate eq '1'){
#もし投稿されたのが1月で、直前の月が1月なら。
$log_name = $logdir .'/'. substr($l_date,0,4) . substr($l_date,4,2) . '.log';
open(OLD,"$log_name");
@oldLOG = <OLD>;
close(OLD);
unshift(@oldLOG,"$log_data\n");
sort sorter1 @oldLOG;
open(OLD,">> $log_name")|| &error('過去ログファイル/ディレクトリ異常');
print OLD @oldLOG;
close(OLD);
}
#ここまで
あ・・・ミスったorz
>>180+>>181に変えた、ということです。
エラーなどはないのですが、
月が変わったことによる現行ページの更新ができないまま
それまでのログにそのまま追加されてる感じです。 【. CGI名 .】 レス付き画像掲示板 imgboard
【. 置き場所 .】 http://www.big.or.jp/~talk/t-club/soft/mini_r6/index.cgi
【ヘルプ内容】 掲示板への投稿が一定数以上なければ、閲覧することが
できない制限をつけたいのですが、わかりません。
(来訪者の割りに投稿者が少なく、DOMを減らしたいため)
Perlコーディング初心者質問スレ Part 53 ⇒改造スレへ誘導されました。
↓こんなのを考えてみましたが、どのあたりに置いたら良いのかわかりません。
(書込みルーチンが長すぎて)
##### 投稿数をcookieに保存する #####
&read_cookie# cookie読込(imgboardルーチン)
$post_count = $COOKIE{'imgboard_post'}
$new_post_count = $post_count++;#投稿数を1つ加算する
# 有効期限を30日間に指定
($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime(time + 60*60*24*30);
@mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$date = sprintf("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT",
$week[$wday], $mday, $mons[$mon], $year+1900, $hour, $min, $sec);
print "Content-type: text/html\n";
print "Set-Cookie: imgboard_post =$new_post_count; expires=$date; \n";
-----------------------------------------------------------
##### 2回以上投稿があれば、掲示板の中身を表示する #####
&read_cookie# cookie読込(imgboardルーチン)
$post_count = $COOKIE{'imgboard_post'}
if ($post_count > 1) {# 2回以上投稿あるとき、
&top_html;# ヘッダ表示(imgboardルーチン)
&output_form_html;# 投稿画面を表示(imgboardルーチン)
&output_html("$file");# 掲示板を表示(imgboardルーチン)
} else {
&top_html;# ヘッダ表示(imgboardルーチン)
&output_form_html;# 投稿画面のみ表示(imgboardルーチン)
}
【. CGI名 .】 Web Board Professional http://www.web-liberty.net/download/boardpro/index.html
(ただし、Ver.2.27です。最新はVer.3.15)
【ヘルプ内容】 転送アドレスを利用した上でクッキーを有効にしたい。
無料の転送アドレスを取得し、本来のアドレスを隠していますが、
そうするとクッキーが利かなくなってしまいます。
クッキーがリファラを記憶し、照合しているため、転送アドと不一致となり、無効となっているようです。
以下がクッキー関連の処理部分です。
どうかお知恵をお貸しください。
sub get_cookie {
local($cookie_id) = @_;
local %all_cookies = ();
foreach (split(/; /, $ENV{'HTTP_COOKIE'})) {
local($key, $value) = split(/=/);
$all_cookies{"$key"} = $value;
}
foreach (split(/&/, $all_cookies{"$cookie_id"})) {
local ($key, $value) = split(/:/);
$value =~ s/&/&/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/"/"/g;
$cookie{&unescape($key)} = &unescape($value);
}
return %cookie;
} 続きです
sub set_cookie {
local(*cookie, $cookie_id, $hold_days) = @_;
if (time() > $cookie{'refresh'} + 60 * 60 * 24 * 30) {
$cookie{'refresh'} = time();
}
local @pairs = ();
foreach (sort keys %cookie) {
push(@pairs, &escape($_) . ':' . &escape($cookie{"$_"}));
}
local $new_cookie = join('&', @pairs);
local $date = &gmt_date(time + 60 * 60 * 24 * $hold_days);
if ($new_cookie ne $all_cookies{"$cookie_id"}) {
print "Set-Cookie: $cookie_id=$new_cookie; expires=$date\n";
}
return;
}
>>186
クッキーは異なるドメインは参照できない。
それに本来のアドレスを隠すといっているが、ばればれ。
とくにフレーム転送とか。 >>188
根本的にダメなんですね。ありがとうございました。 【. CGI名 .】 askabbs
【配布先URL】 http://www.kent-web.com/
【. 置き場所 .】 http://www.kent-web.com/
【ヘルプ内容】
・投稿する本文に半角カタカナがあったらエラーメッセージを出したい。
・しかし「・」など、カタカナ以外はエラーにならないようにしたい。
本文を一旦EUCにして半角カタカナの有無を判定させるのはググればコードがあったので
以下のように書いてOKでした。
が、「・」が半角の場合までエラーになってしまいます。
カタカナ以外を半角カタカナと認識させないというのは、できないものでしょうか?
&jcode'convert(*message, "euc");
if ($message =~ /\x8E/) {&error("ERROR<br>半角カタカナが含まれています");}
&jcode'convert(*message, "sjis");
>>193
海外からのスパム投稿なら、日本語を含まない投稿を遮断したら? 【. CGI名 .】HiddenCounter Model4(隠しカウンタ/ダウンロードカウンタスクリプト)
【配布先URL】http://www.chitta.com/nobu/download/
【. 置き場所 .】http://up.spawn.jp/file/up64354.txt.html
【ヘルプ内容】
<a href="hcnt4.cgi?カウンタ名@ファイルURL">ダウンロード</a>
のように呼び出してカウントさせるダウンロードカウンタです。
ログの閲覧(hcnt4.cgi?パスワード)ページには、カウンタ名とヒット数だけが載ります。
そのログの閲覧ページで、ファイルURLをカウンタ名にリンクさせる形で表示したいのですが、方法が分かりません。
カウンタ名は「$name」、ファイルURLは「$Url」、ヒット数は「$value」になっているみたいなので、単純に
<a href="$Url">$name</a>
としたのですが、設置ディレクトリがリンクされるだけで、ファイルURLをリンクさせる事ができませんでした。
どうすればファイルURLをリンクさせる事ができるのか、アドバイスを頂けないでしょうか。宜しくお願い致します。
※テスト環境ではパスワード($Password)は「1234」としています。 重複申し訳有りません。
丸投げスレに依頼しましたのでそちらの方でお願い致します。
>>198
hcnt4.datの中身見れば分かると思うけど、
そのスクリプトはカウンタ名とダウンロード回数しか記録していない。
集計モードではファイルの置き場所が分からないのでそれを表示なんて無理。
どうしてもこのカウンタにこだわるのなら
ダウンロード回数をカウントする際にダウンロード先のURLも合わせて記録するようにすれば
一応おまいのやりたかったことも実現できるけど、
おまいの腕なら改造するよりそういう機能を持った別のCGIを探した方が早いだろう。 >>205
レスありがとうございます。
>ダウンロード回数をカウントする際にダウンロード先のURLも合わせて記録する
にチャレンジしていたのですが、自力では無理そうです。
私はこのCGIを気に入っていたのですが、変に改造して不具合が出ても困りますし、(今更ですが)別のものを探した方が早いと思うので、諦めて他に乗り換えます。
アドバイスありがとうございました。 当然ここで聞く前にKENTのサポート板でも聞いたよね?
そこでは何と言われたのかな?
>>207で記述した過去ログを参考にしてみろと言われましたが、
やっぱり上手く行かなかったのでこちらに質問に来ました… KENTのサポート板でちゃんと「言われた通りに過去ログを参考にしてみたけど
やっぱり分かりませんでした」と言ったんだよね?
そこまではしませんでした…!
また新にスレッドを作成して聞いてみたいと思います><
厳しいご対応ありがとうございました。
ご迷惑お掛けしてしまい申し訳ございませんでした。
新しいスレッドじゃなく今のスレッドに続けてレスで書いた方がいいんじゃないかと思うんだが・・・
質問の内容は続いてるのに、いちいちスレッド立てられたら禿しくウザイよ。
KENTのサポート板覗いたことないからどういう構造になってんのか知らんけどさ。
自己解決しました。アクセル解析してif文で振り分けますね。
自分でできました!
やる気だせばタグを追加すればいいだけで簡単でした。
死ね糞ども。
kent webにあるWEB PATIOの掲示板でスレッドの返信数を多くしたいので
すが(1000くらい)。
普通に返信数の設定を1000に変えるだけで問題はありませんか?
それともSQLとかデータベースを使ったほうがいいですか?
知らんがな。サーバ運営に聞けよ。
まあマジレスするとたかだか1000件程度ならデータベースはいらんと思うけどな。
アイコンを1つだけ選択して表示するためのルーチンを改造し
複数選択して表示できるようにしたいのですが
アドバイスいただけますでしょうか。
ラジオボタン式からチェックボックス式に変えてみましたが、
当然というか、それだけでは複数表示できませんでしたorz
以下、そのルーチン部分です。
sub icon_select {
unshift(@icon_image,"");
if($icon eq ""){ $icon = $icon_image[0]; }
$sel = "";
foreach $ico (@icon_image) {
if($ico ne ""){ $ico_img = "<img src=\"$icon_dir$ico\" align=\"absmiddle\">"; }else{ $ico_img = "なし"; }
if($ico eq $icon){ $sel .= "| <input type=\"radio\" name=\"icon\" value=\"$ico\" checked>$ico_img \n";}
else{ $sel .= "| <input type=\"radio\" name=\"icon\" value=\"$ico\">$ico_img \n";}
}
$sel .= " |\n";
return $sel;
}
>>221
同じnameで複数の値を送信する用に改造したい場合、
・値を受け取るところで、値を変数に入れている部分を複数の値を配列に入れる改造が必要である。
・アイコンを表示する部分では配列に入った分だけ表示されるように改造する必要がある。 >>222
アドバイスありがとうございます。
教えていただいた事を参考に改めて挑戦してみます。 長くなってしまったので続きます。
関係部分はこんな感じです。(html.plの590〜672行あたり)
if(@iconu1){
$facemark = $facemark."<optgroup label=\"〜登録アイコン〜\">";
}
foreach (0 .. $#iconu1){
$icon_value = $icon_url . "\/" . $iconu1[$_];
if (!$icon) { $icon = $icon_value; }
if ($icon eq $icon_value) {
$iconch = " selected";
} else {
$iconch = "";
}
$facemark = $facemark."<option value=\"$icon_value\"$iconch>$iconv1[$_]\n";
}
if(@iconu1){
$facemark = $facemark."</optgroup>\n";
自分でも色々遣ってみたのですが配列が二重だからか、
ソート関数の使い方が今ひとつ要領を得なかったので此方で質問させていただきました。
宜しければどなたかご教授願えませんでしょうか?
とりあえず自分でどう書いてどう動かないのか言ってみ?
sendmailについてお聞きしたいのですが
open(DATA,'| /usr/sbin/sendmail -t "[email protected]"');
これなら通るのですが
$mlto="[email protected]";
open(DATA , '| /usr/sbin/sendmail -t $mlto');
これだと通らないで困っています。
目的はログイン制CGI内部でメンバの特定人物指定によるメッセージ機能で
メッセージが入るとmsnメッセンジャーや携帯メールにお知らせするためのものです
サーバーは個人運営してるところでお借りしているのですがそちらに問い合わせる
前にこちらで相談してからと思いました。基礎を知らないものですみません。
アドバイスがあればよろしくお願いいたします。 >>229
そうでした。忘れてました。ご指摘ありがとうざいます。
ダブルクォートで試してみましたがダメでした。
open(DATA , "|$mailer -t $mlto");も検索して見つけた次行
open(DATA , "|$mailer -t '$mlto'");もダメでした。
open(DATA , "|$mailer -t");print・・・; print DATA "To :$mlto";もダメでした。
一応一通り試してみたのですが自分では解決できそうにありません。
なにかアドバイスがあればよろしくお願いいたします。 >>231
言われる前に一通り試したのですがダメだったので相談しにきたのですが
止めろと言われるなら素直に借りてるサーバの管理者に相談します。
ありがとうございました。 【. CGI名 .】KENT SUN BOARD(HTMLボード) Ver: 3.9
【配布先URL】http://www.kent-web.com/bbs/sunbbs.html
【ヘルプ内容】携帯には対応してはいませんが、文字サイズを小さくしたりして
一応携帯からも表示できるようにしました。
そこで、携帯から書き込みをした時に機種名を表示させたいのですが、
とりあえず時間取得の変数に混ぜて表示させてました。
日時のあとに DoCoMo/2.0 N903i(c100;TB;W24H12) このように表示されるのですが、
このN903iの部分だけ表示させるにはどうしたらよいでしょうか?
改造した部分も書いたほうがいいでしょうか? >>234
そこまでできたならperl板行った方が…
正規表現で
^DoCoMo.* (.*)\(.+$
で\\1をとればいいんじゃないかな。
>>235
ありがとうございます。
web製作板から誘導されてきたもので。
箇所を書きます。できればここにその形で修正を施してくれればありがたいです。
#-------------------------------------------------
# 時間取得
#-------------------------------------------------
sub get_time {
local($date,@week);
$ENV{'TZ'} = "JST-9";
local($min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[1..6];
@week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
# 日時のフォーマット
if ($whatsnew) {
$date = sprintf("%04d-%02d-%02d (%s)",
$year+1900,$mon+1,$mday,$week[$wday]);
} else {
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
$year+1900,$mon+1,$mday,$week[$wday],$hour,$min);
# UA記録
my $ua = $ENV{'HTTP_USER_AGENT'};
if ($ua =~ /^L-mode/) {
$ua = 'L-mode';
} elsif ($ua =~ /^Mozilla/){
$ua = 'PC';
}
$date .= " $ua";
# UA記録終了
}
$date;}
こんなかんじで後は$dateをログ生成の適当なところに書き加えてました。
正直今までプログラミングやったことがないので、何度もコピペしたりテストしたりして
と、まるっきり初心者です。
何度も携帯機種表示は試したのですがまるっきり。
もしあれならばperl板に誘導していただければ。
>>239
if ($ua =~ /^L-mode/) {
$ua = 'L-mode';
} elsif ($ua =~ /^Mozilla/){
$ua = 'PC';
} elsif ($ua =~ /^DoCoMo.* (.*)\(.+$/) {
$ua = $1;
}
# 禁止ワード(いくつでも追加可能)
#例 ('死ね','淫乱','援助交際','docomo')
#新規登録時の名前 タイトル メッセージ ホストに適用。
@input_deny = ('死ね','','');
##--禁止ワードチェック--##
foreach (@input_deny) {
if ($in{'name'} =~ /$_/i) { &error("名前に禁止ワードが含まれています。"); }
if ($in{'title'} =~ /$_/i) { &error("タイトルに禁止ワードが含まれています。"); }
if ($in{'comment'} =~ /$_/i) { &error("メッセージに禁止ワードが含まれています。"); }
}
これを追加するとエラーになってしまうのです。
何か足りないのでしょうか?
#■投稿禁止ワード ""で囲って記入 複数設定する場合は『,』で区切ってください
# 設定した文字列が名前かメッセージに含まれる場合、投稿できません
# 必要ない場合は()
@deny_words = ("アダルト","エロ");
foreach $d_words (@deny_words) {if ($title =~ /$d_words/i) {&error("名前に投稿できない言葉が含まれています");} }
foreach $d_words (@deny_words) {if ($message =~ /$d_words/i) {&error("メッセージに投稿できない言葉が含まれています");} }
これは違うスクリプトですが、
これだけでもできますか??
他のあとにココ見つけたのですよ。ですから他には1つだけです。以下続き。
#####イタズラ投稿防止設定
# リモートホスト(またはIPアドレス)での投稿拒否
#ppp123.abc.or.jp などの場合は、数字の部分がアクセスのたびに異なるので
#数字の部分を .* (ピリオド+アスタリスク)に置き換えます。
#@deny = ('ppp.*.abc.or.jp','web.net'); #などと設定します。
@deny = ();
# 投稿記事内容にふさわしくない語句の禁止
# @word = ('セックス','エッチ','スカトロ','test', 'あああ','馬鹿');#などと設定。
@word = ();
#投稿拒否
sub deny {
foreach (@deny) {
if ( $host =~/$_/ ){ &error(1,"あなたの投稿は許可されてません。"); }
}
}
#禁止ワードチェック
sub wordcheck {
local($string) = $_[0];local($line);
foreach $line(@word) {
if (index($string,$line) >= 0) {
&error(1,"$line<BR>使用禁止の文字が使われているようです。");
}
}
これでは?
うー、ページがエラーにならず書き込みができたのは以下だけですが、
禁止設定が働かない。何が足りないのでしょうか??
#■投稿禁止ワード ""で囲って記入 複数設定する場合は『,』で区切ってください
# 設定した文字列が名前かメッセージに含まれる場合、投稿できません
# 必要ない場合は()
@deny_words = ("アダルト","エロ");
foreach $d_words (@deny_words) {if ($title =~ /$d_words/i) {&error("タイトル名前に投稿できない言葉が含まれています");} }
foreach $d_words (@deny_words) {if ($comment =~ /$d_words/i) {&error("メッセージに投稿できない言葉が含まれています");} }
もう寸前まで出来てる気がする・・・
エラーは毎回Internal Server Errorと出ます。
鯖のログには何も。。掲示板のエラーログはありません。
やはり無理なのかな・・・orz
ランキング2つ、掲示板1つをムーバブル・タイプの中に設置、
ベーシック認証も設置できたのに、このカスタマイズで初挫折。
やはりカスタマイズは難しいですね。
ちなみに、CGIも巡り会って1週間の初心者です。
ローカルにサーバも立てられない餓鬼にCGIなんてまだ早い。
>>243には絶対無理なので受精卵からやり直すように。 なんだよ。結局誰も答えられないのかよ。
糞スレ終了だなwww
マルチポストしてなけりゃ、ヒントくらいは教えてやってもいいかと思ったんだけどねえ
3回も同じものを読まされたらそんな気は失せる
何で教えてもらう側の態度ってのが出来ないのかねぇ
わけのわからん売り言葉見てると折角のモノも書く気も起きん
ソースコピペなり何なりで同じようにすればいいわけだが
どこでつかえてるんだ?
Linuxの自宅サーバー(apache)とレンタルサーバーならば問題なく使用できるのですが、
Windowsの自宅サーバー(apache)だとどうしても、投稿の際の名前の欄が、
二度目から文字化けをしてしまいます。
Windowsの設定だとはじめは思いましたが、KENTさんの掲示板の場合
Windowsでも問題なく使用できているため、以前、セキュリティーなどの問題を指摘されましたが
結局Linuxを使用することになっていたので放置してました。
しかし、今回どうしてもWindowsで使用したいために質問させていただきました。
もし、よろしかったら、何行目をどのように訂正すれば良いのかご教授願えたら幸いです。
100%とは言えないです。
ただ、すばらしいCGIなのでどうにかWindowsで
使用したいです。
一応↓が結果です。
『Anthologys』
○ 自宅サーバーLinuxアパッチ
○ レンタルサーバー
× 自宅サーバーWindowsアパッチ
『KENTさんのCGI』
○ 自宅サーバーLinuxアパッチ
○ レンタルサーバー
○ 自宅サーバーWindowsアパッチ
それから、なぜCGI側に問題があるかというと、
以前質問して指摘されたことがありました。
他に、CGIのことはあまりくわしくありませんが、
他のCGIが、Windowsで使用できる場合、
設定でどうにかなるのではないかと思ったからです。
>>256
Windows+Apache2ならそうなるので、
・クッキーをエンコード・デコードする。
・Apache1系を使う。
のどちらか。
CGI上で、
男性の画像をotoko.gif、女性の画像をonna.jifとした場合、
それぞれのページにあった画面を表示させる方法を教えてもらますか?
実際の処理のところに<img src="otoko.gif">を挿入すると、
女性の方にも表示されてしまいます。
【 CGI名 】 Anthologys
【 配布先URL 】 http://www2s.biglobe.ne.jp/~yasuu/cgi2.html
【 利用規約(改造OK確認)】http://www2s.biglobe.ne.jp/~yasuu/cgi1.html
【 依頼内容 】 ↑の掲示板(Anthology)に投稿するときの
名前のクッキー保存をKENTさんとこと同じようにしてほしい。
理由は自宅サーバーWindowsのApache2での掲示板に名前を保存すると、
文字化けするからです。尚、自宅サーバーLinux、レンタルサーバー、
自宅サーバーWindowsでのApache1系ならば正常にクッキー保存されます。
(Windows1系は確認しておりませんが、>>261 さんを参考にさせていただきました。)
>>261 さんの言われたように、
記事を投稿するさいの名前のクッキーをエンコード・デコード出来るように、
CGIスクリプトの
何行目をどのように変更したらよいかよろしくお願いします。
これを応用できませんか?
男性は0、女性は1となっています。
if ($in{'sex'} eq "0" && $color eq "defwruto") { $color = "$boy_color"; }
elsif ($in{'sex'} eq "0" && $color eq "") { $color = "$boy_color"; }
if ($in{'sex'} eq "1" && $color eq "defwruto") { $color = "$girl_color"; }
elsif ($in{'sex'} eq "1" && $color eq "") { $color = "$girl_color"; }
上の書き込みの画像を表示させる位置に・・・うーん、、お願いしまつ
>>262
if ($in{'sex'} eq "0") {
$src = 'otoko.gif';
} elsif ($in{'sex'} eq "1") {
$src = 'onna.gif';
} else {
$src = 'okama.gif';
}
独自でできたよ。
###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
## SUB >>> ユーザー出力処理
###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub member_view {
if ($in{'sex'} eq "0") { $word_color = "$boy_color"; }
elsif ($in{'sex'} eq "1") { $word_color = "$girl_color"; }
↑この部分を見て男女のページの色を区別してるんだから、
これに画像を当てはめれば良いんだと分かった。
下の方に→$word_colorがあったから。
んで、こうやって
if ($in{'sex'} eq "0") { $image = "image/otoko.gif"; }
elsif ($in{'sex'} eq "1") { $image = "image/onna.gif"; }
実際に画像を表示させる場所に、
<img src="$image" align="left">を入れたらできた!
俺って天才だ!
あ、
>>266さん教えてくれたんですね。
わざわざ有難う。でもできたよ。^^)/ 【 CGI名 】 Anthologys
【 配布先URL 】 http://www2s.biglobe.ne.jp/~yasuu/cgi2.html
【 利用規約(改造OK確認)】http://www2s.biglobe.ne.jp/~yasuu/cgi1.html
【 依頼内容 】 ↑の掲示板(Anthology)に投稿するときの
名前のクッキー保存をKENTさんとこと同じようにしてほしい。
理由は自宅サーバーWindowsのApache2での掲示板に名前を保存すると、
文字化けするからです。尚、自宅サーバーLinux、レンタルサーバー、
自宅サーバーWindowsでのApache1系ならば正常にクッキー保存されます。
(Windows1系は確認しておりませんが、>>261 さんを参考にさせていただきました。)
>>261 さんの言われたように、
記事を投稿するさいの名前のクッキーをエンコード・デコード出来るように、
CGIスクリプトの
何行目をどのように変更したらよいかよろしくお願いします。
>>268
それ$in{'sex'}が0でも1でもない場合を想定できてないぞ >256,263,269
何度も同じコピペを繰り返すような迷惑なクズの依頼は断わる!
>>268
オカマを選択させる余地はありませぬ!w
自作掲示板完成まであと少しです。
最後に、
NGワードを外部ファイルで呼び出してチェックさせる秘儀を伝授して下さいマセ、殿!
レス間違え失礼
>>266
>>271
オカマを選択させる余地はありませぬ!w
自作掲示板完成まであと少しです。
最後に、
NGワードを外部ファイルで呼び出してチェックさせる秘儀を伝授して下さいマセ、殿!
>>274
問題をはき違えてるな。
読解力の無い奴にゃ教える気もおきねーや。 【 CGI名 】 Anthologys
【 配布先URL 】 http://www2s.biglobe.ne.jp/~yasuu/cgi2.html
【 利用規約(改造OK確認)】http://www2s.biglobe.ne.jp/~yasuu/cgi1.html
【 依頼内容 】 ↑の掲示板(Anthology)に投稿するときの
名前のクッキー保存をKENTさんとこと同じようにしてほしい。
あるいは、文字化けしないように設定してほしい。
理由は自宅サーバーWindowsのApache2での掲示板に名前を保存すると、
文字化けするからです。尚、自宅サーバーLinux、レンタルサーバー、
自宅サーバーWindowsでのApache1系ならば正常にクッキー保存されます。
(Windows1系は確認しておりませんが、>>261 さんを参考にさせていただきました。)
>>261 さんの言われたように、
記事を投稿するさいの名前のクッキーをエンコード・デコード出来るように、
CGIスクリプト↓
http://umikaze.mydns.to/anthologys.txt
の (1930行目あたりだと思われます。。)
何行目をどのように変更したらよいかよろしくお願いします。
すみません、複数のフォルダを指定する方法もお願いします。
>>280さん
まだ見てるか知らんけど・・・
↓こんなんでいいのかな?
http://sv1.jp/2ch/g_album_c1/
> 画像ごとに異なるコメントを出したい
「画像のファイル名.txt」のファイルを置いておくと、
コメントとして表示するようにしてみますた。
> 画像へのリンクを任意の文字列にしたい
意味がわかりませんですた。
> トップに画像とコメントを表示したい
トップとかの概念が無いような気もするけど、設定できるようにしてみますた。
コメントは同じく「画像のファイル名.txt」で表示されます。
> 複数のフォルダを指定する方法もお願いします。
index.phpの設定んとこで対象フォルダを指定できるようにしてみますた。
↓ソース
http://sv1.jp/2ch/g_album_c1/g_album_c1.zip
注意点
・設定のとこいくつか増えてるんで確認してください。
・複数フォルダのせいで、ファイル名でソートが曖昧です。
フォルダ名も含めてソートしてるかも。
・あんま確認してないんで、おかしいとこあったらごめんちゃい。
久しぶりに書き込んだらageてもたorz
ごめんちゃいorz
で、どこまでやってどこで躓いてる?
言っておくがここは丸投げできるスレじゃないぞ
とりあえず、189行目から323行目と1061行目から最後までをいじれば良いと思うのですが
それ以上はあんまり解りません
GMazvB name is Kostya.My nick is Zold . I want to find friends .ICQ 324600825
【. CGI名 .】Variable Board Ver.1.06
【配布先URL】http://dream.lib.net/room/
【ヘルプ内容】携帯端末の書き換えについて
CGI自体は携帯端末対応なのですが、端末情報が少し古いようで現在での対応が一部できません。
variable.cgiの255行目「端末チェック」部分、
「ASTEL」の項は「KDDI」に変えてauへの対応はできたのですが、
Softbankが現在「J-PHONE」「Vodafone」「SoftBank」の三つがUAとしてあり、
そのうちJ-PHONEにしか端末チェックがなされてません。
「Vodafone」と「SoftBank」がSoftBank端末アクセスの8割を占めているので
両方も端末チェックに加えたいのですが、安易に項目を増やしてみたところ
やはりというか何というかUA偽装でチェックしてみても無理でした。
VodafoneがUAの場合、KDDI同様「UP.Browser」がありましたのでそれで出来るかと思ったんですが、
「UP\.Browser」と入れてみても対応はできませんでした。
もし良い方法がありましたら教えてください。 >>292
検索して調べれば判る事は自分で調べなさい!アホ
263行目を
$user_agent =~ /^J-PHONE|^Vodafone|^SoftBank/
に変更すれば判別出切る筈です。 >>295
掲示板とかについてる記事の番号です。
一つの記事ごとに番号を付けたいんです。 【 CGI&PHP名 】 簡易コメント ver1.0
【 配布先URL 】 http://nurupo.biz
【 依頼期限 】 1週間以内
【 依頼内容 】
>>1みたいにアンカー機能を付けて頂きたいです
75行目 my $max = @DATA;
76行目 my $res_no = undef;
96行目と97行目の間に追加 $res_no = $max - $i + 1;
97行目 print "[$date] $res_no. $text\n";
を追加でレス番号が付くのはわかったんですけど
正規表現が分からないので、調べられません(ToT) >>294
日本語で失礼。
投稿内容をログファイルに書く前に、直前のログを取り出す。
そのログにある数字を取り出して、+1したものを最新記事のナンバーとする
そのナンバー+投稿内容としてログファイルに追記
ただの更新履歴ならコレで問題ない・・・・と思う
コードはあなた以上の初心者なので勘弁。 >>300
アンカーの構造から分かりません(∋_∈) えっと、全然発想すら分からないので
>>数字
@DATA[数字]
それでサブルーチンで取り出して表記する?という事だけです・・・
>>293
お礼が遅くなってしまいすみません。
方法がさっぱりだったのでぐだぐだになってしまってました。
お答えくださりありがとうございました。 【. CGI名 .】 p++BBS 2006/03/02版 【配布先URL】 http://php.s3.to/
【ヘルプ内容】http://www.cj-c.com/にあるChildTreeと同様の記事リストで、レスの更新時間を読んでUP!と表示させたいです。
自作の下記の処理だと親記事の更新時間しか読めてないため、レスがついてもNew!表示時間が延長されません。
レスの更新時間も読みにいく処理がうまく書けませんでした。お助け頂けたら嬉しいです。
素人のクソな処理なので効率化の突っ込みも大歓迎です。よろしくお願いします。
改行が多いと怒られたのでまとめてます…
function Kijilist(){
global $SCRIPT_NAME,$log;
array_shift($log); //要素1個目に非ログがあるので削除
foreach($log as $l){ list($ano,$no,) = split(',',$l); $carray[] = $no; }
$cdata = array_count_values($carray); /*要素数数えて格納*/ $tim = time(); $tgcnt = 0; /*別機能用*/ $page = $_GET['page']; /*別機能用*/
foreach($cdata as $key=>$val){
foreach($log as $l){
list($ano,$no,$res,$now,$name,$email,$sub,$com,$url,$ho,,$pco,$pk,$cnt,$uid) =split(',',$l);
if($res==0 && $no == $key) {
$val = $val-1;//親記事もカウントしてたのを除外
if($tim-$pk<NEWTIME * 3600) { //NEWTIMEを宣言しないとエラー
if($page <= 0 && $tgcnt<PAGEVIEW){ //PAGEVIEWを宣言しないとエラー
echo "<a href=\"#$no\">".NEWIMG."{$sub}($val)</a> | ";$tgcnt++; //NEWIMGを宣言しないとエラー
} else {
echo "<a href=\"$SCRIPT_NAME?mode=all&no=$no\">".NEWIMG."{$sub}($val)</a> | ";$page--;
}
} else {
if($page <= 0 && $tgcnt<PAGEVIEW){
echo "<a href=\"#$no\">$sub($val)</a> | ";$tgcnt++;
} else {
echo "<a href=\"$SCRIPT_NAME?mode=all&no=$no\">$sub($val)</a> | ";$page--;
}}}}}} クソな処理なのは変わりませんが、自己解決できました。
【. CGI名 .】 phpexit ver.1.1.4
【配布先URL】 http://chibinowa.net/
【. 置き場所 .】 http://chibinowa.net/webapp/phpexit.html
【ヘルプ内容】
項目の追加をお願いします。
配布先にスクリーンショット画面がありますが、
一覧部分の「webplog>perl」の部分(カテゴリの部分)の上部に、2件の項目を追加したく思っています。
追加項目の内容は、1件はテキストエリア、2件目はコメント欄と同じくらいの文章です。
個人で、テキストエリアの追加は出来たのですが、肝心の一覧にその部分が表示されず、行き詰っています。
lib/cmd/edit.php、item.php などを弄ってあります。
ご助言お願い致します。 foreach (@lines) {
($noa,$Yeara,$Montha,$Daya,$suba,$tail1a,$W1a,$H1a,$com1a,$tail2a,$W2a,$H2a,$com2a,$tail3a,$W3a,$H3a,$com3a,
$tail4a,$W4a,$H4a,$com4a,$tail5a,$W5a,$H5a,$com5a,$tail6a,$W6a,$H6a,$com6a,$tail7a,$W7a,$H7a,$com7a,
$tail8a,$W8a,$H8a,$com8a,$tail9a,$W9a,$H9a,$com9a,$tail10a,$W10a,$H10a,$com10a,$hosta) = split(/<>/);
ひどい処理だな。
一応html部から全て項目を増やせば動作するはず。
あるいは1件1行として全体的にリビルドしてしまうか。
まず拡張子合わずと記録する部分を見つけるんだ
そしたらそこの条件を見るんだ
そしたらそこでbreakするなりexitするなりしてアップロードできないようにするんだ
sub error{
my ($no,$note) = @_;
if (length($note) > 64) { $note = substr($note,0,64).'...'; }
$note =~ s/&/&/g; $note =~ s/\"/"/g; $note =~ s/</</g; $note =~ s/>/>/g; $note =~ s/\r//g; $note =~ s/\n//g; $note =~ s/\t//g; $note =~ s/\0//g;
my ($message,$dispmsg,$flag);
if($no == 98){ $message = ""; }
elsif($no == 99){ $message = "UpFileなし"; }
elsif($no == 101){ $message = "投稿禁止HOST"; }
(略)
# elsif($no == 108){ $flag = 1; $message = "POSTデータ不完全"; $dispmsg = '<tr><td>ファイルをアップロードできませんでした</td></tr><tr><td>POSTデータが不完全です</td></tr>';}
elsif($no == 109){ $flag = 1; $message = "POSTKey不一致"; $dispmsg = '<tr><td>ファイルをアップロードできませんでした</td></tr><tr><td>POSTKeyが一致しません</td></tr>';}
elsif($no == 202){ $flag = 1; $message = "拡張子合わず"; $dispmsg = '<tr><td>ファイルをアップロードできませんでした</td></tr><tr><td>投稿できる拡張子は'.$set{'up_ext'}.'です</td></tr>';}
見つけたけどわからない・・・orz
エラーナンバー202を記録してるとこ探せばいいだろw
{#メイン処理
if(!$in{'upfile'}){ &error(99); }
if($set{'post_flag'} && !check_postkey($in{'postkey'})){ error(109); }
if($set{'dlkey'} == 2 && !$in{'dlkey'}){ unlink("$in{'tmpfile2'}"); &error(61); }
open(IN,$set{'log_file'})||&error(303);
my @log = <IN>;
close(IN);
my ($no,$lastip,$lasttime) = split(/<>/,$log[0]);
if($set{'interval'} && $set{'interval'} && $in{'time'} <= ($lasttime + $set{'interval'}) && $in{'addr'} eq $lastip){ &error(203);}
$in{'ext'} = extfind($in{'orgname'}); if(!$in{'ext'} && $in{'upfile'}){ &error(202); }
my $orgname;
if(split(/\//,$in{'orgname'}) > split(/\\/,$in{'orgname'})){ my @name = split(/\//,$in{'orgname'}); $orgname = $name[$#name]; }
else{ my @name = split(/\\/,$in{'orgname'}); $orgname = $name[$#name];}
ここぐらいしか 202 ってところないけど・・・
>>322
$in{'ext'} = extfind($in{'orgname'}); if(!$in{'ext'} && $in{'upfile'}){ &error(202); }
この行をどうにかすればいけるぐらいしかわからん
上げてもよかったのでしょうか…
【. CGI名 .】 Link & Rank
【配布先URL】 http://taitaistudio.com/
【. 置き場所 .】 http://taitaistudio.com/cgi/linkrank.html
【ヘルプ内容】
ユーザーエディット(sub mente)で、サイト名やサイトURLなどに追加して、
新しい変数($kisyu)を追加して、登録者が対応機種を選択出来る
新しい選択欄を追加したいのですが、どうしてもログに追加されません。
挙げ句の果てにはズレてIPが表示されてしまいます。
配布元は改造のサポートは行っていないとの事なので、完全にいきずまってしまいました。
どなたか、御教授よろしくお願い致します。 ちょっと説明しづらいのですが、
デフォルトでランキングの登録者がサイト名やサイトURL、バナーURL、キーワード、サイト紹介文を決められるのに追加して、
例えば、『サイト詳細』などの新しい項目を作りたいです。
しかし、何度やってもログに記録されずにログから呼び出すことも出来ません。
わかりにくい説明かとは思いますがよろしくお願い致します。
「何をどうやった」のかを「具体的に」説明してくれないと
こっちもアドバイスのしようがないんだが
1.設定で現在の書き方を参考に新しい変数を作ってデータを入れる
2.メインcgiのhtml出力しているところを見つけて同じように書く
3.メインcgiの書き込み、読み出ししてるところを見つけて同じように書く
以上
【CGI名】 DiaryCGI nicky!
【配布先URL】 http://www.din.or.jp/~raelian/ReadMeNicky.html
【ヘルプ内容】コメント記入時に、メールが送信されるように設定した場合、
通知メール内容にコメント文も載せるようにしたい。
nicky.CGIの2725行にどのような記述をいれれば本文に入るのでしょうか?
宜しくお願いします。 >>332
2725行?入れるところはそこじゃないと思うよ。
from : $ENV{REMOTE_HOST}($ENV{REMOTE_ADDR})
agent : $ENV{HTTP_USER_AGENT}
という行の下に以下を追加する
name : $CommentName
message : $CommentMsg
文字化けで読めなかったら
$CommentName
$CommentMsg
をjcodeでjisコードに変換する文をsub SendMailRcvNotice{の下の行に追加 >>333
ありがとうございました!
ちゃんとできました!
【CGI名】 PRTC BBS
【配布先URL】 一般に配布されていません
【ヘルプ内容】暗号化をしたいです
http://www.rescue.ne.jp/cgi/htpasswd/makepwd-des/
このサイトのような感じで(もっと簡素でも構いません)
とにかく出力をしたいんです
下記のソースでcgiを動かしたいのですが、初心者でわかりません
知識不足なのはわかっているのですがどうしてもやりたいです
よろしくお願いします
sub enc_string{
my ($key, $string) = @_;
my @map = (('A' ... 'Z'), ('a' ... 'z'), ('0' ... '9'), '+', '&');
my @key = unpack('C*', $key);
my $str = '';
my @x = map { int(rand(200)) } (0 ... 2);
@key = map {$x[$_] ^ $key[$_]} (0 ... 2);
while($string ne ''){
my $n = substr($string, 0, 3, '');
my @n = unpack('C3', $n);
map{$n[$_] ^= ($key[$_])} (0 ... 2);
@key = unpack('C3', $n);
@key = map {$x[$_] ^ $key[$_]} (0 ... 2);
my $a = $n[0] >> 2;
my $b = (($n[0] & 3) << 4) | ($n[1] >> 4);
my $c = (($n[1] & 15) << 2) | ($n[2] >> 6);
my $d = $n[2] & 63;
$str .= $map[$a] . $map[$b] . $map[$c] . $map[$d];
}
my $a = $x[0] >> 2;
my $b = (($x[0] & 3) << 4) | ($x[1] >> 4);
my $c = (($x[1] & 15) << 2) | ($x[2] >> 6);
my $d = $x[2] & 63;
return $str.'<>'.$map[$a].$map[$b].$map[$c].$map[$d];
}
>>335
それは暗号化キーと暗号化対象文字列を引数に取り、暗号化後の文字列二種を '<>' 区切りで返すサブルーチンです。
あとはそのサブルーチンを適切な引数で呼出し、返値を受取って表示するだけです。
この場合、引数は基本的に任意ですから、必要なものを与えてください。
値の与え方が分からない場合は暗号化アルゴリズムについて調べてください。
ルーチンの呼出し方、または返値の受取り方が分からない場合は、Perl のサブルーチン呼出しについて調べて下さい。
プログラムでの値の受取り方、または値の表示の仕方が分からない場合は、CGI の基礎を学ばれるべきだと思います。 >(3) 出来るだけ詳しく書くこと。少しは自分で考えること。できれば御礼も言ったほうが良い
>>342
もしかして
# 投稿順にソート
@new = @new[sort {$sort[$b] <=> $sort[$a]} 0 .. $#sort];
regist.plのここですかね?^^; >>344
やってみました^^
これと
@new = @new[reverse sort {$sort[$b] <=> $sort[$a]} 0 .. $#sort];
これを
@new = reverse(@new);
@new = @new[sort {$sort[$b] <=> $sort[$a]} 0 .. $#sort];
試しましたが無理でしたorz
>>345
reverse() までたどり着いてんならあともう一歩だ。がんばれ。 lib/phone/read.plの220行目
while (<IN>) {
↓
for (reverse <IN>){
ってな感じじゃないかな
>>347
while と for では $_ のスコープに関する扱いに違いがある点に注意。
また逐行処理前提で書かれたループ内のコードが適切でない可能性があるよ。
読んでないからどう影響するかはわからんけど応援してみる。 >>346
>>348
ありがとうございます(^o^)
>>347
解りやすくありがとうございます^^
出来た!と思ったのですが(ひっくり返りました(感動))
1ページ表示数以上のレスが付くと一番新しいレスが2ページ目に行ってしまいます(涙) @new = @new[sort {$sort[$a] <=> $sort[$b]} 0 .. $#sort];
でどうだ?
>>350
2カ所とも試してみましたが変わりませんでした(;.;)
ありがとうございました。 >>349
あとは表示するレスの抽出だけみたいだから
$i = 0;
while (<IN>) {
$i++;
if ($i <= $from) { next; }
if ($i > $to) { last; }
chop;
↑の部分(read.pl220行目辺り)を
$i= 0; my @line;
while (<IN>){
$i++;
if ($i <= $from) { next; }
if ($i > $to) { last; }
push(@line, $_);
}
for (reverse @line){
chop;
ってな感じじゃないかな >>352
見事に出来ました(T.T)
非常に解りやすく教えて頂き本当に感謝致します。
ありがとうございましたm(__)m
【. CGI名 .】 HiLink ver1.12(サンプルAバージョン)
【配布先URL】 http://www.e-hws.net/
【. 置き場所 .】 http://www.e-hws.net/hilink.html
【ヘルプ内容】
リンク登録時に特定のカテゴリーを選択したとき、表示部のテーブル背景色を変更したいです。
hilink.cgiの「表示データ作成」部分に以下のように追加し
if ($category eq 'ああああ' ){$cate_clr="red";}
elsif ($category eq 'いいいい ){$cate_clr="blue";}
else {$cate_clr="#999999";}
スキンのmain.htmlで、テーブルタグにbgcolor="$cate_clr"と入れてみましたが
うまくいきませんでした。
なにぶん手探りで、何かおかしなことをやらかしているかもしれないのですが
なんとかご教授いただけると嬉しいです。
どうかよろしくお願いします。 >>355
headline.phpの144〜146行目
144: for($j=7; $j<count($files); $j++){//残りはHTMLデータ
145: $line.= $files[$j];
146: }
の下に、以下の行を加える。
$line = preg_replace('/<script[^>]*>.*<\/script>/','',$line);
表示時だけでなくデータ取り込みの際にも<script>を除去したければ、85行目の上にも同じものを入れる。
84: if($start || !$head[start]){
85: $new.= $line;
検証してないけど。 【 CGI名 】配布用web拍手CGI
【配布先URL】http://www.webclap.com/
web拍手CGI公式サイトさんのところで無料配布のスクリプトをもらってきたのですが、
ファビコンがプロバイダ側のへんてこファビコンなので変えたいのです!
自サイトのhtmlページでは自作のファビコンで被せてあるのですが、CGIでファビコンを
つけるのはどこをどういじったら良いですか?
clapinit.txt (cgi) このファイルがあやしかったので、
#--------------
# HTMLヘッダー
#--------------
sub header{
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',"\n";
print '<html lang="ja"><head>',"\n";
print "<title>$title</title>\n";
print "</head>\n";
この内に
print "<link rel="shortcut icon" href="favicon.ico">\n";
↑これを加えてみたのですがダメですた。
他にもいじらないとダメだったりするのでしょうか。
もしかして根本的に間違ってたりするのでしょうか…。
どなたかお助けください。
スクリプトダウンロード先は
http://www.webclap.com/etc/download.html←ここです。 print qq|<link rel="shortcut icon" href="favicon.ico">\n|;
書くならエスケープしないと
358さん、ありがとうっ!
できました。ヽ( ´ ∇ ` )ノ
エスケープてなんのことかさっぱりですが、助かりました!
ありがとうございましたー。
PHP限定で改造やります
改造したものはHPで公衆発信します
まず以下の情報を書いてレスよろ
[スクリプト名]名前は正確に!!
[配布先URL]二次配布できるかできないか確認するためです。うpローダに置いてあったらスルー
[改造内容]何をどのように改造したいのか詳しく。あいまいな内容は基本的にスルー
>>361
スレの趣旨から反するから改造丸投げはNG >>366
配布元の制限を読むと、あなたが配布元に連絡していない場合、
今回のアップロードは「スクリプトの無断再配布」に当たり、
同サイトの提示するライセンスに抵触する可能性があります。
権利関係を再確認してください。 【. CGI名 .】toshinariスクリプト(Perl)
【配布先URL】http://www.toshinari.net/
【ヘルプ内容】
としなり掲示板にリモートホスト、IPを取得できるように改造してください。
できれば/BBSID/log/00000.cgi
みたいに掲示板IDディレクトリに新しくlogディレクトリを作成してcgiファイルで保存するようにして
それでレス削除画面にリモートホスト、IPを表示させるようにしてくれるといいです。
あと、ここからは希望ですが
リモートホスト(IP)規制機能と透明あぼーん機能をつけてください。
報酬はリモートホスト、IP取得が500P
リモートホスト(IP)規制機能、透明あぼーんまで追加してくださったら+500P払います >>368
すいません、書き忘れてました
ウェブマネーのことです。 >>368
「ここからは希望」ってあるがじゃあその前は何なんだ すいません。書き直します
ダウンロード場所:http://cgi.toshinari.net/wiki.cgi
スクリプト名:toshinariスクリプト
どんな風に改造するか:
としなり掲示板にリモートホスト、IPを取得できるように改造してください。
/BBSID/log/00000.cgiという感じにlogディレクトリにcgiファイルで保存するようにしてほしいです。
報酬はWM1000Pです。
これからは希望ですが
IP規制と透明あぼーんもつけてもらえれば幸いです。
>>375
で、どこまでやったのさ?
自分で全然やる気ないなら丸投げスレへ行け >>376
どこまでやったというと?
がんばってもできないから改造依頼したんですが・・・
あと、dat落ちしていない丸投げスレのURL教えてください。 丸投げスレがまた即死したので立てときました。
こっち(工房)にまとめようという意見もあるようですが、一種の隔離スレみたいな
意味合いもあると思うので、やっぱあった方がいいかと……
hi, you have super site.,
【. CGI名 .】 ショッピングカート WebCart 2.3x
【配布先URL】 http://www.cgis.biz/script_web_cart/
【ヘルプ内容】
サンプルを見ていただくとわかると思いますが、商品の並び順が新しい番号が
上にくるようになっています。
これをNO.1から表示するようにしたいのですが、どこを改造すればよいか
ご教授ください。
私が見た中で、ここかな?と思ったのは、view.phpの153〜154行目と思ってい
ますが、どうでしょうか。 >>386
じゃやれよって言われても…どう変えればいいのかわからないから聞いているの
ですが?
自分でできそうだったらすでにやってますが、場所が見当ついても、何を変えれ
ばいいのかわからず、作者さんもお忙しいとお聞きしましたので、ここで聞いて
みたのですが…。 分からないなりに当たりつけてやってみなよ
まさか100%何も見当付かないってことはあるめえ?
丸投げスレにて教えてもらいました。
誘導ありがとうございましたm(_ _)m
回答もらってからこっちを終わらせるとかほんと悪質だなw
【CGI名】スレ天
【場所】http://cgipon.specters.net/tengoku/download.html
【ヘルプ】トリップつけれるようにしたい
ググったらそれらしいのはなんぼかみつかったけど
入れる場所とかわかりません。
ご教授よろしくおねがいします。
★ ワンポイント
2chのトリップ生成方法は以下のようになっています。
($name, $tripkey) = split(/\#(.+)/, $form{'name'});
if($tripkey){
$salt = substr($tripkey.'H.', 1, 2);
$salt =~ tr/\x3A-\x40\x5B-\x60\x00-\x2D\x7B-\xFF/A-Ga-f./;
$salt =~ s/[^\.\/0-9A-Za-z]/\./g;
$trip = '◆'. substr(crypt($tripkey, $salt), -10);
}
print "$name$trip"; 書き込み処理直前、クッキー発行後
<ここから>
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
</ここまで>
#----------------#
# トリップ生成 #
#----------------#
sub trip {
my $key = shift;
$key =~ s/"/"/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
# やってみたこと、考えたこと
・lib/RNA.pmの800行目付近、cacheしたサイトのデータをStoreして、sortする前あたりで
除去したらいいのかなと思ってます
$self->__cache_sites($new_cache_data);
$self->{SiteList}->{RSSArray} = \@rss_array;
unless($config->{DateControl}->{AllowFutureEntries}) {
$self->remove_future_entries;
}
$self->remove_ads; # この辺り?
・lib/RNA/RSS.pmの remove_future_itemsを参考に見よう見まねで書いてみたりもしましたが、
「titleが "PR:" で始まってるitemを除去する」という書き方がわかりませんでした
sub remove_ads
{
my $self = shift;
my %arg = @_;
my @new_items = ();
foreach my $item (@{$self->{items}}) {
if (index($item->{title}, "PR:") < 0) {
push(@new_items, $item);
}
}
$self->{items} = \@new_items;
}
・処理するタイミングも間違ってるかもしれません
・できれば今後のために、除去するitemの指定方法に汎用性を持たせていただけるとなお嬉しいです
以上よろしくお願いします
で、向こうは書きっぱなしで放置逃亡ですか
ならマルチは死ねとしか
398です。
すいません。
何度か書き込みをしたことはあるのですが、
削除はしたことがなかったのでその辺を何も考えてませんでした。
えと、削除依頼を出せばいいのかな・・ガイドライン読んできます。
>>400
削除依頼じゃなくてさ、このスレに移動しますって書けばおk >>401
教えて下さってありがとうございます。
向こうのスレに書き込んできました。
以後気をつけます。 >>402
で、このスレは丸投げじゃないんだから自分で出来るところまでやるってのが第一歩。 【. CGI名 .】 phpexit ver.1.1.4
【配布先URL】 http://chibinowa.net/
【. 置き場所 .】 http://chibinowa.net/webapp/phpexit.html
【ヘルプ内容】
項目の追加をお願いします。
配布先にスクリーンショット画面がありますが、
一覧部分の「webplog>perl」の部分(カテゴリの部分)の上部に、2件の項目を追加したく思っています。
追加項目の内容は、1件はテキストエリア、2件目はコメント欄と同じくらいの文章です。
個人で、テキストエリアの追加は出来たのですが、肝心の一覧にその部分が表示されず、行き詰っています。
lib/cmd/edit.php、item.php などを弄ってあります。
色々修正してみたり、記述を変えてみましたが、増やした項目部分を登録すると増やしたコメント欄とテキストエリアが同じ内容になってしまったりします。
1度自己解決したのですが、上記問題が出てしまいましたので、どうかご助言お願い致します。 コメント欄とテキストエリアで出力している変数を別にすればいいのでわ?
【. CGI名 .】 0chスクリプト
【配布先URL】 http://0ch.mine.nu/public/scripts/ 0chのtest060227.zip
【ヘルプ内容】
0chのtest060227.zipを使用して掲示板を運営しています。
スレッド一覧( ./subback.html )にもmeta.txtの内容を書き込もうと思い
いろいろ弄ってなんとか形になりました。※meta.txtは掲示板を作って自分で書き込めます。
しかし、これでよいのかどうか自信がもてないため質問します。
varda.plの191
sub CreateSubback{ } 内に
require('./module/legolas.pl');
$Caption = new LEGOLAS;
META($this,$Index,$Caption);
151# HTMLヘッダの出力
$Caption->Print($Page,undef);
他に
sub META{
my ($this,$Page,$Caption) = @_;
my ($title,$link,$image,$code);
$Caption->Load($this->{'SYS'},'META');
}
ミスはないでしょうか? レンタル鯖にてメール送信CGIを設置したくPerlで継ぎはぎしてやってみたんですが、
メールは送信されるのですが、件名とメアドまで本文の方に来てしまって、
件名が(無題)で送信者がanonymousになってしまいます。
どうやったら件名とメアドを認識してくれるのでしょうか?
HTMLの入力フォームは、名前、メアド、件名、本文の4つだけです。
>>405
解答ありがとうございました。頑張ってみます! >>409
ソースさらします。Perl知らないんでこれが限界っす・・・。
#!/usr/bin/perl
$mailprog = '/usr/sbin/sendmail';
require 'jcode.pl';
#Get the input
read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
#Split the name-value pairs
@pairs = split (/&/,$buffer);
foreach $pair(@pairs) {
($name, $value) = split(/=/, $pair);
#Un-Webify plus signs and %-encoding
$value=~tr/+/ /;
$value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$FORM{$name} = $value;
if ( $name ne "to" ) {
push (@fields, $name) unless (grep(/^$name$/, @fields));
}
}
# set recipient address if form is blank
$to = $FORM{'to'}; 続きです。
### 送信フォーマット
$mail_msg = "";
foreach $field (@fields) {
$mail_msg = "$mail_msg-----------------------------------------------\n";
$mail_msg = "$mail_msg($field) $FORM{$field}\n";
}
### ShiftJis to Jis
&jcode'convert(*mail_msg, 'jis');
open(MAIL,"| $mailprog $FORM{'to'}")|| die "Can't open $mailprog!\n";
print MAIL $mail_msg;
close(MAIL);
>>410
まず、スクリプトの先頭に use strict; use warnings; と書いて。 【. CGI名 .】美しい画像掲示板
【配布先URL】http://w1.nirai.ne.jp/freeze/appli/file06.html
【ヘルプ内容】
・ファイルサイズを800000にしたい
if($filesize <= 100000){
ここを変更するだけでは下記の行がエラーで上手く表示されません
$a_num = $size_w/($a_w+$b_w*$a_h/$b_h+$c_w*$a_h/$c_h+$d_w*$a_h/$d_h+$e_w*$a_h/$e_h);
・画像がない場合の表示
行に画像が1枠しかない場合、残り4枠に'image.jpg' の画像が
表示されるはずが1枠にしか表示されません
どうか力を貸して下さい >>415
ファイル名 oo.jpg アップロード成功!
Warning: Division by zero in bbs.php on line 197
と出て、その行(表示させるテーブル)が凝縮されて画像は表示されません。 >>417
if($filesize <= 100000)をif($filesize <= 800000)に変えるとなぜ
$a_num = $size_w/($a_w+$b_w*$a_h/$b_h+$c_w*$a_h/$c_h+$d_w*$a_h/$d_h+$e_w*$a_h/$e_h);
がエラーを起こすのか理解できていないので解決できません 糞スクリプト過ぎるな。
とりあえずその行の直前ででも関係する変数を適当に出力してみれ。
ゼロ除算なのだから、割る数のうちいずれかが0になっている。
値がおかしい変数が見つかったら、その変数に値を設定している部分を全部洗い出して、どういう風に値が変わっていくか調べろ。
配布CGIが糞なのは今に始まった事じゃないから諦めて整理しつつ読んだ。
問題はその変更じゃないな。変な画像が混ざってるんじゃねぇか?
データはそのままで改造前のスクリプトを設置したらちゃんと動くのか?
>>421
アップして表示するのに関しては正常に動きます
画像がない場合の表示はダメです
理想 現実
■□□□□ ■××××
■アップした画像
□画像がない場合に表示する画像
×イメージがない 表示してみなよ
$a_num = $size_w/($a_w+$b_w*$a_h/$b_h+$c_w*$a_h/$c_h+$d_w*$a_h/$d_h+$e_w*$a_h/$e_h);
の直前に
print "Content-type: text/plain\n\n$a_num = $size_w/($a_w+$b_w*$a_h/$b_h+$c_w*$a_h/$c_h+$d_w*$a_h/$d_h+$e_w*$a_h/$e_h);\n";
exit;
みたいに書いてさ・・
>>423
ありがとう。テーブルの幅を変えているからダメなんでしょうか?
何かやればやるほど色んな不具合が見つかり心が折れそうです
これは止めておいた方がいいスクリプトですかね( ^ω^) まあ、問題の切り分けをしようとも考えない>414にはお似合いのレベルだけどな。
image.jpgがスクリプトと同じディレクトリに無いだけ、に一票。
どう見えるかなんざ枝葉末節の問題に過ぎないんだから、HTMLソースどうなってるのか確認しろよ。
設置することが最終目標の人たちに対して、
デバッグの仕方教えても仕方ないような気がしてきた。
>>425
テーブル幅・ファイルサイズを変えて色々試しました
ファイルサイズが関係無い事はわかったのですが
何がいけないかわからなかったです
>>426
422の現実は下記の間違いでした
■□××× >423
>表示してみなよ
>表示してみなよ
>表示してみなよ
>426
>HTMLソースどうなってるのか確認しろよ。
>HTMLソースどうなってるのか確認しろよ。
>HTMLソースどうなってるのか確認しろよ。
(日本語が分からないようなので3回言いました)
>>430
表示された式をレスすれば解決してくれるの?
ソースを確認と言われても414のサイトにあるソースの
ファイルサイズとテーブル幅以外は変更してないので
確認して貰えれば助かるのですが? $bosyu の値が1ならば、登録フォームを表示させる。
0ならば、登録フォームを表示させない。
1か0かは、管理人用ページから設定することができる。 という感じでPerlを組みたいのですが、
まだまだ初心者でよく分かりません。
一応、
<input type=radio name=bosyu value=1>表示する
<input type=radio name=bosyu value=0>表示しない
というフォームを作り、登録フォームの表示部分に、
if ( $bosyu == 1 ){
#登録フォーム
}
else {}
というようにしました。
しかし、管理人画面から1にしようが0にしようが、登録フォームはどのみち消えてしまいました。
この場合、どうしたらよいのでしょう?
もしよろしければ、
http://www.77c.org/d.php?f=nk5918.lzh
に本体をアップロードしましたので、修正箇所など教えていただけますと助かります。
私自身が追加しましたのは、行381,行382,行678,行683,行684 になります。 >>434
スクリプトを全部見る気はないんで間違っているかもしれんが
684行
else {}
→不要
678行
if ( bosyu == 1 ){
→if ( $FORM{'bosyu'} == 1 ){ あはw
>>436は間違ってるわw
設定を別ファイルとかに記録しておかないとダメ!! ゛o(≧◇≦*)oo(*≧◇≦)o″ダメ!!じゃんw
考え方としては
&decode ;の後に
$FORM{'bosyu'}の値が「表示しない」なら別ファイルとかに表示しないという記録をして
$FORM{'bosyu'}の値が「表示する」なら別ファイルとかに表示するという記録をする
678行目のif文では、別ファイルとかに表示するという記録があるかないかで分岐させればいい >>437 さん
ありがとうございます。
大体構造は理解できました。
if文で変数に値を入力する為には、「記録する」という別の処理が必要なのですね。
まことにお恥ずかしい話ですが、記録させるソースの書き方が分かりません・・・
例として、記録させるためのソースを教えていただけませんか?
(プログラム内容に沿っていなくても構いません。全体的に「どんな感じ」で書けばいいのか掴めれば幸いです。) >>438
考え方は排他制御を参考にすればいい
$FORM{'bosyu'}の値が「表示しない」ならロックファイルみたいなものを作成し、
$FORM{'bosyu'}の値が「表示する」ならロックファイルみたいなものを削除する
if文はロックファイルみたいなものが存在していなかったらブロックを実行すればよい
annevote.cgiにもロックファイルが使われているからソースをよく読んで自分考えれ >>440の件、
flockでなんとか動きました。
ありがとうございました。 >>442
ここは丸投げスレじゃないんだよ。
自分で改造してわからないことを質問するスレなんだよ。 【. CGI名 .】 もっと書き込み隊2
【配布先URL】 http://tackysroom.com/page_cgi2.htm
【ヘルプ内容】
外部のテンプレートファイルを読み込んで表示させたいのですが、うまくいきません。
772行目あたりの「ヘッダー上部書き出し」のところに
open (FT,"/navi.tmp"); #navi.tmpはテンプレートファイルです。
@navi = <FT>;
close (FT);
と書き、表示させたいところに
print @navi;
と書いてみたのですが、表示されません。
解決策ありましたらどうかご教示下さい。 フリー配布のcgiの改造ヘルプってここでいいのかな…。
【. CGI名 .】arseno-l-0.5
【配布先URL】 http://www.geocities.jp/fla774/arseno/
【ヘルプ内容】 単語の新規登録時に既に登録済みの単語(例えば雨があるのに雨はng。飴ならok)はエラーにする方法が知りたい
やってみたことはdl.cgiの中にあるregist_entryで
「新しい単語を配列に書き込む」って処理があったから、その直前に
新しい単語と配列の単語を比較して、一致したら既に登録済みってことでエラーにしようと思いました。
&catch_continuation( "index", $word, $Ip );
&lock_file;
&get_index_array( \@index ) or &error( 'open_index', __LINE__, 1 );
$newkey = 0;
(追加↓)
foreach( @index ){
&error( 'double_word', __LINE__ ) if @index[1] == $word;
}
(追加ここまで↑)
実際に試してみると、重複して登録できてしまいました。何が原因なんでしょうか。 foreach( @index ){
&error( 'double_word', __LINE__ ) if $_ eq $word;
}
ありがとうございます。
構文ミスってことでしょうか?
試してみましたが、やっぱり重複しても登録できてしまいました。
もしかして入れる場所間違ってるんでしょうか…。
&get_index_array内部処理では末尾の改行付いたままだからな
つまり
&get_index_arrayの単語と比較する前に「改行を除く」か
改行の手前までを比較対象にするようにすればいい、ってことですかね。
やってみます。
foreach( @index ){
&error( 'double_word', __LINE__ ) if $_ eq "$word\n";
}
ちと頭悪いがsjisじゃなければこれで良くね?
試行錯誤してますが、どうもうまくいかないです…。
foreach my $var ( @index ){
my $var == @index;
my $var =~ s/\n//;
&error( 'double_word', __LINE__ ) if my $var_ eq "$word\n";
}
変数作って一旦配列の単語をコピーし、\nを置換で削って比較、と思ったのですが
既存の単語が消えて、新しい単語に置き換わる、という結果になってしまいました。
(雨、宝物、てすと、の3つがあった時、新たにとんかちを追加すると直前のてすとがとんかちに変わる)
>>452
ありがとうございます。試してみましたが、やはり重複登録できてしまいました。
>>453
なんか構文が色々おかしいぞw
foreach my $var ( @index ){
chomp($var);
&error( 'double_word', __LINE__ ) if $var eq $word;
}
myの意味も知らんと色々やらかしちゃってるっぽいな
>>454-455
ローカル変数にはmyつけるってperlのサイトに出てましたが…違うんですかorz
>>454の方法を試すと
あめ、山、海の順で登録すると海を追加した後に山が消え、あめがあ行の前に移動して
海があ行先頭にきてしまいました。
どうもchomp命令で改行外すと、索引ファイルが改行なしになって表示が狂うようです。
>>454のmy $varをやめてchomp( @index)としても同様の結果に。
改行を外すのではなく見ないようにする方がいいんでしょうか。(末尾無視するとか) >>456
うーん、思ったよりおまいさんのperl知識が乏し過ぎてちょと話がしにくいな。
判定方法は>>454のでいいはずだけど、他にもいじっちゃったでしょ。そこがたぶん全然合って無い。
頑張る気持ちは大切にしてあげたいけど、先にもう少しperlの勉強しないと厳しいかも。
急ぎなら丸投げおいで。 言うとおり、改造前に基本から勉強してきます。
付け焼刃の知識じゃどうにもなんないみたいだし…。
とはいえ自分で中身わかってないと、何かあっても対処できないし
急ぎでもないので丸投げ依頼も今はやめておきます。
ありがとうございます。
CGIゲームの中で、javaスクリプトをつかうには、何が必要ですか?
あえて言うならjavascriptが動作するブラウザ
あれ、そうなんですか?
なんで動かないのだろう・・・?
いや、そこで終わられると丸投げも同然なんだがw
どこまでやってどこでつっかえてるんだ?
初めからさっぱりです。
参考になるようなサイトを紹介してもらえればと思ったのですが、丸投げスレの方が妥当なのでそちらに行ってみます。
【 CGI名 】 アクセスカウンター(01)
【配布先URL】 http://plus-code.net/cgi-flash-counter/accesscounter01/
【ヘルプ内容】
このCGIは、flashでカウンターを表示しているのですが、
カウンターをクリックすると、配布URLのトップページに飛ぶようになっています。
flash(swf)自体にリンクが設定されているのですが、なんとかこれを無効にする
方法はないでしょうか?
リンクの無効が無理なら、リンクが同窓で開くため、最低限別窓で開くようにしたいです。
タグでa hrefのtargetを指定してもNGでした。 >>466
swfに埋め込まれてる動作だから無理。
作者に要望出すしかない。っていうか本来そっちが先。 失礼しました、置き場所のファイルNoは2087です。
一ヵ所どう見ても</form>で閉じてない糞スクリプトだなw
答えるにはこのCGIに送信しているメールフォームの本文書く欄のtextareaのnameが判ったほうが
やり易い
<form action="./mcarrier.cgi" method="post" id="form">
<textarea name="message" cols="20" rows="5" ></textarea>
<br>
<input name="submit" type="submit" value=" 送 信 " id="sousin"/>
</form>
htmにはこのように記述しています
>>470
自分でカスタマイズするうちにおかしくいじってしまったのかもしれません、
どこの部分を閉じていないかもわかっていないのですがご指摘ありがとうございます 150行目に↓を加えると大丈夫だと思うけど>>473みたいに「かなカナ」以外の日本語でもエラーにしたいなら
$in{'comment'}を$in{'message'}にすればいい。あと、荒らしに対してエラー文で"日本語を書いてください。"ってヒント与えるのはいただけない
if ($in{'message'}!~/(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]|[\xA1-\xDF]){2}/){ &error("Busy now!"); }
>>474
回答ありがとうございます。
早速150行目に上記の文を書き加えると、思った通りの動作をしてくれました。
一日中考えて調べてわからなかったので本当に感謝です。
神様(∩´∀`)∩ CGIのことをちゃんと勉強したいので初心者向けの書籍を探していますが
近所の書店には自分に合いそうなものがありません。
御薦めの本を知っている方いますか?
スレ違いすみません
【. CGI名 .】 プチ☆ボード
【配布先URL】 http://www.kent-web.com/
【ヘルプ内容】
sub add {
&header;
print <<"HTML";
<html>
<body>
<form method="post" action="./petit.cgi">
名前:<input type="text" name="sname" size="20" maxlength="8"><br>
<input type="submit" value="投稿する">
</form>
</body>
</html>
HTML
exit;
}
こんなサブルーチンを作る。
petit.cgi?mode=add
で呼び出したフォームから、書き込みが出来るようにしたい。
投稿内容がメチャクチャ多くなる予定なので、別ページでフォームを作りたいのです。 >479
プログラムにする必要すらなく、そのHTMLソースを丸ごとHTMLとして保存して設置すれば、とりあえず投稿はできるはず。
あとはCGIのほうからフォームを書き出してる箇所を削ってリンクでも置いておけばいい。
ありがとうございます!目からウロコでした。
これをやって思い出したのですが、投稿項目を凄く(少なくとも30個以上)にしたいのです。
たとえば、初期状態だと
・お名前
・Eメール
・タイトル
・コメント
・URL
ですよね。
たとえば、これに新しく
・出身地
という項目を追加するとして、フォームを書きます。
name属性をsyussinとします。
これをスクリプトのどの辺にスカラー変数として追加したら出来るのか?がわからないのです。
どうやらログファイルに追加はできたようなのですが、掲示板上には表示がされていません。。。
>>481
そういう用途には向かないCGIだね。
WEBフォームとかアンケートで別なもの探したほうがいい。 失礼しました、これだけではわかりませんよね。
オリジナルでは364行目の
($no,$reno,$date,$name,$mail,$sub,$comment,$url,$host,$pw,$color)
を、〜$color,$syussin)
と追加。
397行目の
print "<blockquote><font color=\"$color\">$comment</font></blockquote>\n";
を、〜$comment,$syussin</font></blockquote>\n";
と追加。
517行目の
unshift(@new,"$no<><>$date<>$in{'name'}<>$in{'email'}<>$in{'sub'}<>$in{'comment'}<>$in{'url'}<>$host<>$ango<>$in{'color'}<>$in{'icon'}<>\n");
を、〜$in{'comment'}<>$in{'syussin'}<>〜
と追加しています。
私の頭以外ではどこが抜けているのでしょうか?
>>482
すみません、あくまでも例えでして。
アンケートではなくて、レスのできる掲示板で作る必要があるのです。
昔はとあるゲストブックで項目を追加したりしていたので、簡単にできるかな?と思ったのですが、難しいですね。 >>483
考え方はそれで合ってるし、実際いま俺がやってみてもそれで普通に表示されてる。
本当にログファイルに追加できてる?
「どうやら」とかじゃなくてちゃんと確かめた? 君が書いた517行目の順番と364行目の項目の順番をよーく見てごらん
・・・理解しました。(恥
一回吊ってから目的のスクリプト作成にむけてがんばります!
ありがとうございました!
>>489
どこまでできてて、どこでつまづいてるのさ? 分からないのでここで質問しています。
分かる方いらっしゃいましたらどうぞよろしくお願いします<m(__)m>
とりあえず17行目に↓を追加すれば記憶できると思うが
setcookie("pass", $_POST['pass'], time()+60*60*24*30 );
setcookie("downpass", $_POST['downpass'], time()+60*60*24*30 );
こんばんは。
【スクリプト改造依頼スレ】(丸投げ)part7再々で投稿したら、
こちらへ誘導されたので投稿します。
よろしくお願いします。
【 CGI&PHP名 】 余裕派掲示板ver2.62
【 配布先URL 】 http://cgipon.specters.net/
【 ヘルプ内容 】 WAP2.0対応にしたいです。
お世話になっているお店のサイトの掲示板で運用されているのですが、
配布されている状態のままだと、auの携帯からの表示、投稿が出来ません。
実際にサイトを作成した人は消息不明で困っている店主さんから相談を受けました。
現状はgoogleなどで検索をし、
USER_AGENTの記述を変更すれば良いのかと認識していたのですが、
やっぱりこれだけでは足りないのでしょうか?
例えば[yoyuuha.cgi]を開き、
$mob{car} = 'UP.BROWSER';
の部分を
$mob{car} =~ m/^KDDI/
に変更という具合に。
本を読んだり、ネット検索などをしていますが自分の理解が追いつかない状態です。
すみませんがよろしくお願いします。 で、それでダメだったの?
流石に他人のためにパケ代使って確認する気にはなれないぜ?
>>497
というかできないならできないってちゃんと言った方が良いんじゃないのか?
今後ことあるごとに頼まれるパターンだぞそれ。その度にここ来るのかよ。 こんばんは。
>498
失礼しました。肝心の結果ですが、497に書いた内容を試した所、
auの携帯(W63K)では既に投稿されている内容の閲覧だけは
出来るようになってます。
でも、他キャリアの携帯でアクセスした時のように
投稿フォームやボタンなどの表示は無く、ただテキスト表示のみです。
>499
相談を受けた段階では、出来るor出来ないの即答はしませんでした。
本やネットで調べて出来そうなら試してみます、という返答のみです。
今回の相談内容だと有料でプロの方にお願いするような内容となるのでしょうか?
他のスクリプトへ変更するように提案した方が良いのかなぁ。
>>500
プロに依頼するレベルかどうかはともかく、あんたが出来ないんだから
まずはその事を伝えるべきだろう。
他の物に変えるか、金払って対応するかどうかを決めるのはその店主とやらの仕事。 どなたかご教授下されば幸いです。
get-flash-videos -Google Code
http://code.google.com/p/get-flash-videos/
数々の動画サイトからコマンドラインで動画を取得するツールなのですが、
ニコニコ動画にてダウンロードするファイルが恐らくswfだった場合、下記エラーメッセージが表示されダウンロードに失敗します。
--------------------------
Using method 'nicovideo' for 2019/12/19(木) 02:21:20.96ID:??? まだあったのか・・・