CGI-BBS > データベース > CGI検索 > CGI検索について登録データを読み込むことができない。


カレッヂ
カレッヂ


質問者 まだまだ初心者  投稿日 2005/4/17(日) 14:27:35
CGIを使用して、リンクを管理しています。
リンクデータを登録するページは出来ました。
無事リンクも登録されます。
そして、リンクデータを修正するページを作成し、CGIも作成しました。
チェッカーでも「Syntax OK」となるのに実際にアップするとエラーになります。
「Internal Error」のエラーが出ます。
以下、スクリプトを記しておきますので、どなたかどうすれば動くようになるかご教授下さい。
宜しくお願い致します。

〜リンクデータを読み出す〜
&kheader;

print << "EOH";
  <form action="link_kanri.cgi" method="post" name="" target="_self">
   <input type="hidden" name="link" value="modify1" border="0">
   <table width="240" border="0" cellspacing="0" cellpadding="0">
    <tr>
     <td colspan="2" align="center" valign="middle"><font class="b2" color="white">D-POCKET長野店管理画面</font></td>
    </tr>
    <tr>
     <td colspan="2" align="center" valign="middle"><font class="b2" color="white">リンク管理画面</font></td>
    </tr>
    <tr>
     <td colspan="2" align="center" valign="middle">
      <br><font class="b1" color="orange">訂正するリンク先の名称をご記入下さい。</font><br><br>
     </td>
    </tr>
    <tr>
     <td nowrap><font class="b2" color="white">リンク先名称</font></td>
     <td><input type="text" name="lmoname" size="24" border="0"></td>
    </tr>
    <tr>
     <td></td>
     <td><br></td>
    </tr>
    <tr>
     <td colspan="2" align="center"><input type="submit" name="" value="次の画面へ" border="0"></td>
    </tr>
   </table>
  </form>
EOH

&kfooter;


〜上のページからのデータを受け取り条件に合うデータだけを表示〜
open(IN,"link.dat") || die &error(3,"ファイルを開けません。");
 while(<IN>) {
 chop $_;
 ($lname,$lurl,$lgroup,$time) = split(/\,/,$_);
 if($form{'lmoname'} =〜 /^$lname/) {
    push @lmodata, $_;
    $lmoflag = 1;
 }
}
close IN;

 if(!$lmoflag) { &error(6,"該当データがありません。"); last;
}else {
&kheader;
print << "EOH";
  <form action="link_kanri.cgi" method="post" name="" target="_self">
  <input type="hidden" name="link" value="modify2" border="0">
  <input type="hidden" name="time" value="$time" border="0">
   <table width="240" border="0" cellspacing="0" cellpadding="0">
    <tr>
     <td colspan="2" align="center" valign="middle"><font class="b2" color="white">D-POCKET長野店管理画面</font></td>
    </tr>
    <tr>
     <td colspan="2" align="center" valign="middle"><font class="b2" color="white">リンク管理画面</font></td>
    </tr>
EOH

foreach(@lmodata) {
 ($lmoname,$lmourl,$lmogroup,$time) = split(/\,/,$_);
 print << "EOH";
    <tr>
     <td><br></td>
     <td></td>
    </tr>
    <tr>
     <td nowrap><input type="radio" name="linkm" value="$time" border="0"></td>
     <td><font class="b2" color="white">$lmoname</font></td>
    </tr>
    <tr>
     <td colspan="2"><hr noshade></td>
    </tr>
EOH
}

print << "EOH";
    <tr>
     <td colspan="2" align="center"><input type="submit" name="" value="次の画面へ" border="0"></td>
    </tr>
   </table>
  </form>
EOH
&kfooter;
}

【プロバイダ】http://www.interlink.or.jp
【習熟度】中程度の改造ができる

回答者 sim  [削除]  投稿日 2005/4/17(日) 15:21:45
チェッカーでSyntax OKが出るのであれば、その部分の間違いではないんじゃないですかね?

1.&kheader;が読まれていない

&kheader;
print "Content-type: text/html\n\n";

こうしたら表示されちゃう場合。

2.perlPATHが違う。

#!C:/Perl/bin/Perl

になっちゃってるとか。

3.別ファイルがエラー。

〜リンクデータを読み出す〜
の呼び出し元に問題があるとか。

4.パーミッション

多分この辺じゃないかなと思います。
質問者 ???????????S者  [削除]  投稿日 2005/4/17(日) 16:04:33
sim様
早速のレスありがとうございます。
ご指摘頂いた点を確認してみました。

1.&kheader;が読まれていない
 ヘッダーは無事読み込まれていました。

2.perlPATHが違う。
 インターリンクのHPで確認しましたが、HPの記載と同じでした。

3.別ファイルがエラー。
〜リンクデータを読み出す〜
の呼び出し元に問題があるとか。
 同じログを使用してリンクを表示させているのですが、表示ページに問題がなかったので、大丈夫かと思います。

4.パーミッション
 cgi実行ファイルを755、ログファイルを666に設定していますが、いかがでしょうか?

このサーバーを5年程使用しているのですが、最近、Perlのバージョンが5.6.1に変わりました。
そのためか今まで使用していたスクリプトでもエラーが出るようになっています。
この辺りが問題なのでしょうか?

引き続きご教授下さいますようお願い致します。
回答者 sim  [削除]  投稿日 2005/4/17(日) 18:40:07
 if($form{'lmoname'} =〜 /^$lname/) {
    push @lmodata, $_;
    $lmoflag = 1;
 }

ここに大文字が入ってましたね。

=~ /^$lname/

に変えてみてください。

質問者 まだまだ初心者  [削除]  投稿日 2005/4/17(日) 19:48:03
sim様
レスありがとうございます。
小文字に変えてみましたが、相変わらず「Internal Error」と表示されます。

もうどうして良いか分からないです..
回答者 sim  [削除]  投稿日 2005/4/18(月) 00:57:24
&errorがないとか。

返信(回答)する

 


Web裏技