ある特定のページに自動的に転送したいのですが、どうすればよいでしょうか?

よくある10秒後に転送されますといったようにしたいです。
ただし、普通の特定のURLに転送というのではなく、POSTしたページへ自動転送したいと考えております。
よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/08/30 10:18:21
  • 終了:--

回答(3件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982005/08/30 10:21:30

ポイント20pt

http://www.marguerite-site.com/Nihongo/HowToMakeYourWeb/JavaScri...

windowオブジェクト(ウェブの作り方・JAVAスクリプト)。

setTimeoutを使います。

http://www3.ocn.ne.jp/~bterrace/

bright terrace オリジナルエプロンHP 移転のため転送します。

使用例


ソースを見てみてください。

id:aki73ix No.2

aki73ix回答回数5224ベストアンサー獲得回数272005/08/30 11:34:30

ポイント20pt

任意のURLにX秒後に転送するCGIを書けば可能です


ソースはこんな感じになります


#!/usr/local/bin/perl

$mthd=$ENV{'REQUEST_METHOD'};

local($qu,@in,$key,$val);

if($mthd eq 'GET'){

$qu=$ENV{'QUERY_STRING'};

}

elsif($mthd eq 'POST'){

read(STDIN,$qu,$ENV{'CONTENT_LENGTH'});

}

*datas = decode();

if($datas{'sec'}==0){

$url="Location: ".$datas{'url'}."¥nConnection: Keep-Alive¥nKeep-Alive: timeout=15, max=100¥nContent-type: text¥/html¥n¥n";

}

else{

$url="Content-type: text/html¥n¥n<html><head><META HTTP-EQUIV=Refresh CONTENT=¥"".$datas{'sec'}."; URL=".$datas{'url'}."¥"><META HTTP-EQUIV=¥"CONTENT-TYPE¥" CONTENT=¥"text/html; CHARSET=Shift_JIS¥"></head><body>".$datas{'sec'}."秒後に".$datas{'url'}."にジャンプします

自動で移動しない場合は<a HREF=¥"".$datas{'url'}."¥">ここ</a>をクリックしてください</body></html>";

}

# $url="Content-type: text/html¥n¥n";

print qq($url);

exit;


sub decode

{

local(@query)=split(/&/,$qu);

foreach(@query){

tr/+/ /;

($key,$val)=split(/=/);

$key=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c",hex($1))/ge;

$val=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c",hex($1))/ge;

$val=~s/¥r¥n/¥n/g;

$vl2{$key}=$val;

}

return *vl2;

}


即時転送なら、Location:をヘッダに入れ、一定時間後なら META HTTP-EQUIV=Refresh CONTENT を使います

id:saluru

CGIはつかえません。

META HTTP-EQUIV=Refresh CONTENT ってGETしかできないと思いますが・・・。

POSTなので、悩んでるんですが・・・。

2005/08/30 15:17:06
id:aki73ix No.3

aki73ix回答回数5224ベストアンサー獲得回数272005/08/31 10:47:25

ポイント20pt

あるページから POSTしたデータ内に記述されたURLのページへ転送したいものかと勘違いしました

失礼しました


だとすると、PHPをURL中に埋め込むのはいかがでしょうか?(もしくはSSI)


PHPで5秒後に移動するコードを埋め込んだ場合は以下のようなソースになります(これは転送)

POSTするデータがあらかじめ分かっているならばJavaScriptの submit();をタイマ呼び出しするだけで

PHPを使う必要もなくなります(PHPは動的に変化するパラメータを処理するために必要)


<HTML>

<HEAD>

<TITLE>リダイレクト3</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">

<script language="JavaScript">

<!--

function subm()

{

setTimeout('',0);

form1.submit();

}

// --></SCRIPT>

</HEAD>

<BODY onload="setTimeout('subm()',5000);">

<FORM ACTION="http://www.hatena.ne.jp/search" METHOD="POST" NAME="form1">

<INPUT TYPE="HIDDEN" NAME="wd" value="<? echo $_REQUEST["wd"] ?>">

</FORM>

5秒後に移動します

</BODY>

</HTML>


直接POSTする場合は以下のようなソースになります(ただしアドレスバーはそのまま)


<?php

$POSTDATA = "wd=".$_REQUEST["wd"];

$request = "POST /search HTTP/1.0¥r¥n";

$request .= "Host: www.hatena.ne.jp¥r¥n";

$request .= "Content-Type: application/x-www-form-urlencoded¥r¥n";

$request .= "Content-Length: ".strlen($POSTDATA)."¥r¥n";

$request .= "Accept: */*¥r¥n";

$request .= "¥r¥n";

$request .= $POSTDATA."¥r¥n";

$request .= "¥r¥n";

$fp=fsockopen("www.hatena.ne.jp",80,$error_no,$error_str,30);

if(!$fp){

print $error_no."

";

print $error_str."

";

}

else{

fputs($fp,$request);


$r=0;

$response="";

while (!feof($fp)){

$res= fgets($fp,4096);

if($r==0){

if($res == "¥n" || $res ==" ¥r" ||$res=="¥r¥n"){

$r=1;

}

}

else $response.=$res;

}

print $response;

fclose($fp);

}


?>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません