前提・実現したいこと
PHPでhtmlファイルを作り、そのhtmlファイルに送信したの値を書き込む
発生している問題・エラーメッセージ
htmlファイル自体の作成はできたのですがそのファイルに送信した値を書き込むことができていません。
Warning: session_start(): Session cannot be started after headers have already been sent in /Applications/MAMP/htdocs/create_file/test.php on line 2 Warning: Undefined variable $_SESSION in /Applications/MAMP/htdocs/create_file/test.php on line 4 Warning: Trying to access array offset on value of type null in /Applications/MAMP/htdocs/create_file/test.php on line 4
該当のソースコード
//create.php <?php if ($_SERVER['REQUEST_METHOD'] === 'POST'){ require_once dirname(__FILE__).'/data.php';//data.phpを読み込む foreach ($kanto as $key => $val ) { $url = "http://localhost/create_file/template.php?prefecture=".$key; createFile($url,$key); } } //ファイル生成の関数 function createFile($url,$key){ $buff = file_get_contents($url);//urlの内容を読み取る $path="html/";//生成するファイルのディレクトリ chkDir($path); $fname = "html/".$key.".html";//生成するファイルのディレクトリとファイル名 $fhandle = fopen( $fname, "w");//ファイルを書き込みモードで開く。 fwrite( $fhandle, $buff);//ファイルをバイナリモードで書き込む。第二引数に書き込みたい文字列 fclose( $fhandle );//ファイルポインタを閉じる } //ディレクトリのアクセス権の関数 function chkDir($path){ if(!file_exists($path)){ mkdir($path, 0777);//パーミッションを指定してフォルダーを生成 chmod($path, 0777);//Chmod関数でパーミッション変更 } } ?> <!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title></title> </head> <body> <form action="" method="POST"> <p><input type="text" name="data[name]" size="25" value=""></p> <p><input type="submit" value="送信" name="create"></p> </form> </body> </html>
//template.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>テスト</title> </head> <body> <h1><?php include('./test.php'); ?></h1> </body> </html>
//data.php <?php session_start(); // セッション情報の保存 if($_SERVER['REQUEST_METHOD'] === 'GET'){ $data = []; $data = $_POST['data']; $_SESSION['name'] = $data["name"]; $kanto = array( $data["name"] => $data ); }; ?>
//test.php <?php session_start(); $name = $_SESSION['name']; echo $name; ?>
試したこと
別にphpファイルを作って$name = $_SESSION['name'];の値をechoで表示させると警告文が出なかったので値は入っていると思うのですが、なぜ値が入っていないことになっているのかがわかりません。
また$name = $_SESSION['name'];を$name = "a";にしてみると警告文が出ずaが表示されたのでおそらくこの部分が原因だと思っているのですが、ここから先がわかっていない状況です。
補足情報(FW/ツールのバージョンなど)
MAMPを使用しており、PHPのバージョンは8.0.0です。
参考にさせていただいたサイト
//ファイル生成について
https://tech-dig.jp/php_create_file/
回答2件
あなたの回答
tips
プレビュー