痔になりやすい生活習慣とは?

こんにちは。

レンタルサーバーにて、認証後に開きたいページをlocationで実行してみたのですが動かなくて困っています。

index.html(ログインフォーム)

aaa.cgi(認証可否チェック)
↓OKならsessionを与えて
bbb.cgi(認証後にユーザーに見せる最初のページ)

location以外でダイレクトさせる方法を教えてください。

よろしくお願いいたします。

A 回答 (3件)

METAを使えばリダイレクトできますけども。


<meta http-equiv="refresh" content="0;URL=http://hogehoge.com">

普通は location でできます。
location の前にprint していませんか?
location は 一番最初(printする前)にやらないと動作しません。


ただし、例の動作でしたら私ならばaaa.cgiにすべて入れてしまいますね。
subルーチンとかを使えば余計なページ移動を考えなくてもいいので。
    • good
    • 0
この回答へのお礼

仰るとおりですね。

別ファイルに記述しなくとも、
subで問題ありません。

ただ、動かなかったので気になりました・・

お礼日時:2005/07/16 16:32

print "Location~


という行の前に
print "Content-type~
とか入っていませんか?
    • good
    • 0

まずlocationでリダイレクトが本当にできないかどうかを確認するべきかと。


書いたソースと、起きた現象について補足願います。

この回答への補足

http://www.futomi.com/lecture/ohter/redirect.html
を参考にして、

aa.cgi
-----------------------------------------
print "Location: http://○○/bb.cgi\n\n";

-----------------------------------------

としました。

結果は、
http://○○/bb.cgi
が出力されているだけで動きません。

補足日時:2005/07/16 16:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QLocation: で cgi → cgi は不可?

print "Location: ./index.cgi\n\n";

上記の命令でエラーとなります。
i-mode用のHPを作ろうと思うのですが,情報の受渡が必要でして・・・
どうすればいいのでしょう?
何かいい方法有りませんか?

Aベストアンサー

 Location: ヘッダは、http:// から始まるフルパスでないと動きません。
 チェックしてみてください。

Q処理終了後、他のページへジャンプする方法

perl での処理を終了後、他のページ(html)に自動的に飛ばしたいのですが(JavaScriptは使わずに)、どうすればよいでしょう。

Aベストアンサー

 CGIで動的ページを吐き出す際に、頭に
  print "Content-type: text/html\n\n";
とか表示しますよね?

 これと同じような感じで、
  print "Location: URL\n\n";
とすれば、そのURLにリンクしたかのように動作します。
 このとき、LocationとURLの間に半角スペース1つ開ける(確か必要なハズ…)のと、URLは絶対アドレスで指定する(相対指定だと飛ばないトコもあるらしい?)のを、忘れないようにして下さいね。

 では

QCGI動作後に元のページに戻る方法

Perl , javascript 初心者です。
あるページの一番下に,チェックボックスを設置して選択してもらうという簡単なアンケートを作っています。
submit ボタンを押した後,CGI(Perl) で処理を行い,その後元のページの元いた場所(アンケートがあるところ)を表示させることはできますか?
また,できれば submit ボタンの横に「ご協力ありがとうございました」というコメントを表示したいと思います。

良い方法があれば教えて下さい。

Aベストアンサー

perlでは、
print "location: (URL)\n\n";
これでページを呼び出します。
同じフォームに戻らなくても、お礼のページを作った方が良いと思います。
どうしても、フォームに戻るなら、CGIから戻ってきたことが判るようにURLの後ろに「?back」などと識別コードを付けます。
そして、HTML内にJavaScriptを埋め込み、自分自身のURLを調べれば、普段のURLと違うことが判ります。

Q結果を得て自動的にページ移動を行うには?

CGIプログラムの初心者です。取り合えず作ってみようと思いまして、本を片手に「診断系の占い」のプログラムを書き始めました。生年月日を入力して性格を占う(?)、いわゆる「動物占い」とか「星座占い」のようなやつです。

入力した生年月日から数値を導き、その数値を元に数通り用意した結果のページ(HTML)へ移動させるようにしたいのですが、移動のさせ方がよくわかりません。CGIの中にHTML文書を書いて表示させるのではなくて、別に用意したHTMLのページへ移動させるにはどうしたらいいのでしょうか?

とりあえず
print "Content-type: text/html\n\n";
print <<EOF;
<html>
<head>
<meta HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=$kekka\">
<title>占いの結果です</title>
</head>
#以下略します
#$kekka ←この変数にアドレスを代入してます。

という感じで、<meta>を入れて移動させるようにしてみたんですけど、もっと正攻法があるんじゃないかな?と、疑問を感じました。
申し訳ありませんが、教えていただけると嬉しいです。

