![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.7ベストアンサー
- 回答日時:
#1です。
失礼しました。「土曜」っていう条件があったのですね。他の回答から、勝手に推測して作ってみました。
動作確認はしましたが、テストはしていません。
<?php
//曜日 0:日 ~ 6:土
define("st_weekday", 6);
define("ed_weekday", 2);
//時間
define("st_time", 2100);
define("ed_time", 2259);
//開始・終了時間の継続区分
// 0:曜日毎に開始時間・終了時間
// 1:開始曜日開始時間から終了曜日終了時間まで継続
define("time_continuance", 0);
//対象曜日かチェック
function checkWeekday($wkd) {
//開始曜日より終了曜日の方が若い場合
if (st_weekday > ed_weekday) {
$ed_wkd = st_weekday + ed_weekday + 1;
if ($wkd < st_weekday)$wkd += st_weekday + 1;
if ($wkd >= st_weekday and $wkd <= $ed_wkd)return 1;
//終了曜日より開始曜日の方が若い場合
} else {
if ($wkd >= st_weekday and $wkd <= ed_weekday)return 1;
}
return 0;
}
//対象時間かチェック
function checkTime($wkd, $time) {
//曜日毎に開始・終了する場合
if (time_continuance == 0) {
if ($time >= st_time and $time <= ed_time)return 1;
//開始曜日開始時間から終了曜日終了時間まで
}else {
//曜日が開始曜日の場合
if (st_weekday == $wkd) {
if ($time >= st_time) {
//終了曜日が開始曜日と一致する場合
if (ed_weekday == $wkd and $time <= ed_time)return 1;
if (ed_weekday <> $wkd)return 1;
}
//曜日が終了曜日の場合
} elseif (ed_weekday == $wkd) {
if ($time <= ed_time)return 1;
//開始曜日開始時間~終了曜日終了時間の間
} else {
return 1;
}
}
return 0;
}
//当日に関する情報の取得
$now = strtotime("now");
$wkd = date("w", $now);
$time = date("Hi", $now);
//リンクの表示
if (checkWeekday($wkd) == 1) {
if (checkTime($wkd, $time) == 1) {
echo "対象曜日対象時刻です";
}
}
?>
「time_continuance」は1にすると、上記設定値の場合は
土曜21:00から火曜22:59の間、表示し続けます。
リンク先がバレて直接URLが打たれた時、そのページがPHPなら、
同じ制御をすればecho等で「ダメですよ」って出来ます。
ただのHTMLだったり、別のサイトだったりすると流石に制御しきれません。
No.5
- 回答日時:
何にも考えずに書いたら冗長になってしまいました。
IF分しかないので読んで理解してください。
# 曜日と時間は別処理。
# 曜日の処理。0:日 ~ 6:土
$st_week = 2; # 始めの曜日(土曜日)
$ed_week = 6; # 終わりの曜日(火曜日)
# 時間の処理
$st_time = "2200";
$ed_time = "1800";
# 曜日が土日をまたぐ場合
if($st_week > $ed_week) {
# 該当曜日の判定
if ($st_week <= date("w") or date("w") <= $ed_week) {
# 始めと終わりの曜日が重なることはない
# 始めの曜日の場合は時間のチェック
if ($st_week == date("w")) {
# 開始時間を超えているか?
if ($st_time <= date("Hi")) {
# 書き出し処理
}
# 終わりの曜日の場合は時間チェック
} elseif ($ed_week == date("w")) {
# 終了時間内か?
if (date("Hi") < $ed_time) {
# 書き出し処理
}
# 始めと終わり以外は全日表示
} else {
# 書き出し処理
}
}
# 曜日が土日をまたがない
} else {
# 該当曜日の判定
if ($st_week <= date("w") and date("w") <= $ed_week) {
# 始めと終わりの曜日が同じ場合
# この場合は時間が日付をまたぐことはありえない
if ($st_week == $ed_week) {
# 時間のチェック
if ($st_time <= date("Hi") and date("Hi") < $ed_time) {
# 書き出し処理
}
# 始めの曜日 < 終わりの曜日 の場合
} else {
# 始めの曜日の場合は時間のチェック
if ($st_week == date("w")) {
# 開始時間を超えているか?
if ($st_time <= date("Hi")) {
# 書き出し処理
}
# 終わりの曜日の場合は時間チェック
} elseif ($ed_week == date("w")) {
# 終了時間内か?
if (date("Hi") < $ed_time) {
# 書き出し処理
}
# 始めと終わり以外は全日表示
} else {
# 書き出し処理
}
}
}
}
No.4
- 回答日時:
たとえば20時59分にアクセスした人は、21時過ぎても
リンクは表示されません。
メタタグで自ページを定期的に読み直すか、javascript
でタイマー処理をするなどが必要になります。
また23時にリンクが非表示になっても、リンク先があれば
アクセスされてしまいます。
cronなどで飛び先をリネームしたり、GETやPOSTなどで
飛び先を制御した上で、その時間以降にアクセスが
できなくなるような仕組みが必要かもしれませんね
この回答への補足
そうですよね。折角非表示にしても、アクセスされたんではまったく意味がないですね。
そこだけ手作業でリンク先を止めるってのもなんかアナログで嫌ですし。
出来れば全てプログラムで自動処理できた方がいいですよよね。いやぁ、ほんとに難しい。
ありがとうございます!
No.2
- 回答日時:
こんな感じでしょうでしょうか。
このスクリプトなら3時と6時など
とびとびの時間でも指定できます。
下記のスクリプトでは土日の23時から午前6時まで表示に設定。
テストしたサーバーではタイムゾーンがJSTでした。
サーバーのタイムスタンプを取得しますので
サーバー時間がGMTなどの場合は-9時間して調整。
例 サーバーのタイムゾーンがGMTの場合 time() -60*60*9
<?
//タイムテーブルの設定
//表示させたい時間の値にonを設定
$arrayTimeTable =array(
"0"=>"on",
"1"=>"on",
"2"=>"on",
"3"=>"on",
"4"=>"on",
"5"=>"on",
"6"=>"on",
"7"=>"",
"8"=>"",
"9"=>"",
"10"=>"",
"11"=>"",
"12"=>"",
"13"=>"",
"14"=>"",
"15"=>"",
"16"=>"",
"17"=>"",
"18"=>"",
"19"=>"",
"20"=>"",
"21"=>"",
"22"=>"",
"23"=>"on",
"24"=>"on");
//曜日設定
// 0日 1月 2火 3水 4木 5金 6土
$arrayWeekTable = array(
"0"=>"on",
"1"=>"",
"2"=>"",
"3"=>"",
"4"=>"",
"5"=>"",
"6"=>"on",
);
$intTimeHourNow= date("G",time()); //現在の時間の時を取得(先頭に0なし)
$intWeekNow = date("w",time()); //現在の曜日をを数値で取得
if($arrayTimeTable[$intTimeHourNow]=="on" & $arrayWeekTable[$intWeekNow]=="on"){
//ここに表示させたい内容
echo <<<EOF
<a href="http://www.yahoo.co.jp">Yahoo! JAPAN</a>
EOF;
}
?>
この回答への補足
さっそくこのソースで作ってみました!
ありがとうございます!
と、そこで更に三点質問させて下さい!!
まず、時間の値の"24"ですが、これは必要なのでしょうか?ここを"on"にすると何時から何時まで表示されるのでしょうか??
そして二点目、このソースの場合、以下の様な処理になると考えて宜しいでしょうか??↓
まず、土曜日になった時点で0時~6時59分までリンクが表示され、7時になった時点で一度消える。
そしてその夜(土曜)23時になったら再びリンクが表示され、そのまま日曜の朝6時59分まで表示し続け、7時になったら再び消える。
そしてまたその夜(日曜)、23時から24時(?)まで表示される。
このような処理をすると考えてよろしいでしょうか??
土曜の夜23時~日曜の朝7時の間だけリンクが表示されるようにするには、また違ったプログラムになるんですかね。。。
ほんと初心者ですいません。。。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS HTMLの条件によって表示方向が切り替わる実装のコードを教えて下さい。 (コードは下記リンクを参照) 1 2022/09/25 14:35
- Windows 10 windows11 update の「更新の再開」について初歩的な質問なのですが 1 2022/10/19 00:57
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Excel(エクセル) 下記エクセルの式がなぜこうなるのか理由が知りたいです。 6 2022/08/20 00:43
- Ruby VBA 2 2023/01/14 14:14
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
- HTML・CSS ホームページにブログ記事をサムネイル付きで掲載する方法 2 2022/11/25 14:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1ヶ月後の日付を出力したい
-
月末日判定
-
6ヶ月前の日付を取得するにはど...
-
開始と終了を指定して、その間...
-
【続】PHPとJSONについて
-
ファイル名に日付の挿入
-
「取得先」という表現について
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
-
DTOとEntityの差は何ですか。
-
excel access連携 このテーブル...
-
【C#】DataGridViewの最大列数...
-
phpでcookieがうまく保存されない
-
小数点以下0の非表示
-
ブラウザを閉じた後もセッショ...
-
format関数について
-
Excel VBA:特定の文字列以降(...
-
ミュージックのアートワークを...
-
バッチファイルでpingの結果を...
-
WordでExcelデータを差込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付を取得するVBscript
-
PHP 指定した期間だけ表示した...
-
Accessで、DAOでAddnew
-
C言語を使って、ある特定の日の...
-
codeigniterの時間設定
-
日付計算について
-
昨日の日付名でファイルを作成...
-
現在時刻をyyyymmddhhmmss形式...
-
substrの使い方について教えて...
-
差分の月数を算出する方法
-
1ヶ月後の日付を出力したい
-
経過期間計算がうまくいかない
-
C言語でシステム日付との差を...
-
今日の日付から1週間のリスト
-
アップロードしたファイル名に...
-
strtotime 日付の変換
-
PHPでmysqlを使ってます。日時...
-
6ヶ月前の日付を取得するにはど...
おすすめ情報