人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://alex.wbjapan.com/
ブラウザをつけてから初訪問の時に、リンクの最後に「?PHPID=乱数」と出てしまうんですが、
なんででるのかわかりますでしょうか?

どうしたら消せるでしょうか。

一応ソース:http://alex.wbjapan.com/index.phps

●質問者: alexer
●カテゴリ:ウェブ制作
✍キーワード:ソース ブラウザ リンク 乱数
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● saoyagi
●10ポイント

http://php.s3.to/man/ref.session.html

セッション関数

php.iniのsession.use_trans_sidを0にしてみてはいかがでしょうか。

◎質問者からの返答

ソレをしたらどの様になるのでしょうか?

他になにか起きてしまうのでしょうか?

php.iniはどこにあるのでしょうか?

詳しく分らないので次の回答を待ちます。


2 ● ezslalom
●10ポイント

http://www.php.net/manual/ja/function.ini-set.php

PHP: ini_set - Manual

ini_set(”session.use_only_cookies”, ”1”);

を、スクリプトの実行されるなるべく早い位置で実行してみてください。

ブラウザがクッキーを受け付けない設定になっていると

苦肉の策としてURL内にセッションIDを埋め込んで

セッションの維持を行おうとしますので、質問のような状態になるのだと思います。

php.ini は自分のPC上でPHPを使用しているのであれば

UNIX系なら /usr/local/lib ウィンドウズ系なら C:¥windows か C:¥winnt にあります

しかし、レンタルサーバである場合このファイルはユーザーには操作できません

そこで、このように ini_set 関数を使うと、該当ページが読み出される間だけ

php.ini ファイルに設定されている内容を変更できます。

◎質問者からの返答

実行しても変わりありませんでした。

なにかおかしいところでもあるのでしょうか。


3 ● allows
●30ポイント

セッションの継続

セッションはセッションIDで管理されます。したがって、複数のPHPファイル間を同一セッションとみなして処理するためには、セッションIDをPHPファイル間で引き渡す必要があります。

■セッションIDの引渡し方法

PHPファイル間でセッションIDを引き渡す方法はいくつかあります。

(1)Cookieが使用できない場合

a)URLのパラメータとしてGETメソッドでセッションIDを渡す。

1)PHPの設定パラメータ「session.use_trans_sid」が1に指定されている場合

ハイパーリンクの相対URLに、URL Rewriting機能により自動的にセッションIDが追加され、次のファイルに引き渡されます。

PHPの設定パラメータ「session.use_trans_sid」を1に指定する方法には次の二つがあります。

・PHPのコンパイル時にオプションとして「--enable-trans-sid」を指定する。

・php.iniファイルで設定オプション「session.use_trans_sid」を1にし、Apacheをrestartする。

なお、php.iniファイルの既定のディレクトリは/usr/local/lib/php.iniです。

2)PHPの設定パラメータ「session.use_trans_sid」が0に指定されている場合

ハイパーリンクのURLに、定数SIDを記述し、セッションIDを次のファイルに引き渡します。たとえば、以下のように記述します。

<a href=”next.php?<?=SID?>”>次ページ</a>

Cookieが使用できない場合、定数SIDには、セッション名=セッションIDが代入されます。たとえば、次のように置換されます。

<a href=”next.php?PHPSESSID=5fb6b70b37b53114518ce19ac215e8ea”>次ページ</a>

b)HTMLフォームのhiddenコントロールとしてセッションIDを引き渡す。

たとえば、以下のように記述します。

<input type=”hidden” name=”<?=session_name()?>” value=”<?=session_id()?>”>

具体的には、例えば、以下のように代入されます。

<input type=”hidden” name=”PHPSESSID”

value=”5fb6b70b37b53114518ce19ac215e8ea”>

(2)Cookieが使用できる場合

Cookieを使用してセッションIDが引き渡されます。

//ファイル検索

php.iniに関してはディストリビューションで違うので

検索してみてはいかがでしょうか

Windowsは記述しませんが linux系 なら

#find / php.ini

ででてくると思います。

◎質問者からの返答

詳しくありがとうございます。

回避するには具体的にどうすればよいのでしょうか。


4 ● wintarsnow
●30ポイント

回避する方法ですが、セッションを使用しなければ良い訳なのですが、必要なのですよね?

では、クッキーを必須にするという方法があります。

これは、クッキーを許可していない閲覧者がセッションで管理されたコンテンツや機能を利用できないという制限がありますが、ほとんどの人がクッキーを許可していることを考えると、企業サイトなどでないかぎり有効な方法だと思います。

お使いのサーバで.htaccessが使用できるのであれば、

php_flag session.use_only_cookies On

php_flag session.use_trans_sid Off

の2行で出来ます。

実際に私はこのようにしてセッション管理をしております。

もし、セッションを使用していないのにご質問の状態になるということでしたら、php.iniでsession.auto_startがOnになっている可能性があります。

これは自動的にセッションが開始してしまう設定なので、これをOffにしてやります。

これも.htaccessに

php_flag session.auto_start Off

と記述すればOffに出来ます。

◎質問者からの返答

ありがとうございます!w

なおりましたーw

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