CGIプログラムの初心者です。取り合えず作ってみようと思いまして、本を片手に「診断系の占い」のプログラムを書き始めました。生年月日を入力して性格を占う(?)、いわゆる「動物占い」とか「星座占い」のようなやつです。

入力した生年月日から数値を導き、その数値を元に数通り用意した結果のページ(HTML)へ移動させるようにしたいのですが、移動のさせ方がよくわかりません。CGIの中にHTML文書を書いて表示させるのではなくて、別に用意したHTMLのページへ移動させるにはどうしたらいいのでしょうか...続きを読む

Aベストアンサー

別にその方法でもいいと思いますが、その他には「Locationヘッダでリダイレクトさせる」方法や「結果ページのHTMLを読み込んで表示する」方法などが考えられます。

Location の場合、
 print "Location: $kekka\n\n";
とだけ出力すればOKです。
META の Refresh による方法と、ほぼ同じ結果になります。
※$kekka は、念のため絶対URLの方がよいです。

HTMLを読み込んで表示するなら、
 print "Content-Type: text/html\n\n";
 if (open(FH, "< $file")) {  # $fileには、$kekkaに相当するHTMLのファイルパスを指定
   print <FH>;
   close FH;
 }
 else { print "Error: $!" }
という感じ。
こっちの方がMETAやLocationで飛ばすより、早くページが表示されます。

QPerlプログラム上でアラートを表示

現在、Perlにてチェックプログラム(チェック内容は省かせていただきます)を作っています。

もともとはweb上で「登録」をクリックすると以下のような csh で記述されたcgiが実行され、
------------------------------
#!/usr/bin/csh
echo "Content-type: text/html"
echo ""
~中略~
./既存プログラムA.exe
------------------------------
最終的に「既存プログラムA.exe」が起動するというような物で、今回この「既存プログラムA.exe」が起動される直前にチェックプログラムを実行するというものです。

前置きはこのような感じで、教えていただきたい内容は、
チェックプログラム内の記述に以下のようなチェック項目があります。
------------------------------
if(!(-e $CIRCUIT)){
print"END";
exit(0);
}
------------------------------
「$CIRCUIT」というフォルダが存在するか否か、存在すれば次のチェック項目へ、存在しなければ処理終了というような単純な構文なのですが、
このif文内に、"そのようなフォルダはありません"アラートを表示させるような記述を追加することは可能でしょうか?

サンプルURLや情報等お持ちの方いらっしゃいましたら、
よろしくお願いいたします。

現在、Perlにてチェックプログラム(チェック内容は省かせていただきます)を作っています。

もともとはweb上で「登録」をクリックすると以下のような csh で記述されたcgiが実行され、
------------------------------
#!/usr/bin/csh
echo "Content-type: text/html"
echo ""
~中略~
./既存プログラムA.exe
------------------------------
最終的に「既存プログラムA.exe」が起動するというような物で、今回この「既存プログラムA.exe」が起動される直前にチェックプログラムを実行するというも...続きを読む

Aベストアンサー

ウェブ上でアラートを出すなら
print <<END;
<script>
alert('メッセージ');
</script>
END
とかしてみたらどうでしょう。
(未確認自信なし)

Q数値かどうかの判定方法

$aに代入されているものが数値かどうかを判定するにはどのようにしたらよいのでしょうか?

Aベストアンサー

$a =~ /^[0-9]*$/
上記の場合、*は「直前のパターンの0回以上の繰り返し」の意味なので、0から9がなくても、つまり$aが空でもマッチしてしまいます。
なので、
$a =~ /^[0-9]+$/
としましょう。
(+は「直前のパターンの1回以上の繰り返し」)
また、0-9は\dで表すこともできるので
$a =~ /^\d+$/
と書くこともできます。

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

QHTML上(javascript)からCGIを実行する方法

javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI)
を実行する方法を探しています。
下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の
javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に
『test』と表示するのみ)を表示したいと考えています。

利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、
cgiが使用できるサーバ上のcgi結果を取得したいものです。
通常のcgiのように、1ページでcgi結果を表示するものではなく、
HTMLファイルの一部にcgi処理結果を表示させたいものです。

そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの
実行結果を表示する事は出来ないのでしょうか。
よろしくお願い致します。

※下例のプログラムではcgi結果は表示されませんでした・・・。

---<index.htm>----------------------------------------
<HTML>
<BODY>
<SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT>
</BODY>
</HTML>

---<test.cgi>----------------------------------------
#!/usr/bin/perl

print "test"

javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI)
を実行する方法を探しています。
下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の
javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に
『test』と表示するのみ)を表示したいと考えています。

利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、
cgiが使用できるサーバ上のcgi結果を取得したいものです。
通常のcgiのように、1ページでcgi結果を表示するものではなく、
HTML...続きを読む

