No.5ベストアンサー
- 回答日時:
がるです。
質問を織り交ぜつつ。> アクセスするユーザー(2種類)によって、表示するメニューを切り替えてくれというものです。
これはまぁ極めてよくある処理かと思われます。
> しかし、ユーザーを認識する何らかの値が渡されるわけではありません。
これは、依頼者からの希望なのでしょうか? 基本的にはこういう振り分けにはCookie(ないしより望ましい回答としてはPOST メソッド)での、セッションID(或いはセッションIDを含む文字列を暗号化したもの。私はこっちを勧めます)を用いるものなのですが。
> Aユーザーには、index_a.phpをアクセスさせ、Bユーザーには、index_b.phpをアクセスしてさせるということで要望されました。
これは、もし「ユーザBがindex_a.phpを手で入力すればアクセスできてしまう」可能性が高いのですが、それはそれでよいんでしょうか? 必要に応じて、依頼者に確認すべきかと。
> 表示メニューのオン・オフは、config.php内での変数に1か0の値の代入で行っているのですが、config.phpはindex.phpだけでなく、すべてのphpソースの先頭でincludeしているので、2種類のindex.phpを作っても、同じconfig.phpを呼んでしまいます。
まずconfig.phpの作りにもよるんでしょうが。もしかして「ベタで書いてあるからincludeしたらいきなり走る」つくりになってませんか?
まずは関数(ないしより好ましい状態としてはclass)での実装にかえるべきです。
で、例えば
index_a.php の行頭
require_once("config.php");
$conf_obj = new config;
$conf_obj->set_flg(0);
$conf_obj->run();
index_b.php の行頭
require_once("config.php");
$conf_obj = new config;
$conf_obj->set_flg(1);
$conf_obj->run();
という風におこなえば、十分に可能だと思うのですが。
ちなみに#4さんの回答にある「多言語からのセッション情報の引継ぎ」ですが。
基本的にセッションは、ほとんどCookieで扱っているのが通例です。ただどういった実装をするかは色々とありますので、そのあたりは上位のプログラムの仕様書をチェックするなりすべきかと思われます。
最後に。個人的見解で恐縮ですが。各種セキュリティ上の脆弱性その他が指摘されているので、PHP標準のセッション関数はあまりお勧めできません。
ご利用は自己責任の下に計画的に、って感じでしょうか。
この回答への補足
> これは、もし「ユーザBがindex_a.phpを手で入力すればアクセスできてしまう」可能性が高いのですが、それはそれでよいんでしょうか? 必要に応じて、依頼者に確認すべきかと。
はい、これについては、完全とは言えませんが、ある程度想像できないindex名(例えば、ad_index_minxxxyyy.phpとか)で考えております。
「ご利用は自己責任・・・」の部分にも関連するかもしれないのですが、社内イントラ内での使用なので、使用者はすべて社内の人となります。
したがって、万一、BユーザーがAユーザーに入ったとしても、重大な問題というわけではありません。
> まずconfig.phpの作りにもよるんでしょうが。もしかして「ベタで書いてあるからincludeしたらいきなり走る」つくりになってませんか?
はい、まったくそのとおりです。すいません。
主にはメニューのオンオフなどのフラグを立てているくらいです。
classの手法を用いたことがないので、classに関して知識が乏しいです。
したがって、
index_a.php の行頭
require_once("config.php");
$conf_obj = new config;
$conf_obj->set_flg(0);
$conf_obj->run();
index_b.php の行頭
require_once("config.php");
$conf_obj = new config;
$conf_obj->set_flg(1);
$conf_obj->run();
について、もう少し詳しくご説明いただけると、非常に助かります。
できれば、classの手法にチャレンジしてみたいと思いますので。
ただ、社内納期が一応、明日3/15までと言われているので、私でどこまで出来るかが問題なのですが・・
「多言語からのセッション情報の引継ぎ」ですが、上位のプログラム仕様書というものが存在しません。
社内システムなので、設計も特になくて、PGのセンス任せでやらされているわけです。
私は通常PGの業務ではないのですが、過去に他社でPG経験があるということで、
サイトのある部分の機能の作り込みについて、助っ人として任されているのです。
このような背景ですが、ご理解いただけると幸いです。
また、お手数でなければ、さらにご教授いただけると助かります。
m(_"_)m
PHPのセッション関数と、クッキー関数までは試すことができましたが、クラスまでに手が届きませんでした。
でも、勉強になりました。
どうもありがとうございました。
No.4
- 回答日時:
難しいことを考えるよりセッションを勉強したほうがはるかに楽ですよ。
何も難しくありません。
全てのソースの先頭でsession_start()呼んで、
使いたいセッション変数に値を入れておけば、どのPHPに遷移しても値の参照、代入ができます。
この回答への補足
そうすると上位でログインされた、ユーザー情報を当方のPHPから見に行かないといけないように思うのですが・・
以下は、上位で行われているセッション処理の部分で、管理者の場合の処理でメールの書き込みが可能か判断する部分です。
(rubyかpealでコーディングしてると思われる。PHPではない。)
このセッション情報(ユーザID?)を取得して、PHPで処理させないといけないように思うのですが・・・どうでしょう?
<% if ! User.find(@session[:user].id).is_comu? %>
<%= link_to image_tag('msg20.gif', :border => 0)+'メール作成を行う', :action => 'new' %>
<% end %>
PHPのセッション関数もクッキー関数も試してみました。
しかし、javascriptのonclickで、変数の値を入れ替えるように記述しているので、マウスクリックしていないのにブラウザ表示しただけで一番最後のonclickの値が代入されてしまいます。
どうやら、javascriptがセットされる時点で、変数に代入されてしまうようでダメでした。
どうもありがとうございました。
No.3
- 回答日時:
データの受渡しをしたいだけならGETやPOSTでも
できます。
この回答への補足
ありがとうございます。
GETやPOSTの存在も知っているのですが、未熟な上あまり使ったことがなく、具体的な手法が思い浮かばなくて・・
No.2
- 回答日時:
がると申します。
Global変数でもよく言われる話なのですが。「どのソース内でも代入で入れ替えることができる変数」が必要なのは、失礼ながら、多分設計自体にミスがあるのではないかと。
データは原則的に「局所にまとめる」ほうがよいです。
そのあたりはPHPに限らず色々なプログラムで応用がきくので、一度しっかりと履修されることをお勧めいたします。
この回答への補足
ありがとうございます。
当初の設計とは違う、別の要件が今頃になって指定されました。
アクセスするユーザー(2種類)によって、表示するメニューを切り替えてくれというものです。
しかし、ユーザーを認識する何らかの値が渡されるわけではありません。
Aユーザーには、index_a.phpをアクセスさせ、Bユーザーには、index_b.phpをアクセスしてさせるということで要望されました。
表示メニューのオン・オフは、config.php内での変数に1か0の値の代入で行っているのですが、config.phpはindex.phpだけでなく、すべてのphpソースの先頭でincludeしているので、2種類のindex.phpを作っても、同じconfig.phpを呼んでしまいます。
ユーザーを識別する引数を、上からもらえるなら、config.phpを2種類用意して判定で切り替えられるのですが、2種類のindex.phpでという方法では困難を極めています。
そこで、全ソースで値を保持できる変数が使えれば、その変数にindex_a.phpにアクセスされた場合には“0”、index_b.phpにアクセスされた場合は“1”というようにフラグセットし、他のソースからそのフラグ見て、2酢類のconfig.phpのどちらをincludeさせるか判定できると考えています。
他に良い方法があればいいのですが・・・そのようなわけです。
No.1
- 回答日時:
そんな場合はperlであればクッキーを使用しますが、PHPでもクッキーでも可能ですがセッション関数が使えます。
調べてみて下さい。
この回答への補足
ありがとうございます。
セッション関数というのが使えるということは、
ネット上でも見ました。
ただ、具体的にどのように使うのか、理解できていません。
調べてはみたいとは思います。
PHPのセッション関数もクッキー関数も試しました。
javascriptのonclickで、変数の値を入れ替えるように記述しているのですが、マウスクリックもしていないのにブラウザ表示しただけで一番最後のonclickの値が代入されてしまいます。
どうやら、javascriptがセットされる時点で、すでに代入されてしまうようでダメでした。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- PHP WordpressのPHPを安全に編集する方法 1 2022/08/04 01:43
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP phpでアクセスカウンターの数値の割合でリンク先を変更したい 1 2022/09/16 11:47
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- その他(プログラミング・Web制作) 置換ソフトで指定したファイルの1行目に入力できるものを探しています 7 2022/11/24 10:34
- PHP バージョン情報の取得方法について 1 2023/03/15 11:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
$_SESSION 有効期限をブラウザ...
-
jqueryの$.ajaxでPHPに値を渡し...
-
セッションのクッキー有効期間...
-
リロード・ページビューの判定
-
PHP session_destroyとsession...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
.phpファイルが、表示されない
-
トランザクションが原因?DBに...
-
FTPコマンドでディレクトリごと...
-
拡張子php画像をjpg画像等に変...
-
phpの中でphpを書けないか
-
文字化けについて
-
<A href ~ と一緒に値を渡すには
-
.phpと.incファイルの違いはな...
-
別ファイルの変数を呼び出した...
-
サイトのphpソースコードを表示...
-
SQLiteに画像を格納したい
-
バッチを用いたフォルダの自動移動
-
インクルードした部分が表示さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$_SESSION 有効期限をブラウザ...
-
PHP session_destroyとsession...
-
セッションのクッキー有効期間...
-
さくらサーバーでsessionが使え...
-
jqueryの$.ajaxでPHPに値を渡し...
-
session_start();について
-
IE11でページ遷移時にセッショ...
-
fsockopenを使った証明書付きの...
-
session_set_save_handler の実...
-
リロード・ページビューの判定
-
PHPのセッション変数 絞り込み...
-
セッションの利用
-
PHPからリアルタイムにデータを...
-
セッションが変数が取得できません
-
ブラウザの戻る ページ遷移PHP...
-
DoCoMo FOMAでセッション管理が...
-
phpのセッションについて
-
PHP4.3.9+smartyのsessionについて
-
ログインしたページで、ある処...
-
onedrive にexcelファイルをア...
おすすめ情報