今日、私はPHP開発者としての仕事のためにスカイプのインタビューを受けました。質問の1つは、CookieとPHPセッションについてでした。
問題は、ユーザーのブラウザでCookieが無効になっている場合、PHPセッションを設定して読み取り、使用できるかということでした。
PHPセッションはデフォルトでセッションCookieの設定に依存しているため、私は彼らに言わなかった。PHPセッションが開始されると、新しいセッションCookieがデフォルト名PHPSESSIDで設定され、そのCookieはそのセッションIDの値を保持します。たとえば次のようになります。 :test1 | s:12: "SessionTest1"; test2 | s:12: "SessionTest2";
彼らはそれは真実ではなく、ユーザーが自分のブラウザでCookieを無効にしてもPHPセッションを使用できると私に言いました。
それから私はあなたがそれをすることができると彼らに言いました、しかしそれからセッションIDはGET変数としてURLを通して渡されるでしょう。これは安全ではないため、php.iniで設定する必要があります。
彼らは、ブラウザでCookieが無効になっている場合でもPHPセッションを使用する方法について話していました。そして、私たちがWebショップを構築していて、一部のおばあちゃんが私たちのWebショップを使用して、Cookieを無効にし、彼女が気にしない場合はどうでしょうか。そして、そのPHPセッションは、ユーザーがCookieを無効にしても使用できるため、優れています。私はwtf、wtf wtfのようでしたか?!?!
2つのファイルでテストを行いました。index.phpはセッションを開始し、セッション変数を設定します。そして、session.phpはそのセッション変数を読み取ろうとします。
これはそれがどのように見えるかです:
index.php
<p>This is where I start and set php sessions.</p>
<?php
session_start();
$_SESSION['test1'] = "SessionTest1";
$_SESSION['test2'] = "SessionTest2";
?>
<p>This is a link, that starts new HTTP Request, and tries to read session set on this page:</p>
<p><a href="session.php">Read Session</a></p>
session.php
<?php
session_start();
var_export($_SESSION);
?>
<p><a href="index.php">Back</a></p>
これで、ブラウザでCookieを有効にし、index.phpにアクセスし、session.phpにアクセスすると、セッションが出力されます。
しかし、ブラウザの履歴とCookieをクリアしてから、index.phpにアクセスしてから、session.phpにアクセスすると、空の配列が表示されます。
だから基本的に私の質問は、私は正しいですか?ブラウザでCookieを無効にした場合、PHPセッションを使用できますか?また、PHPセッションメカニズムはデフォルトで、セッションCOOKIEの設定に依存しますか?
更新:私はこれに腹を立てていたので、話していた人に電話をかけ直しました。そして彼に尋ねた、PHPセッションはデフォルトでCookieなしで動作することができますか?男は「はい」と言った。それから私は彼に彼が間違っていると言いました、そして彼は言いました:「はい、はい、あなたがそう言うなら...」そして笑い始めます。それから私は彼に言った、もしPHPセッションがクッキーを設定しなくても機能するなら、サーバーはセッションクッキーに保存されていない場合、現在のユーザー/ブラウザのセッションIDをどのように知るのだろうか?(セッションIDをGET変数として渡すことができることを彼が知っているかどうかを確認したかった)そして彼は少なくとも20秒間静かで、彼はシステム管理者であり、開発者の人に聞いてみるべきだと言った。そして、彼は43歳で、ビジネスで13年の豊富な経験を持っています(彼は30?wtf?から始めました)が、彼はこれについて私を信頼しています。
つまり、基本的に、その男はPHPとPHPセッションについての手がかりを持っていませんでした、そしてはい、彼は私が彼にそれができないと言ったとしても、PHPセッションはクッキーなしで動作することができると私に言ったセッションについて私に尋ねた人でしたCookieなしでPHPセッションを使用する方法はありますが、デフォルトでは機能しません。彼は、いやいやいや...最後に、サーバーのシステム管理者としてtmpフォルダー内のセッションを表示できないため、Cookieがなくてもセッションが機能すると考えていると私に言いました。
とにかく、それらの人はPHPに夢中です、私が彼らからの求人を受け入れる方法はありません、そして結局のところ、私は彼らがとにかく私に仕事を提供するとは思わない...
すべてのコメントをありがとう!