session_start() : 複数のphpで共通の変数値を設定

セッション(session)をPHPで使うための基本知識を解説!|TECH PLAY Magazine [テックプレイマガジン]

phpの変数データを別のphpに引き継ぐ方法3種類

Kawana lab でのzhongwen-mainの例
<form>のsubmitを使用せずにページを遷移する場合、$_REQUESTで変数の値を引き継げない。
session_start()でサーバー内に値を保存する。

データに付されたランク(rank)で検索して表示したい。
・page-zhongwen-mainで表示するrank別にボタンを設定している。
・page-zhongwen-mainより<submit>にてpage-zhongwen-hyojiにrank情報を$_REQUESTにて引き渡す。
・page-zhongwen-hyojiにてデータの修正のため「選択」ボタンで更新画面のpage-zhongwen-2に遷移する。
 その際にrank情報を<submit>、$_REQUESTにて引き渡す。
・page-zhongwen-2にてデータを更新する際は、<submit>、$_REQUESTにてpage-zhongwen-2内でupdate処理をする。
 そのうえで <META http-equiv=”Refresh”・・>でpage-zhongwen-hyojiに戻る。その際にrank情報を$_REQUESTで
 引き渡せない。そのためsession_start()を使用する。

page-zhongwen-rank.phpをsessionデータ作成のため追加
目的:page-zhongwen-hyojiの冒頭にsession_start()を設定(以下コード)すると、page-zhongwen-mainから-hyoujiに遷移した場合は、$_SESSION[‘rank’]には-mainの<form>により$_REQUEST[‘rank’]にて代入されるが、更新、修正のためpage-zhongwen-2より遷移してきた場合では<form>ではなく、<META http-equiv=”Refresh” ???>で遷移するため$_REQUESTの値が空白でありrankの値が$bbに代入されない。従いpage-zhongwen-2から-hyojiに遷移する際に通過しないphpを作る必要がある。(この手法を創作したが他に正規の方法があるかもしれない)

$bb=$_REQUEST[‘rank’];session_start(); 
// 有効期限30日
session_cache_expire(60 * 24 * 30);
$_SESSION[“rank”] = “$bb”;

注意点 : get_header()の後にsession_start()を記述すると以下の警告が出る。(原因未検討)そのためget_header()の前に記述している。
Warning: session_start(): Cannot send session cache limiter – headers already sent

page-zhongwen-rank.php
<?php
$bb=$_REQUEST['rank'];
session_start();
    // 有効期限30日
    session_cache_expire(60 * 24 * 30);
    $_SESSION["rank"] = "$bb";
	session_start();

    if (isset($_SESSION["rank"])) {
        print "<p>";
        print "ログインID:".$_SESSION["rank"];
        print "</p>";
    }
	
	print "session:".$_SESSION["rank"];
	echo"<br>";
	print "motomoto:".$_REQUEST['motomoto'];
 echo '<META http-equiv="Refresh" content="0;URL=http://kawana.php.xdomain.jp/zhongwen-hyoji/">';//1秒後に指定のURLにジャンプする。
?>