Aベストアンサー

「Google AdSense」のjavascriptでは#1さんの回答にもありますがiframeを使用するような仕掛けになっているようです。
・javascriptでiframeを展開。
・iframeのsrcでcgiを指定。

>外部cgiでjavascriptを生成する仕組みを作り、その生成されたjavascriptを参照するという間接的な仕組みを設ければ可能になる
そういう仕組みも可能です。
また、直接的に<script type="text/javascript" src="xxxx.cgi"></script>
こういう書き方も可能です。
※xxxx.cgiでは処理結果をjavascriptのコードとして
print "Content-Type: application/x-javascript\n\n";
print "document.write('xxxx');";
みたいにして吐き出す必要があります。

QUse of uninitialized value ---

初心者です。フォームに文字を入力してもらい、↓
print blockquote(
textfield(
-name => 'die Antwort',
省略----条件にあえば、
my $value = param('die Antwort');#として
if (($value eq $ans || $value eq $ans2) and ($c eq $num)){
「正解」と表示することにしました。すると、うまくいくのですが、
if (($value eq $ans || $value eq $ans2) and ($c eq $num)){
について「Use of uninitialized value ----」とApacheのerror logに書かれてしまいます。このためerror logがすぐに巨大なファイルになってしまいます。これを避ける方法をお教えください。よろしく、お願いいたします。

Aベストアンサー

コードに use warnings が入っているのですよね。
デバッグも済んでいるのでしたら、
no warnings qw ( uninitialized );
で、この警告の表示を抑制してもよいと思います。

QHTMLとPerl間のページ遷移について。

HTMLとPerl間のページ遷移について。

こんにちわ。
HTML(index.html)でログインフォーム(ユーザ名、パスワード)を作成し、そこに入力した情報を、Perl(login.pl)にPOST送信します。
Perlでは、受け取ったパラメータをチェックし、ユーザ名とそのパスワードが正しければ、もとのHTMLファイル(index.html)にページ遷移し、もともとあったログインフォームをJavaScriptで削除し、「ログイン中」と表示させる、ということをしたいのですがわからないところがあり投稿させていただきました。

現在、クライアントでは、JavaScriptを使ってログインフォームを作っています。そして、フォームの中の値を取得して、POST送信することはできます。次に、サーバにてPerlで受け取ったパラメータをチェックし、ユーザ名とパスワードの認証をとるところまではできています。しかし、その後にどうすべきかがわかりません。locationで、もとのHTMLファイル(index.html)を指定しても、ログインを認証したという情報は保持しておらず、それでは意味がありません。
Perlでログインを認証した後に、認証したという情報を保持したままHTMLページに遷移する事は可能でしょうか。可能であればその方法を教えていただきたく思います。
よろしくお願いします。

HTMLとPerl間のページ遷移について。

こんにちわ。
HTML(index.html)でログインフォーム(ユーザ名、パスワード)を作成し、そこに入力した情報を、Perl(login.pl)にPOST送信します。
Perlでは、受け取ったパラメータをチェックし、ユーザ名とそのパスワードが正しければ、もとのHTMLファイル(index.html)にページ遷移し、もともとあったログインフォームをJavaScriptで削除し、「ログイン中」と表示させる、ということをしたいのですがわからないところがあり投稿させていただきました。

現在、クライア...続きを読む

Aベストアンサー

 Perlが使えるなら、わざわざ制約の大きいjavascriptなど使わなくてすむと思いますが????

perlにて、
if(チェックOK){
 $login_FORM = qq^ログイン中<form
 action="$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}" metod="post">
 <input type="submit" size="10" value="ログアウト" </form>^;}
else{
 $login_FORM = qq^<form
 action="$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}" metod="post">
 <input type="text" size="10" value="" name="userName">ID
 <input type="pasword" size="10" value="" name="pasword">パスワード
 </form>^;
}

print qq^現在のHTMLからjavascriptを除いたものをここに書く。
$login_FORM
続きのHTML^;
**************処理
__END__

この場合、index.cgiが、そのページになる。
 htmlの拡張子がよければ、htmlをCGIとして、サーバーに認識させるか、PATH_INFOで処理すること。
例) htt://hoge.com/userPage/index.html
              ^^^^^^^^^自体をCGIにする

 Perlが使えるなら、わざわざ制約の大きいjavascriptなど使わなくてすむと思いますが????

perlにて、
if(チェックOK){
 $login_FORM = qq^ログイン中<form
 action="$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}" metod="post">
 <input type="submit" size="10" value="ログアウト" </form>^;}
else{
 $login_FORM = qq^<form
 action="$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}" metod="post">
 <input type="text" size="10" value="" name="userName">ID
 <input type="pasword" siz...続きを読む


人気Q&Aランキング