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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

HTML

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

Q&A

3回答

4385閲覧

セッションに関するコードですが、解読できないので日本語訳をお願い致します。

b1ackc0ffee

総合スコア267

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

HTML

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

0グッド

0クリップ

投稿2015/05/28 08:54

編集2015/05/29 02:05

if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}

-42000が何を指しているのか、
どれが関数で、
()が空白な理由など、
素人の質問ですみませんが宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

質問に書かれているのは、セッションクッキーを削除するためのコードです。

クッキーというのはブラウザ側にセッションに関する情報を保存するもので、それぞれが有効期限の情報を持っています。クッキーの削除は、有効期限を既に過ぎた日時に設定することで行います。
有効期限を過ぎたクッキーは、ブラウザが定期的に削除してくれます。

関数は、関数名(引数) の形をしていますから、(と)の対応付けをすれば関数を見つける事は難しくありません。
コードで使われているPHP関数は出現順に、ini_get、session_get_cookie_params、setcookie、session_name、time の5つです。

ini_getは設定オプションの値を得る関数で、ini_get("session.use_cookies") でセッションがクッキーを使用するように設定されているか否かが得られます。
session_get_cookie_paramsはクッキーのパラメータを得る関数です。返り値はマップ型で、キー("path"等)とその値の関連付けが得られます。
setcookieは、クッキーを設定する関数です。
・最初の引数がクッキーの名前で、クッキーを特定しするのに使われます。その名前のクッキーが既にあれば、そのクッキーが書き換えられます。その名前のクッキーが無ければ、新たにクッキーが作られます。
・2つ目の引数が有効期限で、unix時間(1979年1月1日0時0分0秒からの経過秒数)で指定します。
session_nameは、セッションの名前(クッキーの名前として使われる)を得る関数です。
timeは、その時のUnix時間を得る関数です。

こうした事を理解して頂いて、コードを説明すると以下のようになります。
(説明は、コメント(//で始まる行)としてコードに入れてあります。

lang

1if (ini_get("session.use_cookies")) { 2// クッキーを使う設定なら、以下を実行します。 3// クッキーを使わない設定なら、削除すべきクッキーが無いので何もせずに終わります。 4 $params = session_get_cookie_params(); 5// クッキーのパラメータを得ます。 6 setcookie(session_name(), '', time() - 42000, 7 $params["path"], $params["domain"], 8 $params["secure"], $params["httponly"] 9 ); 10// クッキーを設定します。 11// ・1つ目の引数はクッキー名(セッション名)で、session_name関数で得た値を使います。 12// ・2つ目の引数は有効期限で、time()で得た今の時間から、42000を引くことで既に過ぎた時間にしています。 -42000は、42000秒前を意味しますが -42000に特に意味はありません。 13// 良く使われるのは、-60(1分前)、-3600(1時間前)、-43200(12時間前)とかで、-42000というのは初めて見ました。ひょっとすると、元々は-43200だったものが使いまわしされる過程で-42000と誤記されたのかもしれません。 14// -60でも、-42000でも、既に過ぎた時間になる点は同じなので、コードが実行された際の効果に違いはありません。 15// 3つ目以降の引数は、既存のクッキーのパラメータと同じ値にしています(session_get_cookie_paramsで得たマップから、各パラメータの値を得ています) 16}

参考情報)
ちなみに、http://php.net/manual/ja/function.session-destroy.php では、このコードの前にセッション変数を全て解除する部分があり、コードの後にセッションを破壊する部分が続きます。

投稿2015/05/29 04:24

coco_bauer

総合スコア6915

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

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

0

セッションクッキーは全く使ったことがなかったので初めてマニュアルで見ましたが、次の様な感じなのだと思います。
私自身PHP(というよりはプログラム全般)にはまだそれほど詳しくなく、正確ではないかもしれないので「大体こんな感じなのかな」という程度に見ておいて下さい。

lang

1// もしもphp.iniの設定で session.use_cookies が有効であったら処理を実行 2if (ini_get("session.use_cookies")) { 3 // 変数 $params にセッションクッキーのパラメータが格納された配列を取得する関数 session_get_cookie_params() を代入 4 $params = session_get_cookie_params(); 5 6 // setcookie() はクッキーを設定(送信)する関数。それぞれの引数は下記で説明 7 setcookie(session_name(), '', time() - 42000, 8 $params["path"], $params["domain"], 9 $params["secure"], $params["httponly"] 10 ); 11 12 /* 13 * setcookie() の引数の設定 14 * 15 * 第一引数 session_name() セッションIDを設定する引数。破棄するので何も指定しない 16 * 第二引数 '', セッションIDの値を設定する引数。破棄するので空の文字列になっている 17 * 第三引数 クッキーの有効期限を指定する引数。関数 time() で指定 18 * ここではクッキーを無効にするために負の値を指定している 19 * 値が-42000である事には特に重要ではなく、負の値である事が重要 20 * 第四引数 セッションのパラメータを指定する引数。 21 * ここでは変数 $params に代入された関数 session_get_cookie_params() の配列からそれぞれを呼び出している 22 * - path クッキーが保存されている場所のパス 23 * - domain クッキーが有効になるドメイン 24 * - secure セキュアな接続でのみクッキーを送信する 25 * - httpsonly HTTPSを通してのみアクセスを可能にする 26 */ 27}

関数名( 引数 ); という形を取るもの(ここでは ini_get() や setcookie() や time() など )は大体関数と見て良いと思います。
関数によっては引数がないものもあります。

分からない時は「言語名 関数名らしきもの」(例えば「PHP setcookie」など)で検索したりT.Mmiuraさんの回答にあるPHPのマニュアルを見るとそれが何かを理解しやすいです。
マニュアルを見ながら同時に検索もしてみるとぐっと理解が進むと思いますので、ぜひ活用してみてください。

あとはこのような学習サイトを活用するのも良いと思います。
PHP入門(基本編) (全32回) - プログラミングならドットインストール

投稿2015/05/29 03:11

編集2015/05/29 03:40
flat

総合スコア617

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

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

0

http://php.net/manual/ja/function.session-destroy.php
こちらに詳しい説明があります。

クライアント側にあるcookieを含むSESSION変数をすべて破棄する場合のやり方です。

投稿2015/05/28 09:23

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

b1ackc0ffee

2015/05/29 01:13

有難うございます(^^) セッションを破棄するコードということは、わかるんですが、上記コードの和訳を知りたいです。 それぞれが何に当たるのか、コードを見ただけで理解できません>_<
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問