• 締切済み

セッション部分のインクルード

お世話になっております。 PHPを使ったHTMLページを作成しているのですが、 セッション部分がうまく動きません。 index.phpページの一番上部に、 <?php include "http://www.○○○.com/lib/include/base.php"; ?> というように記述し、 base.phpには、 <?php session_start(); if(!isset($_SESSION["ses_ref"])){ $_SESSION["ses_ref"]= $_SERVER["HTTP_REFERER"]; } と記述しております。 セッション部分をインクルードせずに直接index.phpに記述した場合は、きちんと動くのですが、インクルードすると動きません。 (変数を取得できません。) セッション部分をインクルードすることはできないのでしょうか。 ご教授くださると非常にありがたいです。 よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

考えられる原因としては 1.リファラーが取得できていない(リファラーは必ずしも取得できる物ではありません) 2.参考URLに載せたようにphp.iniの設定でURLでの指定が有効になっていない などが考えられると思います。 おそらく、2が原因かとは思いますが・・ 基本「include」、「require」などは特別な理由が無い限りローカルパスで記述した方が良いと思いますよ。

参考URL:
http://php.benscom.com/manual/ja/ref.filesystem.php#ini.allow-url-fopen
azuta0826
質問者

お礼

ご回答ありがとうございます。 インクルードの指定をローカルパスに切り替えたところうまくいきました。 とても助かりました。 ありがとうございました。

