質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Q&A

解決済

1回答

7746閲覧

phpでリダイレクトの秒数指定

motoo888

総合スコア65

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

0グッド

0クリップ

投稿2018/04/10 07:16

phpでリダイレクトするときの秒数を指定したい

phpで何秒後にリダイレクトするという指定はできるのでしょうか。

該当のソースコード

<!doctype html> <html> <head> <meta charset="UTF-8"> </head> <body> <!--shinobi1--><script type="text/javascript" src="//xa.shinobi.jp/ufo/18559780d"></script> <noscript><a href="//xa.shinobi.jp/bin/gg?18559780d" target="_blank"> <img src="//xa.shinobi.jp/bin/ll?18559780d" border="0" alt=""></a><br> <span style="font-size:9px"><img style="margin:0;vertical-align:text-bottom;" src="//img.shinobi.jp/tadaima/fj.gif" width="19" height="11" alt=""> </span></noscript><!--shinobi2--> <?php header('Location: http://mani.gr.jp/'); exit; ?> </body> </html>

補足情報(FW/ツールのバージョンなど)

metaかjsでアクセスカウンターを設置していたのですが、phpにしたい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHPはサーバー側の言語で、タイミングとしては画面表示前に実行されます。
sleep()により処理を任意の秒数止めることはできますが、実際にページを開いた人からすれば、ただ単に白い画面(もしくは、当リダイレクトページの前のページの状態)で指定秒数待たされた後に指定のページに飛ばされるだけ、ということになります。

shinobiという記述が散見されますが、アクセスカウンタ、アクセス解析でしょうか?
画面表示がされない(HTMLがレンダリングされない)ままリダイレクトされるので、当然、カウント集計もされないことになります。
集計したいのであればPHPでは効果が出ません。

投稿2018/04/10 07:25

編集2018/04/10 07:34
m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dit.

2018/04/10 07:36

おそらくhttps://teratail.com/questions/115456の質問からの流れかと思います。
m.ts10806

2018/04/10 07:39

dit.さん 補足ありがとうございます。 前の回答で解決してたはずの問題のような・・・。 PHPでは集計無理 という回答だけで良かったですね;
motoo888

2018/04/10 08:35 編集

説明不足にも関わらず教えてくださりありがとうございます。 dit.さん補足していただきありがとうございます。 phpでは処理を止めるだけで、htmlを先に実行はできないんですね。 理屈を教えてくださりありがとうございます meta、0秒でアクセス集計したところ、「生ログ」と「アクセス数」の集計が合わず、 1秒にして検証してみたかったんです。 phpにしたいのは、上司が何故か「phpにしろ」と言うからです
m.ts10806

2018/04/10 08:33 編集

> phpにこだわるのは何故か上司が「phpにしろ」と推しが強いからでした 妥協案: <meta charset="UTF-8"> <?php $stop_seconds = 1; echo '<meta http-equiv="refresh" content="'.$stop_seconds.';URL=http://mani.gr.jp/">'; ?> </head>
m.ts10806

2018/04/10 08:35 編集

PHPのheaderリダイレクトではHTMLレンダリング前に実行されるので無理です。 かわりに、こういう方法でどうでしょう? みたいな提案するしかないですね。 まあこれだとPHP使ってますけど直接metaタグ書くのと全く変わらないですけど、 「実現可能な案はこれ」くらいは言えるかと。
m.ts10806

2018/04/10 08:39

> meta、0秒でアクセス集計したところ、「生ログ」と「アクセス数」の集計が合わず、 レンダリングは上から順番にされるので、metaタグを通ってからの秒数的に0秒ではほぼ集計コマンドまで到達できないということだと思います。 前回質問にあるように「htmlが表示されたら集計」みたいな仕組みになっていると思います。 もしくはjavascriptでwindow.onloadでリダイレクトするか。(Google的にmetaでのリダイレクト推奨してないみたいですし) その部分もPHPでechoすればひとまず「PHP使った」という面目は保てますが、metaのときと同じでPHPの意味ほとんどないですね。
motoo888

2018/04/11 01:08

jsでwindow,onloadというのを知りませんでした。 これだとアクセス数の誤差が解決しそうな感じがします。 妥協案でphpを使うことができるも、php使う意味がわからなくなってしまいますね…。上司に説明してみます。 mts10806さん すべてを教えてくださり本当にありがとうございます。
m.ts10806

2018/04/11 01:13

> jsでwindow,onloadというのを知りませんでした。 php扱うのであれば結局画面をどう動かすかとか色々と要件が出てくるので知っておいて損はないです。 記事的には古いのですが大きくは2種類あります(結局内部的にやってることは同じ) * HTMLの読み込みが完了してから実行 https://qiita.com/cervomansan/items/0873026853686503fc3a > 妥協案でphpを使うことができるも、php使う意味がわからなくなってしまいますね… はい。上司がどのような見識をお持ちの方かは存じ上げませんが、例えばshinobiから「phpからアクセスを吸い上げるAPI」でも提供されない限りはPHPの仕事にはなりません。 この手のアクセス関係はサービス提供側が確実に情報を吸い上げるためにjsに提供しているので、今後もおそらくは出ないのでは。PHPからだと結構いろんな悪さができてしまいますから・・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問