質問
-
ライト
perlの表現がとっつきづらい -
本文:
for とか if とかVBライクでいいのですが、eqとか=じゃないですし、ダブルコーテーションの使い方とか\とか$とかの使い方とか表現方法が記憶して使いづらいです。
VBの世界の人間なので、VBSのようになればと思いますが、使いづらいです。
true false and or notとか使えればいいのですが、
perlの世界は面倒です。
if checkbox=false then exit
とかやりたいだけなのに、perlじゃ解んないです。
ようはチェックボックスを付けて、自動巡回で記録してくロボットに記入させたくないだけなのですが、
以下のソースコードに追加して欲しいです。
もちろんただでは無いです。プログラムの事なので、LiteCoinを0.004送りますのでLiteCoinアドレスもお願いします。今は安いですが、将来上がる可能性ありますよ。
********
#!/usr/bin/perl
# 掲示板 その4
require "./cgi-lib.pl";
print "Content-type: text/html; charset=UTF-8\n\n";
# フォーム部分を表示する
print <<EOL;
<html>
<h1> ネットのいい使い方を書いて頂けましたら、少ないですがLiteCoinを送りますのでライトコインアドレスをお願いします。どうでもよければ送りません。w</h1>
<body>
<h2>掲示板</h2>
<form method="post" action="bbs4.cgi">
<table>
<tr>
<th>タイトル</th>
<td><input type="text" name="title" size="40"></td>
</tr>
<tr>
<th>メッセージ</th>
<td><textarea name="message" cols="60" rows="5"></textarea></td>
</tr>
<tr>
<th>お名前</th>
<td><input type="text" name="namae" size="30"></td>
</tr>
<tr>
<th>e-mail</th>
<td><input type="text" name="mail" size="30"></td>
</tr>
<tr>
<th>削除キー</th>
<td><input type="password" name="delkey" size="10"></td>
</tr>
<tr>
<th> </th>
<td><input type="submit" name="write" value="送信"></td>
</tr>
</table>
<hr>
<table>
<tr>
<th>記事番号</th>
<td><input type="text" name="delno" size="10"></td>
<th>削除キー</th>
<td><input type="password" name="delkey2" size="10"></td>
<td><input type="submit" name="delete" value="削除"></td>
</tr>
</table>
</form>
<hr>
EOL
&ReadParse(*form);
# フォームの値を取得
$namae = $form{"namae"};
$mail = $form{"mail"};
$title = $form{"title"};
$message = $form{"message"};
$delkey = $form{"delkey"};
# ログファイル読み込み
open(IN, "./bbs4.txt");
@log = <IN>;
close(IN);
# フォームからの書き込みのときは書き込み処理を行なう
if ($form{"write"}) {
# タグの無効化
&deltag($namae);
&deltag($mail);
&deltag($title);
&deltag($message);
&deltag($delkey);
# 改行を<br>に変換
$message =~ s/\r\n/<br>/g; # Windows系(\r\n)
$message =~ s/\r/<br>/g; # Mac系(\r)
$message =~ s/\n/<br>/g; # UNIX系(\n)
# 現在時刻を取得
$time = `date +'%Y/%m/%d %T'`;
chop $time;
#記事番号は前の番号+1
($no) = split(/\t/, $log[0]);
$no++;
# ログ先頭に書き込み内容を格納
unshift @log, "$no\t$delkey\t$namae\t$mail\t$title\t$message\t$time\n";
# ログ最大数を30件に制限
splice @log, 10000;
}
# フォームからの削除のときは記事削除処理を行なう
if ($form{"delete"}) {
for ($i = 0; $i <= $#log; $i++) {
($no, $delkey) = split(/\t/, $log[$i]);
if ($no eq $form{"delno"} and $delkey eq $form{"delkey2"}) {
splice @log, $i, 1;
break;
}
}
}
if ($form{"write"} or $form{"delete"}) {
# ログファイルにロックをかけて書き込み
open(OUT, "+< ./bbs4.txt");
flock(OUT, 2);
truncate(OUT, 0);
seek(OUT, 0, 0);
print OUT @log;
close(OUT);
}
# ログ表示
foreach $data (@log) {
chop $data;
($no, $delkey, $namae, $mail, $title, $message, $time) = split(/\t/, $data);
print "No.$no $title";
print " 投稿者:";
if ($mail ne "") {print "<a href='mailto:$mail'>";}
print $namae;
if ($mail ne "") {print "</a>";}
print " 投稿時刻:$time";
print "<br><br>\n";
print "$message<br>\n";
print "<hr>\n";
}
print "</body>\n</html>\n";
# タグを除去するサブルーチン
sub deltag {
$_[0] =~ s/</</g;
$_[0] =~ s/>/>/g;
}
- 緊急度:通常投稿者:blueseabluemoonさん投稿時間:2018/12/18 06:26
回答 No.8192
-
本文:
平素はネットオウルをご利用いただき誠にありがとうございます。
ネットオウル運営チームです。
本ご質問は一定期間新たな回答がなかったため
運営チームで締め切らせていただきました。
■質問の締め切りについて
Q&A掲示板はユーザー様同士の交流掲示板です。
回答がもらえた場合、回答者へお礼コメントをしましょう。
問題が解決した際にはベストアンサーを選び、
質問を締め切ってください。
■再度のご質問について
ご質問が未解決の場合、「ワンポイント!」を参考に、
再度質問してみてください。
【ワンポイント!】
メールやFTPの設定がうまくいかない場合、
ネットオウルIDやサーバーIDなどのお客様情報を公開しない範囲で、
現在の設定内容を出来るだけ詳しく書いてみましょう。
設定内容のミスを指摘してもらえるかもしれません。
エラーが出てうまくいかない場合、
エラーメッセージの内容を書いてみましょう。
エラーメッセージにはエラー原因が詳しく書かれていることが多く、
問題の解決につながる回答が得られるかもしれません。
■ベストアンサーについて
ご質問の締め切りに際して、運営チームにて
ベストアンサーを選んでおります。
※ベストアンサーの回答者様には通常と同様のポイントが
付与されています。
--ネットオウル運営チーム-- - 投稿者:ネットオウル運営 投稿時間:2019/01/03 10:05
回答 No.8094
この回答がベストアンサーです
掲示板は、よほどプログラミングに自信があって、既存のプログラムではできない機能があるというのでなければ、有名どころのプログラムを使った方がいいですよ。(たとえば、kent-webのとか。)
例えば、入力に "&<" とか"\<"とか"\t"とかが入っていると、出力は期待通りにはならないのでは?