人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: saluru
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:URL 普通 自動 転送
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●20ポイント

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

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

setTimeoutを使います。

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

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

使用例


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


2 ● aki73ix
●20ポイント

http://nifberry.727.net/test/hatena140.htm

リダイレクトテスト

任意の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 を使います

◎質問者からの返答

CGIはつかえません。

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

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


3 ● aki73ix
●20ポイント

http://nifberry.727.net/test/hatena140_.htm

リダイレクトテスト2

あるページから 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);

}


?>

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