1 名前:sage mailto:sage [04/02/23 17:36 ID:???] #================================ # スレッドの説明 #================================ 「スクリプトを改造したいけどやりかたわかんないよー」という人がいましたら ここで聞いてください。ひょっとしたらアドバイス出来るかもしれません。 質問するときは以下の点に注意して書いて下さい (1) そのスクリプトの内容と置いてある場所を明記する (txtファイルでUPすればなお良い) (2) どんな風に改造して欲しいのか? (完成イメージHTMLを用意すればなお良し) (3) 出来るだけ詳しく書くこと。少しは自分で考えること。できれば御礼も言ったほうが良い ※答えてくれないからといって逆ギレする厨はお断り 前スレ pc2.2ch.net/test/read.cgi/php/1063780103/
501 名前:nobodyさん mailto:sage [04/10/23 16:49:01 ID:???] >499 500 ここは改造工房だってことはわかっているよな? まずはお前等の改造中のスクリプトを晒してもらおうか。 話はそれからだ。 安易に丸投げスレに逃げるんじゃねーぞ。
502 名前:500 mailto:sage [04/10/23 21:46:31 ID:???] >>501 了解です。 こんな感じにしてみましたが、両方ともうまく機能してないみたいです。よろしくお願いします。 # dsbl 問い合わせ。 if ($dsbl) { gethostbyname(sprintf qq|%s.%s.%s.%s.list.dsbl.org.|, reverse split /\./, $ENV{'REMOTE_ADDR'}) and &error("アクセスを許可されていません (dsbl listed.)"); } # BBQ 問い合わせ。 if ($bbq) { gethostbyname(sprintf qq|%s.%s.%s.%s.niku.2ch.net.|, reverse split /\./, $ENV{'REMOTE_ADDR'}) and &error("アクセスを許可されていません (BBQ listed.)"); } $bbq ='1'; $dsbl ='1';
503 名前:nobodyさん mailto:sage [04/10/23 22:50:25 ID:???] >>502 reverse (split /\./, $ENV{'REMOTE_ADDR'}) かな。
504 名前:500 mailto:sage [04/10/23 23:29:56 ID:???] >>503 症状は、生ホストだとBBQリストに入っていないのにエラーメッセージが出る、串を使うとDSBLに入っているのにアクセスできる、というものです。
505 名前:nobodyさん mailto:sage [04/10/30 14:11:34 ID:???] 【. CGI名 .】 なんちてBLOG 記事INDEX付き バージョン (必須) 【配布先URL】 nyats.com/nblog.htm (必須) 【ヘルプ内容】 現在改造中のものです→shingari1582.hp.infoseek.co.jp/nblogt.txt メインはhtmlなのでcssを挿入してあるのですが、過去ログ表示用のCGI(現在改造中のもの)にもリンクやフォントのcssを入れたいと思いました。 $cssという因数があったので素人考えで適応させたいcss(a:linkから)をそのまま入れてみたのですが、 1行目は実行されても2行目からは反映されませんでした。 とほほさんの所等を参照してみたのですが、CGIに関しては本当に初心者で一体どうやって記事全体に反映されるようなcssを挿入すれば良いのか見当もつかなくて困っています。 何かヒントをいただければ嬉しいです、よろしくお願いします。
506 名前:nobodyさん mailto:sage [04/10/31 01:03:45 ID:???] hk2ch3.hp.infoseek.co.jp/cgi-bin/up/source/up0057.txt パーミッション設定とか色々手を尽くしたのですが どうしても500エラーが起こるわけで…_| ̄|○ 何故でしゃう。
507 名前:nobodyさん mailto:sage [04/10/31 16:51:11 ID:???] >>505-506 ファイルがないよ
508 名前:nobodyさん mailto:sage [04/10/31 19:00:48 ID:???] >>507 505のはファイル名のtypo shingari1582.hp.infoseek.co.jp/nblog.txt
509 名前:nobodyさん mailto:sage [04/10/31 21:29:48 ID:???] >>505 動作確認してないけどヒアドキュメントにしたらいいんじゃないの? 下のjavascriptのとこ見てやってみた。 #CSS $css = <<CSSEND; "<style type=\"text\/css\">\n<\!--\n \.doc \{ font-size\: $honbunsize\; color\: $honbuncolor\ font-family : Verdana;}\n \.sub \{ font-size\: $titlesize\; color\: $titlecolor\; font-family : Verdana;}\n \.date \{ font-size\: $datesize\; color\: $datecolor\; font-family : Verdana;}\n a:link {color:000000;text-decoration:none;} a:hover {color:666666;text-decoration:none;} a:visited {color:000000;text-decoration:none;} a:active {color:000000;text-decoration:none;} FONT { font-family : Verdana;} BODY { line-height : 120%;}\n -->\n<\/style>"; CSSEND
510 名前:nobodyさん mailto:sage [04/11/01 04:04:37 ID:???] >>509 パッと見\nはおかしいと思うのだが…
511 名前:nobodyさん [04/11/01 14:22:31 ID:dvWt0D+J] 保存先をCSV形式のファイルからデータベース(MySQL)に変更すにはどうすればいいのでしょうか?どなたか、おしえてくださいm(_ _)m <?php //error_reporting(E_USER_WARNING); // Warrningを出力しない //---------------------------------------------------- // 定数の宣言 //---------------------------------------------------- define("BBS_DATA", "./bbs.csv"); define("BBS_COL_DATE", 0); define("BBS_COL_NAME", 1); define("BBS_COL_BODY", 2); //---------------------------------------------------- // 関数の定義 //---------------------------------------------------- // AppendCsvFile関数 // 機 能 CSV形式のデータをファイルの末尾に追加する // 引 数 $FilePath : 書込むファイルへのパス // $CsvData : 書込みデータ function AppendCsvToFile($FilePath, $CsvData) { if ($FilePath == "") { return false; } $fp = fopen($FilePath, "a"); if ($fp == 0) { return false; } //作成日、名前、発言内容を「,」で連結し、レコードを作成する。 //また、レコード中の改行文字を取り除き行末に改行文字を付加する。 $temp = ereg_replace("[\r\n]", "", join(",", $CsvData)) . "\n"; fputs($fp, $temp); }
512 名前:nobodyさん mailto:sage [04/11/01 14:23:01 ID:???] >>511 の続き // LoadCsvFile関数 // 機 能 CSV形式のファイルを2次元配列に読込む // 引 数 $FilePath : 読込むファイルへのパス // 戻り値 $CsvData : 読込んだテキストの2次元配列 function LoadCsvFile($FilePath) { if (file_exists($FilePath) == false) { // ファイルの存在を確認する return false; } $CsvData = array(); // 配列を作る $TextData = file($FilePath); // ファイルのデータを読み込む for ($i = 0; $i < sizeof($TextData); $i++) { // レコードが10件あれば10回 $TextData[$i] = ereg_replace("\n$", "", $TextData[$i]); // 行末の\nを取り除く $TextData[$i] = ereg_replace("\r$", "", $TextData[$i]); // 行末の\rを取り除く $CsvData[$i] = split("," , $TextData[$i]); // 「,」を区切りとしてフィールドの値を取り出す } return $CsvData; // $CsvDataは二次元配列 } //------------------------------------------------------------ // ここからが主処理 //------------------------------------------------------------ if (isset($_POST["SUBMIT"])) { //このページが初めてアクセスされたか? if ($_POST["BODY"] != "") { //発言内容はあるか? $body = str_replace("\n", "<br>", $_POST["BODY"]); // \n\r(改行文字)をタグ<br>に変換する $body = str_replace("\r", "", $body); $name = $_POST["NAME"]; $BBSRecord = array(date("Y/m/d H:i:s"), $name, $body); AppendCsvToFile(BBS_DATA, $BBSRecord); //「内容」の書込み } }
513 名前:nobodyさん mailto:sage [04/11/01 14:23:23 ID:???] >>512 の続き $BBSData = LoadCsvFile(BBS_DATA); //「内容」の読込み ?> <html> <head> <title>掲示板</title> </head> <body><h1 align="center">掲示板</h1> <a href="bbs.php">最新</a> <form action="bbs.php" method="POST"> <table border="1" align="center" cellspacing="0"> <tr><td bgcolor="#cccccc" align="center">名 前</td><td><input type="text" name="NAME"></td></tr> <tr><td bgcolor="#cccccc">発言内容</td><td><textarea name="BODY" cols="40" rows="8"></textarea></td> <tr><td colspan="2" align="center"> <input type="submit" name="SUBMIT" value=" 投 稿 "> <input type="reset" value=" ク リ ア "></td> </tr> </table> </form>
514 名前:nobodyさん mailto:sage [04/11/01 14:25:07 ID:???] >>513 の続き <?php if ($BBSData == false) { // 発言内容がなければ$BBSDataは空っぽ print "発言はありません。<br>"; } else { for ($i = sizeof($BBSData) - 1; $i >= 0; $i--) { print "<hr><font size='3' color='#0000ff'><b>"; print $BBSData[$i][BBS_COL_NAME] . "</b></fomt>"; print "<font size='2' color='#666666'>"; print " [" . $BBSData[$i][BBS_COL_DATE] . "]" . "</font><br><br>"; print "<font size='3' color='#333333'>"; print $BBSData[$i][BBS_COL_BODY] . "</font><br><br>"; } } ?> </body> </html>
515 名前:nobodyさん mailto:sage [04/11/01 15:24:26 ID:???] >>511-514 マルチうざい
516 名前:505 mailto:sage [04/11/01 23:13:08 ID:???] >508 ファイル名間違えていました…訂正ありがとうございます。 >509 回答有難うございました! #css以下を書き換えて動作させてみたのですが、反映されませんでした。 mainをちゃんと作ってないのですが、動作させてみたらこんな感じです↓ shingari1582.hp.infoseek.co.jp/cgi-bin/index.html (左フレームからログファイルへ入れます) 書き換え前と変わった事は一番上に「""; 」という記号が入った事だけのようです。 ソースを見てみたところ、<meta name="keywords" content=""></head>の後にスタイルシートが来ているので反映されないのかな?と思うのですが…関係ないでしょうか。 元もとのprint OUT $css;の位置がおかしいのかな?とも思うのですが、それだったら\.docからのcssも反映されませんよね。 現在a:hover以下のcssが反映されていないようです。 自分で別にcss用の変数を作ってみたらどうかと思いいろいろいじってみたのですが、表示されなくなってしまったりしてお手上げ状態です…orz よろしければアドバイスお願いいたします…。
517 名前:nobodyさん mailto:sage [04/11/02 03:54:29 ID:???] >>516 #CSS $css = <<CSSEND; <style type="text/css"><!-- .doc { font-size: $honbunsize; color: $honbuncolor font-family : Verdana;} .sub { font-size: $titlesize; color: $titlecolor; font-family : Verdana;} .date { font-size: $datesize; color: $datecolor; font-family : Verdana;} a:link {color:000000;text-decoration:none;} a:hover {color:666666;text-decoration:none;} a:visited {color:000000;text-decoration:none;} a:active {color:000000;text-decoration:none;} FONT { font-family : Verdana;} BODY { line-height : 120%;} --></style> CSSEND じゃあ、これで。 不要な\と\nと"と;を削除しただけ。 SyntaxErrorはないから多分いけるはず。 動作確認は面倒なのでやってないけど。 #>516のリンク先のhtmlソースには一応css部分出力されてるみたい #有効になってるかどうかはわからんけど
518 名前:nobodyさん mailto:宜しくお願いします [04/11/04 08:51:40 ID:???] おはようございます。 ttp://haiiro.info/up/file/1469.txt このCGIで NGワードを設定出来るようにしたいのですが 可能でしょうか? 宜しくお願いします。
519 名前:nobodyさん mailto:sage [04/11/04 12:02:05 ID:???] >>518 変数にNGワードが入ってたらエラーで弾けばよかろ
520 名前:518 [04/11/04 13:11:29 ID:/4YiSBg1] >>519 スミマセン。詳しくお教えいただけないでしょうか?
521 名前:nobodyさん mailto:sage [04/11/04 17:36:00 ID:???] >>520 これ以上何を聞きたいのだろうか… 丸投げしたいのならスレ違い。 自分で何とかしたいのなら、どこがどう解らないのかを書く。 【 スクリプト改造依頼スレ 】(丸投げ) part2 pc5.2ch.net/test/read.cgi/php/1092304968/
522 名前:nobodyさん mailto:sage [04/11/06 21:18:18 ID:???] 178 Name_Not_Found [sage] 04/11/06 16:26:41 ID:??? 【種別】 ダイスチャット 【言語】 perl 【備考】 ttp://www.big.or.jp/~t-shun/trpg/trpg_cgi/dicechat/dchat03.html これのようにダイスを振るフォームがあるのではなく、発言欄にコマンドを入れるようなもの。 正確には、COMCHAT-EX(KENT-WEB)に追記することによって 実装できるダイス用の構文が欲しいかも。 179 Name_Not_Found [sage] New! 04/11/06 19:49:11 ID:??? それは改造になるんじゃ?
523 名前:nobodyさん mailto:sage [04/11/06 21:22:07 ID:???] >>522 >>521 1つ上のレスぐらい読めや
524 名前:nobodyさん mailto:sage [04/11/17 22:33:22 ID:???] 【. CGI名 .】LIGHT CHAT 【配布先URL】ttp://happy.honesto.net/cgi/download/lchat.html 【. 置き場所 .】ttp://botejako.com/zony/chat.txt 自分で多少改造したものです。 【ヘルプ内容】 チャットの発言が表示される上の部分に表示される参加者名を 左から発言・入室したのが早い順に更新・発言した際に並び替えて 表示させるようにしたいのですがどうしてもできません。 今の状態だと、入室した順にしかなっていないようです。 参加者リスト(present.dat)の先頭に毎回追加すればいいのだと思うのですが、 push〜〜をunshift〜〜に変えてみてもうまくいきません。 それが見当違いのことをしてるかどうかもわかりません。 何かヒントをいただけないでしょうか、お願いします。
525 名前:nobodyさん [04/11/17 22:35:28 ID:A5o7/dm+] 書き込みないようなのでageさせてもらいますです。
526 名前:nobodyさん mailto:sage [04/11/22 19:28:58 ID:???] しかし回答出来る人間は居なかった − 完( ´∀`) −
527 名前:nobodyさん mailto:sage [04/11/22 22:20:50 ID:???] いやぁ、つまらん改造だから、スクを見る気になれないだけ。 有料なら請け負うが…
528 名前:nobodyさん mailto:sage [04/11/23 00:04:37 ID:???] 一匹釣れたみたいよ>>526
529 名前:nobodyさん mailto:sage [04/11/23 02:43:22 ID:???] 527 :nobodyさん sage :04/11/22 22:20:50 ID:??? いやぁ、つまらん改造だから、スクを見る気になれないだけ。 有料なら請け負うが… 527 :nobodyさん sage :04/11/22 22:20:50 ID:??? いやぁ、つまらん改造だから、スクを見る気になれないだけ。 有料なら請け負うが… 527 :nobodyさん sage :04/11/22 22:20:50 ID:??? いやぁ、つまらん改造だから、スクを見る気になれないだけ。 有料なら請け負うが… 527 :nobodyさん sage :04/11/22 22:20:50 ID:??? いやぁ、つまらん改造だから、スクを見る気になれないだけ。 有料なら請け負うが…
530 名前:nobodyさん mailto:sage [04/11/24 05:44:42 ID:???] 527 :nobodyさん sage :04/11/22 22:20:50 ID:??? いやん、つまらん改造ですので、スクを見る気になれませんわ。 私を満足させられる対価を頂けますなら請け負いますけれど…
531 名前:nobodyさん mailto:sage [04/11/26 17:09:14 ID:???] 【CGI名】ランキングSP 【配布先URL】hp.bird.to/info/ranking.html 【依頼内容】スコアと表示されてる数字の間に.とかを入れる(9999を9.999と表示)ようにしたいのですが、どのように改造すればいいでしょうか? アドバイスお願いします。
532 名前:nobodyさん mailto:sage [04/11/30 18:53:24 ID:???] ttp://www.rescue.ne.jp/cgi/database/ ↑ここのサイトのデータベース改造してます。 regist.cgi、search.cgiは変更しましたがエラーになったのでデフォルト。 regist.htmlのみ変更してます。 複数登録したいのでregist.htmlのリストボックスをチェックボックスに改造中なのですが、 チェックボックスに変更した後、WEB上で動作確認した所 チェックボックスで選択した項目で最後の物のみ反映されて 他の項目は反映されません。 【例】 <input type="checkbox" name="PREF" value="1" border="0">1 <input type="checkbox" name="PREF" value="2" border="0">2 <input type="checkbox" name="PREF" value="3" border="0">3 <input type="checkbox" name="PREF" value="4" border="0">4 <input type="checkbox" name="PREF" value="5" border="0">5 Aに対して2つの項目を登録するとして 1と4を選択すると4のみ、2と3を選択すると3のみ と言った状況です。 regist.cgi、search.cgiもいじらなくてはいけない事は分かるんですが、 何処をどうやって良いのか分かりません_| ̄|○ 誰か、教えてください。。。 長文、すいませんでした。
533 名前:nobodyさん mailto:sage [04/12/01 04:25:16 ID:???] こっちに貼っておけば良かったのかな? www.google.co.jp/search?as_q=perl+%E8%A4%87%E6%95%B0%E9%81%B8%E6%8A%9E&num=100&hl=ja&c2coff=1&btnG=Google+%E6%A4%9C%E7%B4%A2
534 名前:nobodyさん [04/12/04 20:50:36 ID:8LV5OOZo] 配布されているチャットを改造したいです。 インフォシークなので直リンができないので、中継地点を作ってます。 keizibann.hp.infoseek.co.jp/tyatto/tyuukei.html ↑から入ったチャットの、一番上あたりに、 参加者の名前を表示させるにはどうすればいいですか? スクリプトはこれ↓です。 keizibann.hp.infoseek.co.jp/a.txt よろしくお願いします。
535 名前:nobodyさん mailto:sage [04/12/04 21:24:16 ID:???] help.www.infoseek.co.jp/isweb/?id=8 通報済み
536 名前:nobodyさん mailto:sage [04/12/05 06:13:44 ID:???] >>534 知恵袋で質問した人だよね。 漏れは丸投げスレに誘導したんだが、工房スレに来たということは自分で改造できるんだね。 じゃ、改造の流れを説明するぞ。 まずKENTの所(www.kent-web.com/ )に行ってcomchatをダウンロードして来い。 comchat.cgiの在室者処理の所をパクれ。 変数名をK's Chat Ligthにあうように弄れ。 以上。
537 名前:nobodyさん mailto:sage [04/12/05 06:14:55 ID:???] >以上。 これは余計だなお
538 名前:nobodyさん [04/12/05 16:51:08 ID:+UKjgSSz] ここじゃなかったのか、、、。 ついでに寄ったから間違えた。。。 でもありがとう。がんばります。
539 名前:nobodyさん mailto:sage [04/12/12 03:38:36 ID:???] imgboard.cgiを利用中です。 ttp://www.big.or.jp/~talk/t-club/soft/mini_r6/index.cgi これに2ちゃんと同じsage機能をつけたいのですが上手くいきません。
540 名前:nobodyさん mailto:sage [04/12/12 03:39:20 ID:???] 3341行目からの ---------------------------------------------------- if($PM{'res_go_up'} == 1){ undef $tp_match_flag; local($tp_loop_counter)=0; foreach $tmp_parent(@NEW_BLOODS){ # 3スレッドまで上へ持って行く # それ以上にすると負荷が上がるのでやめる last if($tp_loop_counter >= 3); if(($tmp_parent eq "$9")||($tmp_parent eq "$11")){ $tp_match_flag = 1; last;# 検出したら抜ける } $tp_loop_counter++; } if($tp_match_flag == 1){ push(@GOUP_MESSAGE, $_); $all_message++; }else{ push(@MESSAGE, $_); $all_message++; } }else{ push(@MESSAGE, $_); $all_message++; } ----------------------------------------------------
541 名前:nobodyさん mailto:sage [04/12/12 03:40:26 ID:???] を下のように書き換えました ---------------------------------------------------- if($email == $sage){ #### $sage=sageというのを作った push(@MESSAGE, $_); $all_message++; } else{ undef $tp_match_flag; local($tp_loop_counter)=0; foreach $tmp_parent(@NEW_BLOODS){ # 3スレッドまで上へ持って行く # それ以上にすると負荷が上がるのでやめる last if($tp_loop_counter >= 3); if(($tmp_parent eq "$9")||($tmp_parent eq "$11")){ $tp_match_flag = 1; last;# 検出したら抜ける } $tp_loop_counter++; } if($tp_match_flag == 1){ push(@GOUP_MESSAGE, $_); $all_message++; }else{ push(@MESSAGE, $_); $all_message++; } } ----------------------------------------------------
542 名前:nobodyさん mailto:sage [04/12/12 04:12:51 ID:???] そうした所レスのメール欄にsageを入れようが入れまいが 書き込むと上に上がらなくなってしまいました。 試しに変更した if($email == $sage) を if($PM{'res_go_up'} == 0) にしてレスを入れたらちゃんと上がりました。 if($email == $sage) が間違えているのでしょうか? どなたご教授頂けないでしょうか? 長くなってすみません。
543 名前:nobodyさん mailto:sage [04/12/12 06:05:55 ID:???] 質問を全部読んでないが(^^; == は数値の比較 eq が文字列の比較
544 名前:539 mailto:sage [04/12/12 08:03:13 ID:???] >>543 ありがとうございます。 if($email eq $sage)が正しいようですね。 しかし今度は下がらなくなった。_| ̄|○
545 名前:nobodyさん [04/12/12 17:10:46 ID:cJqt4xtP] 参考:www.kent-web.com/bbs/epad/epad.cgi 依頼:携帯から投稿された絵文字が記録されているログを開き $text = &emoji($text); の様に絵文字変換ルーチンを通せば 携帯3キャリア相互変換、PC表示ができる様にさせたい。 &emoji; の部分をお願い致します。
546 名前:nobodyさん mailto:sage [04/12/12 18:53:39 ID:???] >>545 まず、>>1 の(3)の真ん中を音読してもらおうか?
547 名前:nobodyさん [04/12/14 09:19:31 ID:Q99fVzSY] www.kit.hi-ho.ne.jp/t-sonoda/index.shtml こちらで配布している「シンプル日記」の改造をお願いします (作者さんが多忙のせいか、更新放置されているので・・・) 改造項目は日付の横に任意の画像アイコン(セレクトタグで)を載せたいです 自分で改造できなくて情けない・・・ 宜しくお願いします
548 名前:nobodyさん mailto:sage [04/12/14 10:10:33 ID:???] >>547 スレ違い ■ 自分で改造できない場合には 【 スクリプト改造依頼スレ 】(丸投げ) part2 pc5.2ch.net/test/read.cgi/php/1092304968/2 (テンプレ)
549 名前:nobodyさん mailto:sage [04/12/14 11:04:42 ID:???] >>548 ありがとう、移動します スレ汚してごめんなさい
550 名前:6 mailto:sage [05/01/07 23:40:43 ID:???] 【. CGI名 .】 電光! v.5.20 【配布先URL】 cgiscriptmarket.com/script.html 【. 置き場所 .】 www36.tok2.com/home2/boboburajiru/xxx/data/bobo_20050107233603.lzh 【ヘルプ内容】 途中までやりましたがココからがわかりません。 ・枠がどうしても青色。黒色に変えたい。枠の太さも1pxに。 ・日付に「'」が入ってしまう。 ・1 名前 : 内容 5/06 12:40 とひとつのformで表示したい。 ・見かけ上だけ消してるだけなので要らないソースは消してしまいたいがどれを消していいかわからない。 お願いします。
551 名前:nobodyさん mailto:sage [05/01/07 23:53:58 ID:???] >>550 マルチ乙!
552 名前:6 mailto:sage [05/01/07 23:59:44 ID:???] 誘導されてきました。。 スレ違いですか?
553 名前:nobodyさん mailto:sage [05/01/08 00:55:46 ID:???] >>552 丸投げスレとperlスレみたいにあちこち書いてるだろ。 他のスレに書くなら取り消すなり移動する旨ぐらい書け。 だからマルチと言われる。 それに自分でいじってるんだろ? だからここへ誘導されたんだ。 ↓自分がどちらなのかよく考えろ。 ■ 自分で改造できない場合には 【 スクリプト改造依頼スレ 】(丸投げ) part3 pc5.2ch.net/test/read.cgi/php/1105046286/2 (テンプレ) ■ 自分で改造するアドバイスが欲しい場合には ★三 【 スクリプト改造工房 PART 8 】 ★三 pc5.2ch.net/test/read.cgi/php/1077525387/79 (テンプレ)
554 名前:6 mailto:sage [05/01/08 16:21:33 ID:???] こっちが★三 【 スクリプト改造工房 PART 8 】 ★三 で ・枠がどうしても青色。黒色に変えたい。枠の太さも1pxに。 ・日付に「'」が入ってしまう。 こっちが★三 【 スクリプト改造工房 PART 8 】 ★三 です。 見かけ上だけ消してるだけなので要らないソースは消してしまいたいがどれを消していいかわからない。 rmで表示したい。 ・1 名前 : 内容 5/06 12:40 とひとつのformで表示したい。
555 名前:nobodyさん mailto:sage [05/01/14 22:12:47 ID:???] 【. CGI名 .】 WwwSearch Ver3.15 - 検索フォーム 【配布先URL】 ttp://www.tohoho-web.com/wwwsoft.htm 【ヘルプ内容】 検索結果を、5件ごとや10件ごとに表示させるようにしたいです 自分がいじった部分のソースを貼ります sub search1 { local($dir) = $_[0]; local(@filelist, $file, $filename); opendir(DIR, $dir); @filelist = readdir(DIR); closedir(DIR); $begin = $FORM{'page'} * $hyouji; $end = $bigin + $hyouji; if($end > @filelist) { $end = @filelist; } (続く)
556 名前:555 mailto:sage [05/01/14 22:13:34 ID:???] #foreach $file (@filelist) { for ($a = $bigin; $a < $end; ++$a) { if ($file eq ".") { next; } if ($file eq "..") { next; } $filename = "$dir/$file"; if (-d $filename) { if ($recursive_flag) { &search1($filename); } } else { &search2($filename, $dir); } } if ($end < @filelist) { $nextpage = $FORM{'page'} + 1; print "<a href=\"$ENV{'SCRIPT_NAME'}?page=$nextpage\">次へ</a>\n"; } # } }
557 名前:555 mailto:sage [05/01/14 22:18:04 ID:???] foreachのかわりにforでまわしてみたんですが 結果は検索が一件もされず「次へ」のみが表示されてしまいます アドバイス、解決法よろしくお願いします
558 名前:nobodyさん mailto:sage [05/01/15 19:29:07 ID:???] >>555 久しぶりに改造工房にお客が来たのに放置されているなぁ〜 sub search1の@filelistだが、お前はこの配列に検索に引っかかったものが入っていると思っているだろ? 残念。 @filelistには対象ディレクトリの中にある全てのファイルが格納されている。 試しに closedir(DIR); のあとに errexit("@filelist"); って入れてごらんよ。 漏れならsub search1とsub search2を大改造しる。 opendir(DIR, $dir); で、指定してた拡張子のファイルのみを @filelistに入れていく。
559 名前:555 mailto:sage [05/01/15 23:08:47 ID:???] >558 指摘、アドバイスありがとうございます となるとforループ自体がおかしいことになりますね なんだか煮詰まってテンパってきました もちょっとガンガってみますです…
560 名前:nobodyさん mailto:sage [05/01/16 03:38:30 ID:???] KENTのBBSのソースでも眺めれ。 たいていは件数によって次ページ送りの機能がついているから。
561 名前:nobodyさん [05/01/17 11:01:28 ID:gvEGsU/w] 丸投げの方で放置されそうな勢いなので、自分で努力しつつこちらで質問します。 【. CGI名 .】 HiLink Type-B 【配布先URL】 ttp://www.e-hws.net/cgi_index.html 簡易表示の方法をちょっと変えたいです。新着順とランキング順しかソート方法が無いのですが、 これをタイトル(サイト名)で50音表示できるように変更したいです。 利用方法としては「ランキング表示」リンクボタン(?)を「50音表示」とし、クリックするとで50音順で 並ぶというものです。 表示方法なんかを改造してるので、行数が合わないと思われるので、名前で場所を伝えます。 sub mainの「表示データ作成」にある「# ランキング表示の場合、ソートする」をどうにかしたら良いんですよね? $ititleと$jtitleがサイト名のようです。 さらに、その下の「if( $iclicknum < $jclicknum ){」の部分を書き換えれば良いとは思うのですが… 素人ながらに「if( $ititle < $jtitle ){」ってしてみましたが、案の定変化無しです。 どのようにしたら50音順に並べる事が可能ですか? 宜しくお願いします。
562 名前:nobodyさん mailto:sage [05/01/17 18:56:00 ID:???] >>561 規約は読んだのか? 再配布禁止&&使用者はメールで届出の義務あり
563 名前:555 mailto:sage [05/01/18 19:32:37 ID:???] >560 眺めて悩んでいたらなんかわかってきました 558さん560さん、アドバイスありがとうございました
564 名前:nobodyさん mailto:sage [05/01/18 20:55:07 ID:???] >>562 このスレは改造工房であり、改造済みのスクリプトを手渡すわけではないので再配布禁止には当たらないかと… それにまだ改造したものを設置してないので、メールはまだしなくてもよいかと… 要するにヒントだけ与えれば質問者が何とかするって言うスレなので問題はないかと… >>561 今ちょっと忙しいので、そのうちスクを見てみるわ。
565 名前:nobodyさん mailto:sage [05/01/19 05:16:19 ID:???] >>561 惜しい。 Perlは数値か文字列かで比較演算子が異なる。 < の代わりに gt を使えば丁度だな。
566 名前:561 [05/01/19 10:15:04 ID:sYVj0TcQ] >>564 >>565 フォロー&返答ありがとうございます。 ばっちり出来ました。 文字列は数字じゃないから数字の演算式記号は使えないって事で覚えててOKでしょうか? アドバイスありがとうございました!
567 名前:730 mailto:sage [05/01/23 11:37:56 ID:???] 他スレから誘導されて来ました。 会員制掲示板のPerlCGIスクリプトです。普通の掲示板(KENTさんの書籍のスクリプトを参考に、過去ログ 作成機能と検索機能を削除した)に、IP制限とパス制を組み合わせ改造しました。 ✓で特定のIP(@allow)だったら認証画面(&admin)を出し、パスが合ったら掲示板を表示させる(&bbs)。 IPおよびパスが合わなければエラーを返す、・・・つもりでした。しかし下記のスクリプトでは認証画面は 表示しますが、パスを入力しても認証画面、パスミスでも認証画面になるという状態で、 どうにも煮詰まってしまいました。どこがおかしいのかご教授下さい。これでもIP制限は動作しています。 スクリプトはここにアップしました。該当部分だけ。 up.isp.2ch.net/up/af9977328ccc.txt
568 名前:730 mailto:sage [05/01/23 12:14:51 ID:???] ついでにお聞きします。 【スクリプト名】 Web拍手(公式HPから配布版DL。2004年10月。) 【CGIソース】 kaiseki.cgiだけ。 up.isp.2ch.net/up/18cf046e2758.txt 【改造した内容】 ●過去15日分のデータを保存し表示するのを、31日分にする。(crap.cgiとkaiseki.cgi) ●アクセス解析機能を追加し、拍手した人のホスト名をaccess.datに保存する。(crap.cgi) ●このスクリプトへアクセスしたときの画面にはaccess.datへのリンクを張る。 ●DLしたままのスクリプトでは、解析グラフのタグがぐちゃぐちゃだったので そこも変更。時間ごとのグラフも縦表示から横表示に変更し、31日表示を しやすくした。 ●グラフの画像も横表示に対応させた。 [現在困っていること] 上記改造を加えたあと先週までは問題なく動作していたのですが、今日アクセス してみたらスクリプトエラーが発生していました。拍手機能は動作しています。 kaiseki.cgiは、上記改造後何も手を加えていないので普通は起こりえないエラーです。 ただ原因として、ローカルに保存していたこのスクリプト(アプロダに挙げたもの)が 間違っていて、サーバーで動作していたのはサーバー側で直接書きなおしたからでミラーリング していなかった。それをFTPソフトの誤動作で全ファイルを送信したために、動かないローカルの スクリプトで更新されてしまった・・・というのが考えられます。 #FTPソフトのログにはこのファイルを送信したという記録はないのですが、一昨日以前のログが #消えているのでわからない。 そこでUPしたこのスクリプトを眺めてみたのですが、どこがおかしいのかわかりません。 pcheck.cgi(Perlスクリプト文法チェッカ)ではsyntax errorの発生はありませんでした。 なにか間違っているところがありましたら教えてください。
569 名前:nobodyさん mailto:sage [05/01/23 13:17:49 ID:???] >>567-568 アップ先が表示できません
570 名前:567 mailto:sage [05/01/23 16:52:48 ID:???] ありゃ。失礼しました。申し訳ないです(大汗) UPしなおしました。 >>567 yellow.ribbon.to/~mintplace/a.txt >>568 yellow.ribbon.to/~mintplace/kaiseki.txt
571 名前:555 [05/01/23 22:33:51 ID:a5mA126v] 再びすみません 【. CGI名 .】 WwwSearch Ver3.15 - 検索フォーム 【配布先URL】 ttp://www.tohoho-web.com/wwwsoft.htm 【ヘルプ内容】 検索結果を、「次へ」ボタンを押して、次の件をひょうじさせたいです 5件ごとや10件ごとの表示は最初だけは表示できるようになりました 「次へ」ボタンを押して、次の件をひょうじさせたいのですが うまくいきません この文を最後に追加しました print "<form method=\"POST\" action=\"$script?page=$page&word=$word\">\n"; print "<input type=\"submit\" value=\"次へ\">"; print "</form>"; 「次へ」ボタンを押しても検索結果が出てきません 何かたりないのでしょうか かなり悩みましたが答えが見つかりません ヒント、アドバイスお願いします
572 名前:nobodyさん mailto:sage [05/01/23 22:37:48 ID:???] 書き忘れました >571の文の前に $page=$FORM{'page'}; $word=$FORM{'word'}; を実行しています $scriptには自身のCGIファイルの名前が入ってます
573 名前:nobodyさん mailto:sage [05/01/24 00:23:35 ID:???] >>572 掲示板スクリプトを拾って読んでみたら応用できるんじゃない?
574 名前:nobodyさん mailto:sage [05/01/24 00:33:32 ID:???] >>572 かなり勘で答えるけど、 <form method=\"POST\" action=\"$script?page=$page&word=$word\"> これをこんな風にしたらだめ? <form method=\"POST\" action=\"$script¥"> <input type=\"hidden\" name=\"page\" value=\"$page\"> <input type=\"hidden\" name=\"word\" value=\"$word\"> それと、$pageが、ボタンを押したら変化する(=数字が増えたり減ったり) ようになってますか? (FORMのほうの数字が固定だったら、最初のページしか動かない。)
575 名前:572 mailto:sage [05/01/24 01:12:24 ID:???] >573 掲示板スクリプト眺めてるんですが 一向にらちがあかないのです;; >574 ありがとうございます 試してみましたが、結果はやっぱり同じでした 「次へ」を表示するとこまではいいんですが 押しても、検索フォームだけ出て結果は出ないのです ソースも晒したほうがいいでしょうか?
576 名前:572 mailto:sage [05/01/24 01:16:02 ID:???] >574 うっかりしてました この文の直前に $nextpage = $FORM{'page'} + 1; をしています print "<input type=\"hidden\" name=\"page\" value=\"$nextpage\">\n"; にしても結果変わらずです
577 名前:nobodyさん mailto:sage [05/01/24 01:33:30 ID:???] そんな送信する側の記述を書かれたってわかるわけない。 page=$pageとword=$wordという値を受け取ってどういう処理をさせてる?
578 名前:572 mailto:sage [05/01/24 09:52:41 ID:???] >577 sub readform { if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'}); } else { $query_string = $ENV{'QUERY_STRING'}; } @a = split(/&/, $query_string); foreach $x (@a) { ($name, $value) = split(/=/, $x); $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; $FORM{$name} = $value; } } の後 $page = $in{'page'}; $word = $in{'word'}; を実行してます (続く)
579 名前:572 mailto:sage [05/01/24 10:03:39 ID:???] (続き) if ($word =~ /[\x80-\xff]/) { # 日本語が含まれているフラグ $jflag = 1;# 日本語が含まれている # 一度EUCに変換する &jcode'convert(*word, "euc"); # 全角空白を半角空白に置換する(EUCの空白は#A1A1) $word =~ s/([\x80-\xff][\x80-\xff]|[\x00-\x7f])/($1 eq "\xa1\xa1") ? " " : $1/eg; # SJISモードであればSJISに変換する if ($kcode_file eq "sjis") { &jcode'convert(*word, "sjis"); } } sub search1の中から抜粋 if (defined($FORM{'WORD'})) { # メタ文字を無効化する if (!$jflag) { $word =~ s/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/\\$1/g; } # 検索語を分割する @words = split(/ +/, $word); # 検索する print "<dl>\n"; @dirs = split(/ +/, $target_dir); foreach $dir (@dirs) { &search1($dir); }
580 名前:572 mailto:sage [05/01/24 10:07:38 ID:???] $pageは>576にも書いたのですが$nextpageにしてますので 今は使ってません 最初の一回目は5件表示されるのに 「次へ」を押すと検索フォームだけ出て、結果が出ないのがはがゆくてなりません これで参考になりますでしょうか?
581 名前:nobodyさん [05/01/24 10:18:02 ID:f8wXJteD] >>580 Perlってデバッガ無いの? PHPだとZend入れてればIEの右くりメニューからデバッガ起動するよ。
582 名前:572 mailto:sage [05/01/24 10:28:28 ID:???] 一番重要なトコ忘れてました sub search2の中から抜粋 $bigin = $FORM{'page'} * $hyouji; $end = $bigin + $hyouji; if($end > @filelist) { $end = @filelist; } 中略 if ($bigin <= $a) { if ($a < $end) { $h_k++; print "<dt>■ <a href=\"$target\" target=\"out\">"; $title =~ s/<[^>]*(>|$)//g; $title =~ s/[\r\n]+//g; &jcode'convert(*title, $kcode_cgi); if ($title eq "") { $title = $target; } print "$title</a>\n"; if ($print_filename) { print "( <a href=\"$target\" target=out>"; $target =~ s/$tdir\/?//; print "$target</a> )\n"; } print "<dd>"; $imin = $i - $how_many_lines; if ($imin < 0) { $imin = 0; } $imax = $i + $how_many_lines; if ($imax > $#lines) { $imax = $#lines; }
583 名前:nobodyさん [05/01/24 10:29:17 ID:CX5KANJQ] for ($j = $imin; $j <= $imax; $j++) { $line = $lines[$j]; &jcode'convert(*line, "euc"); line =~ s/<[^>]*(>|$)//g; $tmp = $word; &jcode'convert(*tmp, "euc"); if ($jflag) { $tmp =~ s/([\+\*\.\?\^\$\[\-\]\|\(\)\\])/\\$1/g; } foreach $w (@words) { $w2 = $w; &jcode'convert(*w2, "euc"); $line =~ s/($w2)/<b>$1<\/b>/ig; } &jcode'convert(*line, $kcode_cgi, "euc"); print "$line "; if ($end >= @filelist) { exit; } } if ($h_k == $hyouji) { $nextpage = $FORM{'page'} + 1; print "<form method=\"POST\" action=\"$script\">\n"; print "<input type=\"hidden\" name=\"page\" value=\"$nextpage\">\n"; print "<input type=\"hidden\" name=\"word\" value=\"$word\">\n"; print "<input type=\"submit\" value=\"次へ\">"; print "</form>"; } } }
584 名前:nobodyさん mailto:sage [05/01/24 12:14:55 ID:???] 部分だけじゃなくてどっかに全部うpしろや。
585 名前:nobodyさん mailto:sage [05/01/24 12:35:13 ID:???] >>567 ✓ # アクセスチェック if ($mode eq ''){ &admin; } if ($FORM{'pass'} ne "$pass") {&error("パスワードが違います");} if ($mode eq 'regist'){ ®ist; } &bbs; exit; sub check { # アクセス制限 $host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2) || $ENV{'REMOTE_ADDR'}; foreach $i (@allow) { if ($host =~ /$i/) { return; } } &error("アクセスが許可されていません"); exit; } sub admin { #認証 &header; print << "_ID"; <form action="$script" method="POST"> <input type=hidden mode=bbs size="8"> <input type=text name=pass size="8"> <input type=submit value="認証"> </form> _ID &footer; exit; } 全体がわからんけどこんなところか。 ただしこれだけじゃなくて全体にも手を入れないと動かんよ。
586 名前:572 mailto:sage [05/01/24 18:07:17 ID:???] >584 うpしました www.uploda.org/upload.cgi?mode=dl&file=34893 受信パスは「cgi」です よろしくお願いします
587 名前:567 mailto:sage [05/01/24 22:09:17 ID:???] >>568 解決しました。jcode.plのパスが違ってました。 わかってみれば、にんともかんとも(滅) お騒がせしました。 >>566 についてはまだです。 パス認証だけどうしてもうまくいきません(TT)
588 名前:nobodyさん mailto:sage [05/01/25 04:15:56 ID:???] ttp://www.net-easy.com/psw/ezpsw.html のパスワード認証&自動発行スクリプト ttp://cat.zero.ad.jp/mouse/download/psw/ezpsw_cgi.txt まず、115行のメールアドレス入力欄 <INPUT name="mail_add" size="30"><BR> を <INPUT name="mail_add_a" size="30"><BR> <select name="mail_add_b"> <option value="\@docomo.ne.jp">\@docomo.ne.jp</option> <option value="\@ezweb.ne.jp">\@ezweb.ne.jp</option> <option value="\@c3.ezweb.ne.jp">\@c3.ezweb.ne.jp</option> </select> のように2段階入力にして、 ("mail_add_a"はメアドの@までのアカウント、 "mail_add_b"は@以降のドメイン名として代入) 147行 $mail_add = $in{'mail_add'}; の部分で 上記フォームから受け渡される"mail_add_a"と"mail_add_b"を連結して 変数 $mail_add に代入されるようにしたいのですが、 $in{'mail_add'}; の部分をどのように書き換えれば2つの文字列を連結させられるでしょうか?
589 名前:588 mailto:sage [05/01/25 04:31:03 ID:???] 付け足し 147行はメアドの書式をチェックする部分です。
590 名前:nobodyさん mailto:sage [05/01/25 11:35:50 ID:???] >>588 $mail_add = $in{'mail_add_a'} . $in{'mail_add_b'};
591 名前:nobodyさん mailto:sage [05/01/25 21:21:27 ID:???] >>590 解決しました。 vrytnx
592 名前:572 mailto:sage [05/01/27 21:43:23 ID:???] 忘れてました # このスクリプトの名前 $script = "kensaku2.cgi"; (78〜79行目辺り)の部分をスクリプトの名前に変えてください よろしくお願いします
593 名前:572=586 [05/01/28 22:52:33 ID:wG0bpuZu] うpしなおしました ttp://www.uploda.org/upload.cgi?mode=dl&file=36634 デバッグしてみると 「次へ」ボタンが押された時、検索語が受け渡されていないようです どこをいじればいいかわからなくなってきました アドバイスお願いします
594 名前:nobodyさん [05/01/29 16:02:16 ID:BgaXde9b] 【. CGI名 .】 Design BBS 1.80 【配布先URL】 prism-web.com 【ヘルプ内容】 このCGIについている、特定のIPからのアクセスを拒否するアクセス制限を、逆に特定のIPからのアクセスだけOKにするアクセス制限に変更したい。どうすればよいか。 DLしたままのファイルで、sub axs_checkのflagを逆にしてみたらスクリプトエラーになってしまい、他にどうすればよいかわからなくなった。 ーーここからスクリプト @deny = ( "hogehoge.com", ); &decode; #フォームデコード &axs_check; #アクセス制限 #(中略):フォームの設定が数行 &html; #BBS本体表示 # アクセス制限 sub axs_check { &get_host; if ($deny[0]) { local($flag)=0;#ここを1にして・・・その下の$flag=1を0にするとスクリプトエラー。 foreach (@deny) { #↓これは、@denyにないIPならループ抜けの意味ですよね?違う?(・・、 if ($_ eq '') { last; } $_ =~ s/\*/\.\*/g; if ($host =~ /$_/) { $flag=1; last; } } if ($flag) { &error("許可されていないアクセスです!") } } }
595 名前:594 mailto:sage [05/01/29 16:03:22 ID:???] # ホスト名取得 sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; # ホスト名取得に gethostbyaddr関数を使用する場合は$gethostbyaddr = 1;にします。 $gethostbyaddr = 1; if ($gethostbyaddr) { if ($host eq "" || $host eq "$addr") { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); } } if ($host eq "") { $host = $addr; } }
596 名前:nobodyさん mailto:sage [05/01/29 16:57:47 ID:???] >594-595 俺もperlをちょこっといじって遊んでるくらいの人間なんで、あんま自信ないけど・・・ if ($deny[0]) { local($flag)=0; foreach (@deny) { #↓これは、@denyから取り出した内容($_)が空('')だったらループ抜け、だと思 if ($_ eq '') { last; } $_ =~ s/\*/\.\*/g; if ($host =~ /$_/) { $flag=1; last; } #↑アクセスした人のホスト($host)に@denyから取り出した内容($_)が #↑含まれていたら$flagの値を1にしてループを抜ける #↑つまり「$flag==1なら拒否」 # これを「$flag==1なら許可」に変えたい → 言い換えると「$flag=!1なら拒否」 } if ($flag=!1) { &error("許可されていないアクセスです!") } #↑ということでここをこう変更すればいけるんでは? } ただ「特定のIPからの制限」なら、$hostじゃなくて$addrにするべきなんじゃ?って気がするけど
597 名前:594 mailto:sage [05/01/29 21:54:11 ID:???] >>596 if ($flag=!1) { &error("許可されていないアクセスです!") } これだと500エラーになってしまいましたです。 で if ($flag ne "1") にしてみましたが、こっちも500エラー。 if ($flag = "0")も500エラーでした。 >>594 だったらちゃんと動作するんですけど・・・(><)
598 名前:594 mailto:sage [05/01/29 22:21:41 ID:???] フラグを使わない方法を考えてみましたが・・・ sub axs_check { # ホスト名を取得 &get_host; if ($deny[0]) { foreach (@deny) { if ($_ eq '') { &error("許可されていないアクセスです"); last;} $_ =~ s/\*/\.\*/g; if ($host eq~ /$_/) { last;} #こうしたら、@denyのIPでのアクセスがエラーになる。 #$host ne にするとスクリプトエラーに。 } } } お手上げです(TT)
599 名前:594 mailto:sage [05/01/30 01:16:06 ID:???] たぶんできました。 sub axs_check { # ホスト名を取得 &get_host; if ($deny[0]) { local($flag)=0; foreach (@deny) { $_ =~ s/\*/\.\*/g; if ($host =~ /$_/) { $flag=1; last; } } if (!$flag) { &error("許可されていないアクセスです!") ; exit;} } } これで何とか動作しました。 >>596 さん、いろいろヒントありがとうでした。 >>595 の >if ($_ eq '') { last; } これ、@denyが空の設定がありうる、ということを失念しておりました(^-^; #だってデフォルトからして空ではなかったので、なんて言い訳してみるテスト(ぉぉ
600 名前:nobodyさん mailto:sage [05/01/30 05:18:46 ID:???] つか、500エラーに対処できないのかね? 多分こいつは共有サーバでテストしながら改造している希ガス