質問です。
PHPでサーバの各フォルダ(path)にアップしたページの画像を取得して一覧を作ろうとしていますが、ページ遷移の段階でpathが失われてしまいます。
どうすれば変数の値を失わずに済みますでしょうか。
cookieやsessionを使うべきなのでしょうか。教えてください。
HTML&PHP
1<head> 2<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" /> 3<meta charset="UTF-8"> 4<!-- CSS読み込み --> 5<link rel="stylesheet" href="design.css"> 6</head> 7<div class ="posted"> 8<?php 9 10date_default_timezone_set('Asia/Tokyo'); 11 12if(!isset($_POST['file_view'])){ 13 14$page = 0; 15$max_page = 0; 16 17}else{ 18 19global $path; 20$path = $_POST['file_view']; 21// ファイル一覧取得 画像だけの投稿は除ける 22$resent_posts = glob('./'.$path.'/*.php'); 23// 配列を逆に並べ替える 24$resent_posts = array_reverse($resent_posts); 25 26// 新しい順から取得していく 27//$resent_posts = array_slice($resent_posts, 0, 5); 28//foreach ((array)$resent_posts as $php_page) { 29 30//コンテンツの最大数 31$max = 4; 32 33$contents_sum = count($resent_posts); //コンテンツの総数 34$max_page = ceil($contents_sum / $max); //ページの最大値 35 36if (!isset($_GET['page'])) { 37 $page = 1; 38} else { 39 $page = $_GET['page']; 40} 41 42$start = $max * ($page - 1); //スタートするページを取得 43$view_page = array_slice($resent_posts, $start, $max, true); //表示するページを取得 44 45 46$num = 0; 47$page_on = 0; 48// ページ変更実装 49if ($num < $max) { 50$page_on = 1; 51} 52while ($num < $max) { 53// 力技で同名の画像を特定する 54$php_page = array_shift($view_page); 55 56// 画像がなくなったらbreak スクリプトが煩雑になるのでforeachの便利さを感じる 57if ($php_page == null) { 58 break; 59} 60 61$php_page_name = "./".$path."_i/".pathinfo($php_page, PATHINFO_FILENAME); 62$php_page_nophp = "./".$path."/".pathinfo($php_page, PATHINFO_FILENAME); 63 64// タイトル名取得、差分ファイルは取り除 65$title = null; 66// file_get_contentsでソース全部読み込む 67$contents = file_get_contents($php_page); 68// タイトルタグを探すための正規表現 69$pattern = '/<title>(.*?)</title>/i'; 70// preg_matchでページ全体からタイトルタグの中身だけを$matchに抽出 71preg_match($pattern, $contents, $match); 72// タイトルタグが一つだけの場合$match[1]がタイトルタグの中身 73if($match != null){ 74$title = $match[1]; 75} 76 77if ($title != null) { 78 // 拡張子を配列にして順番に画像ファイルが存在するかチェック 79 $php_page_name_ext = ['.png', '.jpg', '.jpeg', '.gif', '.bmp']; 80 foreach($php_page_name_ext as $file_ext){ 81 $php_page_name_check = $php_page_name.$file_ext; 82 // ファイルがあった場合はbreakで抜け出す 83 if (file_exists($php_page_name_check)){ 84 break; 85 } 86 } 87 88 echo '<div>'; 89 echo "<a href= $php_page_nophp >".$title . "<br>" . "\n"; 90 echo "<img src = $php_page_name_check ></a>" . "\n"; 91 echo '</div>'; 92 } 93 $num += 1; 94} 95 96} 97?> 98 <?php if ($page > 1): ?> 99 <a href="pic_viewer.php?page=<?php echo ($page-1); ?>"><<前のページへ </a> 100 <?php endif; ?> 101 <?php if ($page < $max_page): ?> 102 <a href="pic_viewer.php?page=<?php echo ($page+1); ?>">次のページへ>></a> 103 <?php endif; ?> 104</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/07/29 12:24