![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
掲示板などのCGIの背景をランダムに変えたいのですが、
どうすればいいのでしょうか?
あるサイトでは、
@backimg =('img1.gif', 'img2.gif', 'img3.gif');
srand(time);
$imgno=rand($#backimg+1);
そして
$body="<body background=\"$backimg[$imgno]\">";
となっていたのですが、これをCGIに埋め込んでもうまく動きません。
(img1.gifしか表示されません。)
どうすれば背景画像をランダムに変化させることができるのでしょうか?
No.10ベストアンサー
- 回答日時:
>$body="<body background=\"$backimg[$imgno]\" bgcolor=\"$bc\"
text=\"$tx\" link=\"$lk\" vlink=\"$vl\]" alink=\"$al\">";
よくご覧になってください。
vlink=\"$vl\]"
となっていますよね。
\]"
の部分です。
これではエラーが出るのは当り前ですよね。
うち間違いでしょうか?
vlink=\"$vl\"
としてください。
よく見ると・・・・ゲゲ。
いったいいつの間に・・・>_<
確かにエラーがでるのは当たり前ですね。
一体私は何をやってんだか・・・
こんなもんを見落とすとは・・・・
まだまだ初心者だということを実感したかぎりです。ハイ。
お恥ずかしいかぎりです。
「]」をはずしてエラーもなくなりました。
長く付き合っていただき本当にありがとうございました。
No.9
- 回答日時:
>おそらく今までできなかった理由として、
>$bodyの中に
>「text="00000" alink ・・・・」
>が入ってたのでエラーが出てました。
$body="<body background=\"$backimg[$imgno]\">";
が
$body="<body text="00000" background=\"$backimg[$imgno]\">";
のようになっていた…という事でしょうか?
""内で"を使いたいときは、\"としなければいけませんよ。
実際、
background=\"$backimg[$imgno]\"
となっていますよね。
この辺は本当に基礎の部分ですので、一度Perlをしっかり勉強されてみてはどうでしょうか?
初心者向けに丁寧に解説されているサイトをご紹介しますね。
参考URL:http://tohoho.wakusei.ne.jp/www.htm
この回答への補足
回答ありがとうございます。
私が言いたかったことは、
$body="<body background=\"$backimg[$imgno]\">";
ならOKなのですが、これを
$body="<body background=\"$backimg[$imgno]\" bgcolor=\"$bc\"
text=\"$tx\" link=\"$lk\" vlink=\"$vl\]" alink=\"$al\">";
とするとエラーになるといいたかったのです。
(joyful noteの初期設定で
<body background="$bg" bgcolor="$bc" text="$tx" link="$lk" vlink="$vl" alink="$al">
となっていますので。)
エラーは
Bareword found where operator expected at
C:\www\mitsu\public_html\isweb\joyful\joyful.cgi line 67, near ""
となってます。
No.7
- 回答日時:
うまくいきましたか?
>>&header;
>>という記述より前に行わないといけませんよ?
>これは何を指しているのでしょうか?
>今私が持っているのはVersion 1.2ですが1.4と対して変わりはないはずですので、
&header;が実行されるよりも前に表示する絵を決めておかないといけませんという事です。
(例の4行を実行しておくということ)
でないと、せっかくsub headerの中で$bodyを表示させようとしても、その中は空っぽですよね。
意味がわからなければ、やはりsub headerの中に
srand(time);
(略)
を書かれた方が無難です。
それから、srand()に関しては#5、#6のO_Denwaさんのおっしゃるとおりです。
Perlのバージョンは解りますか?5.004以降だと、逆にsrandの記述が無くても
自動的に実行されるようですよ。
この回答への補足
今までできなかったのですが、今日(9/10)スクリプトをいじってたら
以下の内容でできるようになりました。
# bodyタグ
@backimg =('img1.gif', 'img2.gif', 'img3.gif');
#srand(time);
$imgno=rand($#backimg+1);
$body="<body background=\"$backimg[$imgno]\">";
おそらく今までできなかった理由として、
$bodyの中に
「text="00000" alink ・・・・」
が入ってたのでエラーが出てました。
はずすとエラーはでません。ですがこれらを入れると
エラーがまた生じます。よって今ははずしていますが・・・・。
text,link,alink,vlink,bgcolor
をはずしたままではちょっとみっともないよーな・・・
これらを入れるにはどうすればいいのでしょうか?
それともこれらは入れることができないのでしょうか?
入れないほうがいいというのであれば
スタイルシートで定義すればいいだけですので。
ただ、できるかできないかだけ教えてください。
No.6
- 回答日時:
#5モノです。
すんません。
眠気でなんの説明もせずに投稿しちゃったので、こちらで捕捉です。
#Srand(TIME);
として、「なんで、SRANDを飛ばすんじゃい」と思われるかもしれませんけど、
Perlの種類やバージョンによっては、Srandを入れる事により、
乱数の種が一定になるものがあります。
つまり、CGIを実行するたびに、同じ数値がでるのですね。
(私が借りてるところも、この現象がでます)
必ずしも、同じ現象なのかどうかはわかりませんけど、
最近のバージョンのPerlならば、乱数の種はSrandで設定しなくても、
CGI実行時に勝手に設定してくれるみたいですので、
とりあえず。Srandを飛ばしてどうか、試してみる価値はあるとおもいます。
違ってたらごめん。
No.5
- 回答日時:
とりあえず。
@backimg =('img1.gif', 'img2.gif', 'img3.gif');
srand(time);
$imgno=rand($#backimg+1);
を
@backimg =('img1.gif', 'img2.gif', 'img3.gif');
#srand(time);
$imgno=rand($#backimg+1);
としてみてはどうでしょうか。
回答ありがとうございます。以前はO_Denwaさんの言われたとおりにして
みてもできなかったのですが、
今日(9/10)もう一度試したところ、できました。
おそらく今までできなかった理由として、
$bodyの中に
text,link,alink,vlink,bgcolor
を入れてたのでエラーが出るようです。
はずすとエラーはでません。ですがこれらを入れると
またエラーが生じます。
無難にスタイルシートで定義しとけばいいのでしょうか?
text,link,alink,vlink,bgcolor
これらを入れることは可能ですか?それとも無理でしょうか?
No.4
- 回答日時:
joyful note落としてきました。
なるほど、改造の質問だからKENTさんのところでお聞きになれないんですね。
sub header{
print "Content-type: text/html\n\n";
print <<"EOM"
<html>
<head>
<title>$title</title>
</head>
$body
EOM
}
は問題ないのですが、肝心の
@backimg =('img1.gif', 'img2.gif', 'img3.gif');
srand(time);
$imgno=rand($#backimg+1);
$body="<body background=\"$backimg[$imgno]\">";
はどこに書かれました?
&header;
という記述より前に行わないといけませんよ?
これは色んなところで呼び出す物ですから、
@backimg =('img1.gif', 'img2.gif', 'img3.gif');
を初期設定の部分に解りやすく置いておいて、
sub header{
srand(time);
$imgno=rand($#backimg+1);
$body="<body background=\"$backimg[$imgno]\">";
print "Content-type: text/html\n\n";
print <<"EOM"
<html>
<head>
<title>$title</title>
</head>
$body
EOM
}
としてみてはどうでしょう?
初期設定云々がわからなければ、
srand(time);
の前に書いてしまっても問題ありませんが、
後々の変更を考えると、やはり初期設定に追加しておくのをおすすめします。
この回答への補足
>&header;
>という記述より前に行わないといけませんよ?
これは何を指しているのでしょうか?
今私が持っているのはVersion 1.2ですが1.4と対して変わりはないはずですので、
「&header」は319行目(付近)にあって、
「sub header{」は1738行目(付近)にありますよね?
どれを&headerの前に記述すればいいのですか?
4行をですか?
元々この4行は「初期設定」の中に入れてました。
ためしに1行目を残して後の3行をsub headerの中にいれてみましたが
画像は表示されません。
とりあえずversion 1.4で試してみます。
回答ありがとうございます。今日(9/10)もう一度試したところ、
できました。
おそらく今までできなかった理由として、
$bodyの中に
text,link,alink,vlink,bgcolor
を入れてたのでエラーが出るようです。
はずすとエラーはでません。ですがこれらを入れると
またエラーが生じます。
無難にスタイルシートで定義しとけばいいのでしょうか?
text,link,alink,vlink,bgcolor
これらを入れることは可能ですか?それとも無理でしょうか?
No.2
- 回答日時:
@backimg =('img1.gif', 'img2.gif', 'img3.gif');
srand(time);
$imgno=rand($#backimg+1);
$body="<body background=\"$backimg[$imgno]\">";
の部分に関しては問題ないと思います。
CGIはここだけで動いているのではないんですから、
これだけではなんともいえません。
それから「動かない」と言われても「どう動かないのか」は
novaakiraさんがおっしゃってくれないと
こちらではまったくわかりません。
InternalServerErrorが出るのですか?
正常に表示されるのに背景画像だけ表示されないのですか?
こういったご質問をされるのであれば、
最低
・どこまでやって
・どこで駄目になって
・どういう風にエラーが出ていて
・実行している環境と言語は何か
位は書いてください。
■画像だけがでない
・CGIと画像(img1.gif~img3.gif)は同じ階層にありますか?
・CGI用のディレクトリに画像が置けるサーバですか?
■Forbiddenになる
・パーミッションはあっていますか?
・CGIの実行できるディレクトリにアップロードしましたか?
■InternalServerErrorが出る
・CGIがPerlスクリプトでかかれている場合、Perlのパスはあっていますか?
・文法に間違いは無いですか?(セミコロン抜け等)
・FTPで転送する時にアスキー(テキスト)モードで転送しましたか?
文法の間違いなら、KENTさんの文法チェッカが便利だと思いますので
ご紹介しますね。
参考URL:http://www.kent-web.com/utility/index.html
この回答への補足
私にはまだ全部のスクリプトはかけませんので、
まずkentwebのjoyful note で試しているのですが・・・
質問に書いてあるとおり、これらの行を追加すると、
掲示板自体は表示されますが、img1.gifしかできてません。
まだサーバーにはアップしていません。ローカルでチェック中です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- ノートパソコン PowerPointにあるgif動画をgif動画のまま保存したい 3 2023/02/02 12:59
- HTML・CSS CSSでサイトの背景に画像を組み込みたいのですが反映されません 2 2022/11/22 16:21
- Excel(エクセル) セル内の一部に別セルを差し込む 3 2022/09/18 04:39
- Windows 10 zoomで自分の顔の背景 3 2023/06/07 22:34
- 経済学 資本移動や価格変動のない次のような固定為替レート・モデルを考える。 C = 10 + 0.8 Y I 3 2022/06/21 20:50
- その他(ソフトウェア) ペイントで切り抜いた画像の背景を透明に 2 2022/09/15 10:20
- Photoshop(フォトショップ) フォトショップで切り抜いた画像を透明にするには 3 2022/09/15 11:50
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
出来ているHTMLに無料CGIをつけ...
-
malformed header from script....
-
Pythonを用いてCGIを作る勉強を...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
文字の横にプルダウンを表示さ...
-
メモリをアドレスを直接指定し...
-
VB6で、長い時間かかる処理...
-
実行時エラー 3020の対策
-
構造体の各データの表示につい...
-
セレクトメニューで2つの項目...
-
pythonで演算子を変数に代入す...
-
formで特定のinputを送信しない...
-
<SELECT>タグの折り返し
-
どちのほうがすきですか?
-
少数点以下の桁数について
-
セレクトボックスの内容を中央寄せ
-
複数列を持ったリストボックス...
-
C++ コマンドプロンプトでの入...
-
10進数→2進数の出力について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
malformed header from script....
-
結果を得て自動的にページ移動...
-
テキストエリアにテキストファ...
-
初歩的なCGIですが その2
-
CGIから出力される文字が化けて...
-
テキストファイルの読み込み
-
パソコン → パャRン
-
my $html<<EOMの意味を教えてく...
-
perlで作ったcgiがIE6で西ヨー...
-
ランダムに背景画像を変える方法。
-
SSI にグローバル変数を渡すこ...
-
CGI(Perl)とHTMLについて
-
同じサーバ内のHPをロボット...
-
Perl CGIの中で # を使ってコメ...
-
shift-jisからutf8に変換
-
UTF8 URLエンコード
-
Pythonを用いてCGIを作る勉強を...
-
アクセス人数制限CGIについて。
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
おすすめ情報