関連するQ&A

  • phpのincludeについて

    お世話になります。 Apache/2.2.3 PHP5.1.6 のレンタルサーバを利用しています。 httpdocs   |___lib   |  |___test.php   |___index.php という構造にしています。 -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'lib/test.php'; echo $a; ?> --------------------- 上記の場合、index.phpには 「sample」と表示されます。 -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- 上記の場合、なぜか表示されません。 そこで「http://~~」はincludeできないのかなと思ったのですが -----test.php-------- <?php $a = 'sample'; echo $a; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; ?> --------------------- とすると、なぜか「sample」と表示されました。 この結果から、includeはできているみたいです。 なんとか -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- で「sample」と表示させたくて試行錯誤してみたのですが どうしても解決できません。 お力添えのほどお願いできればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • includeの使い方

    includeを連続して使いことは可能でしょうか? 具体的には、index.phpに下記記述を入れて、 <?php include("test.php"); ?> test.phpには下記の記述だけにしたいのですが、これは問題ありますか? <?php include("./company/".mt_rand(1,10).".php"); ?> 動かしてみたら問題なさそうなんですが、もっとスマートな方法はないのかと思いまして。

    • ベストアンサー
    • PHP
  • sessionうまくいかない

    sessionの勉強のためにphpで簡単なページを作ってみたのですが、 sessionIDが次のページに送れてないみたいで、うまくいきません。 1ページ目 @session_start(); print session_id(); $_SESSION["ID"]=session_id(); 2ページ目 @session_start(); print session_id(); sessionの記述はこのようにしています。 環境は Windows Vista IE7 PHP5 Apache2.2 です。 よろしくお願いします。

    • 締切済み
    • PHP
  • インクルードした部分が表示されない

    サイドバーなど、すべてのページに共有する部分を外部ファイルにし、下の例のようにインクルードさせています。 ↓(例)↓ <? php require("http://○○○/sample.txt"); ?> 拡張子は、htmlにしたかったので、PHPが利用できるように、.htaccessで設定しています。 これで普通のページはちゃんと表示され、問題はなかったのですが、 メールフォームやYomi-Search、Movable Typeの検索結果など、 CGI?(? % & などがつくURL)のページでは インクルードさせている部分が真っ白になってしまいます。 ソースを見ると、 <? php require("http://○○○/sample.txt") ? > のままになっていました。 ? % & などがつくURLでは、インクルードできないということでしょうか? 解決法をご存知の方は、どうかご教授お願いいたします。

    • ベストアンサー
    • PHP
  • セッション変数にデータをセットする

    下記のPHPプログラムについて 1 <?php 2 // セッションを開始する 3 session_start(); 4 ?> 5 <html> 6 <head> 7 <title>セッション変数にデータをセットする</title> 8 </head> 9 <body> 10 <?php 11 // セッション変数にデータをセットする 12 if (!isset($_SESSION["name"])) { 13  echo "<p>セッション情報をセットしました"; 14  $_SESSION["name"] = "田中"; 15  } 16 echo "<p>名前:".$_SESSION["name"]; 17  18 // セッション変数にデータをセットする 19 if (!isset($HTTP_SESSION_VARS["name2"])) { 20  echo "<p>セッション情報をセットしました"; 21  $HTTP_SESSION_VARS["name2"] = "高橋"; 22 } 23 echo "<p>名前:".$HTTP_SESSION_VARS["name2"]; 24 25 ?> 26 </body> 27 </html> 実行すると 名前:田中 名前:高橋 となるのですが、なぜ13行目、20行目のecho文の内容が出力されないのか不思議です。 echo文の内容が表示がされない理由ついて教えてください。 よろしくお願いします!

    • ベストアンサー
    • PHP
  • sessionがクリアされない

    教えてください。 BBB.phpでこのように書いていたとします。 <?php session_cache_limiter('private, must-revalidate'); session_start(); ~いろいろ処理~ unset($_SESSION['pcode']); ~いろいろ処理~ ?> <?php include(dirname(__FILE__).'/../include/header.php'); ?> </body></html> header.phpでは $_SESSION['pcode']を表示しているのですが、 前のページ(たとえばAAA.php)で$_SESSION['pcode']に値を入れていた場合 BBB.phpを表示すると その値が表示されてしまいます。 直前に unset($_SESSION['pcode']); をしているのに その前の値が表示されます。 includeはどのタイミングでなされるのでしょうか? また、 unset($_SESSION['pcode']); を有効にするにはどうすればいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • セッションの削除

    例えば www.hoge.com/foo/index.php で session_start(); setcookie("bar",session_id(), time()+3600); として画面遷移を行いながら登録作業を行い、 完了画面regist.php で session_start(); $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000); } session_destroy(); としましたが$_COOKIE["bar"]が初期化されません。 どのようにしたら良いでしょうか? 教えてください。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 必ずincludeするファイルの記述部分を省略したい。

    必ずincludeするファイルの記述部分を省略したい。 フォルダの直下に複数のPHPファイルがあって、 どのPHPファイルも一番始めに include '../setting/setting.php'; のような設定ファイルを読み込むのですが これをうまい事省略したり、記述を簡単にする方法ってないでしょうか?

    • ベストアンサー
    • PHP
  • セッションついて

    現在PHPで開発を行っています。初心者なのでまだぜんぜんわかってないので、ご教授いただければと思っております。 PHP4.0.5、サーバはレンタルサーバでFreeBSDとなっています。 問題は、まず認証ページでユーザ認証を行った後、次のページに遷移したときに、セッション情報が引き継がれません。 sesson_start();をしているのですが、次のページで、$HTTP_SESSION_VARS変数の値が初期化されてしまっているみたいです。 いろいろサイトで調べたりしているのですが、うまくいきません。 セッションが引き継がれない理由として考えられることがありましたら教えていただけないでしょうか。 また補足が必要でありましたら、補足いたしますのでよろしくお願いします。

    • 締切済み
    • PHP
  • session_start();について

    以下のような処理を行なっております。(a.php~e.php) 入力情報保持のため、セッションを利用しております。 そこで、a.php~d.phpの全てのページの最初に session_start(); を記述しております。 ワーニングで 「Notice [PHP]: A session had already been started - ignoring session_start()」 といった旨のメッセージが出るのですが、サイト内でセッションを利用する場合、 最初(この場合だとa.php)だけに session_start(); を記述すればよいのでしょうか。 セッションを利用するページ全てに記述するという認識でいたのですが・・・ 御教授頂ければと思います。 a.php 情報ページ セッションの開始 b.php 入力情報チェック ↓ c.php 入力情報確認ページ d.php 入力情報登録 セッション破棄 e.php 登録完了ページ 環境 phpバージョン4.3.11 xoopsにて使用

    • 締切済み
    • PHP

専門家に質問してみよう