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

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

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

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1118閲覧

ファイルシステム関数の初歩について

humuhimi

総合スコア49

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/03/14 08:55

編集2018/03/14 09:20
<?php $data[]=date('Y/m/d H:i:s'); $data[]=$_SERVER['SCRIPT_NAME']; // 上記でアクセスするスクリプトのパス $data[]=$_SERVER['HTTP_USER_AGENT']; // クライアントの種類 $data[]=$_SERVER['HTTP_REFERER']; // リンク源のアドレス $file = @fopen('access.log', 'ab') or die('ファイルを開けませんでした!'); flock($file, LOCK_EX); fwrite($file, implode("\t", $data) . "\n"); flock($file, LOCK_UN); fclose($file); print 'アクセスログを記録しました。'; ?>

現在、独学PHPという本でファイルシステム関数に関して学習を進めている初心者なのですが、上記の箇所における説明があまりないので、どなたかご教授お願いします。
上記の変数はなんのために必要なのでしょうか?
よろしくお願いします。
すみません初歩的な質問です。
このaccess.logに関してなのですが、これは特定のファイル名なのですが、それとも全てのファイルに存在するaccess.logというものなんでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

たんじゅんに何をしているかといえば
$dataという配列に、4つの値を設定しています

→ date('Y/m/d H:i:s');
現在の日時

→ $_SERVER['SCRIPT_NAME'];
自分自身のファイル
http://www.exsample.com/hoge/fuga/piyo.php?x=1&y=2」
から得られるのは
「/hoge/fuga/piyo.php」

→ $_SERVER['HTTP_USER_AGENT'];
ユーザーエージェント=アクセスしてきたブラウザの種類やバージョン
※ただしブラウザ側から送られてくるので偽装されている可能性あり

→ $_SERVER['HTTP_REFERER'];
リファラ=飛んできたページ
a.phpから<a href="b.php">b</a>を踏んで飛んできた場合は
b.phpにとってのリファラはa.php

投稿2018/03/14 09:09

yambejp

総合スコア114572

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

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

humuhimi

2018/03/14 09:12

回答ありがとうございます。 これらのデータは基本的にファイルを扱う上で毎回設定するものなのでしょうか?
yambejp

2018/03/14 09:19

$_SERVERはスーパーグローバル変数なので常にサーバー側が 自動で値を保持します http://php.net/manual/ja/language.variables.superglobals.php dateは単に実行しているだけです そもそもファイルうんぬんは関係ありませんので、勘違いを されているのではないでしょうか?
humuhimi

2018/03/14 09:23

はい。勘違いしていました。 わかった気がします。 自動記録されていたものを格納していただけなのですね。 すみません、最後に一点勘違いの解消をお願いしたいです。 access.logに関してなのですが、これは特定のファイル名なのですが、それとも全てのファイルに存在するaccess.logというものなんでしょうか? ご教授お願いします。
yambejp

2018/03/14 09:33

システムが自動的にスタティックに「access.log」という名前を 提案することはありません。 参考になさっている書籍(資料?)が独自にきめた名前だと思います。 イメージしやすい名前だとは思いますが、あたかも公式っぽい 命名なのでサンプルとして提示するにはもうすこしわかりやすく 書いてくれないと不親切だなぁ・・・と思いますね たとえばsample_access.logとかmy_access.logとか
humuhimi

2018/03/14 09:36

そうだったのですか。ログのファイル自体あることを知らなかったので、サンプルとは思っていませんでした。 なるほど、かなり頭がスッキリしました。ありがとうございます。
guest

0

これだけでは、何もわかりません。というのも、変数を使う部分について何も書かれていないからです(これらの行は代入だけです)。

投稿2018/03/14 08:57

maisumakun

総合スコア145121

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

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

humuhimi

2018/03/14 09:09

更新しました。よろしくお願いします。 つまるところ、上記の処理において、$data[]=date('Y/m/d H:i:s'); $data[]=$_SERVER['SCRIPT_NAME']; // 上記でアクセスするスクリプトのパス $data[]=$_SERVER['HTTP_USER_AGENT']; // クライアントの種類 $data[]=$_SERVER['HTTP_REFERER']; ファイル関数はなんとなく、処理の目的がわかるのですが、この部分がどのような意味があるのかわからないです。 よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問