前提・実現したいこと
▶︎PHP:
header関数を用いて、別ファイルのリンクに移動して表示したい。
▶︎目的:
PHPでWebサービスの制作
発生している問題・エラーメッセージ
現在、
①index.php:ユーザーが入力した情報をセッションに保存
②sent.php :受け取ったセッション値をもとに計算し、入力した情報を反映
上記二つのファイルを用意して
コーティングを勧めているのですが
【エラー内容】
①のform内で入力した情報を送信ボタンを押して
②のリンクに移動したいのですが、送信ボタンを押しても②に移動しない。
【実際の状況】
ただし、①のファイルのurlの末尾に「/sent.php」と記載すると
①で入力した内容が、②のファイルできちんと反映されているような状態。
該当のソースコード
php
1 2①のファイル記載内容(Header関数を用いてコーティング) 3 4<?php 5session_start(); 6ini_set('display_errors', 0); 7 8$y = $_POST['year']; 9$m = $_POST['m']; 10$d = $_POST['d']; 11$sleeptime = $_POST['sleeptime']; 12$poortime = $_POST['poortime']; 13 14if(!empty($_POST)) { 15 if($y == "") { 16 $error["y"]="blank"; 17 } 18 if($m == "") { 19 $error["m"]="blank"; 20 } 21 if($d == "") { 22 $error["d"]="blank"; 23 } 24 if($sleeptime == "") { 25 $error["s"]="blank"; 26 } 27 if($poortime == "") { 28 $error["p"]="blank"; 29 } 30 31 if(empty($error)){ 32 $_SESSION["try"]=$_POST; 33 header("Location:sent.php"); 34 exit(); 35 } 36} 37?> 38 <form method="post" action=""> 39 <div class="row mt-4"> 40 <div class="form-group col-sm-6 col-xs-12"> 41 <label for="exampleFormControlSelect1" class="text-muted">西暦</label> 42 <select class="form-control" name="year"> 43 <option selected="selected" value="<?php echo $_POST['year'];?>"> 44 <?php if($y == ""): ?> 45 <?php echo "--"; ?> 46 <?php else :?> 47 <?php echo $y; ?> 48 <?php endif; ?> 49 </option> 50 <?php foreach(range(1950,2020) as $year): ?> 51 <option value="<?=$year?>"><?=$year?></option> 52 <?php endforeach; ?> 53 </select> 54 <?php if($error["y"] == "blank"):?> 55 <p style="color:red; font-weight: bold; font-size:12px;"><?php echo "※未選択です!"; ?></p> 56 <?php endif; ?> 57 </div> 58 59 <div class="form-group col-6 col-sm-3"> 60 <label class="text-muted">誕生月</label> 61 <select class="form-control" name="m"> 62 <option value="<?php echo $_POST['m'];?>"> 63 <?php if($m == ""): ?> 64 <?php echo "--"; ?> 65 <?php else :?> 66 <?php echo $m; ?> 67 <?php endif; ?> 68 </option> 69 <?php foreach(range(1,12)as $m): ?> 70 <option value="<?=$m?>"><?=$m?></option> 71 <?php endforeach; ?> 72 </select> 73 <?php if($error["m"] == "blank"):?> 74 <p style="color:red; font-weight: bold; font-size:12px;"><?php echo "※未選択です!"; ?></p> 75 <?php endif; ?> 76 </div> 77 <div class="form-group col-6 col-sm-3"> 78 <label class="text-muted">誕生日</label> 79 <select class="form-control" name="d"> 80 <option value="<?php echo $_POST['d'];?>"> 81 <?php if($d == ""): ?> 82 <?php echo "--"; ?> 83 <?php else :?> 84 <?php echo $d; ?> 85 <?php endif; ?> 86 </option> 87 <?php foreach(range(01,31) as $d): ?> 88 <option value="<?=$d?>"><?=$d?></option> 89 <?php endforeach; ?> 90 </select> 91 <?php if($error["d"] == "blank"):?> 92 <p style="color:red; font-weight: bold; font-size:12px;"><?php echo "※未選択です!"; ?></p> 93 <?php endif; ?> 94 </div> 95 <div class="form-group col-sm-6 col-xs-12"> 96 <label class="text-muted">睡眠時間</label> 97 <select class="form-control" name="sleeptime"> 98 <option value="<?php echo $_POST['sleeptime'];?>"> 99 <?php if($sleeptime == ""): ?> 100 <?php echo "--"; ?> 101 <?php else :?> 102 <?php echo $sleeptime; ?> 103 <?php endif; ?> 104 </option> 105 <?php foreach(range(01,24) as $d): ?> 106 <option value="<?=$d?>"><?=$d?></option> 107 <?php endforeach; ?> 108 </select><?php if($error["s"] == "blank"):?> 109 <p style="color:red; font-weight: bold; font-size:12px;"><?php echo "※未選択です!"; ?></p> 110 <?php endif; ?> 111 </div> 112 <div class="form-group col-sm-6 col-xs-12"> 113 <label class="text-muted">無駄に過ごした時間</label> 114 <select class="form-control" name="poortime"> 115 <option value="<?php echo $_POST['poortime'];?>"> 116 <?php if($poortime == ""): ?> 117 <?php echo "--"; ?> 118 <?php else :?> 119 <?php echo $poortime; ?> 120 <?php endif; ?> 121 </option> 122 <?php foreach(range(00,12) as $d): ?> 123 <option value="<?=$d?>"><?=$d?></option> 124 <?php endforeach; ?> 125 </select><?php if($error["p"] == "blank"):?> 126 <p style="color:red; font-weight: bold; font-size:12px;"><?php echo "※未選択です!"; ?></p> 127 <?php endif; ?> 128 </div> 129 </div> 130 <button class="button button-3d nomargin" type="submit">診断する</button> 131
php
1②のファイル記載内容(Header関数を用いてコーティング) 2 3<?php 4session_start(); 5 6 if(!isset($_SESSION["try"])){ 7 header("Location:index.php"); 8 exit(); 9 } 10 11 $_POST=$_SESSION["try"]; 12 $y = $_POST['year']; 13 $m = $_POST['m']; 14 $d = $_POST['d']; 15 $mx = str_pad($m, 2, 0, STR_PAD_LEFT); 16 $dx = str_pad($d, 2, 0, STR_PAD_LEFT); 17 $callbirthday = $y."年".$m."月".$d."日"; 18 $birthday = $y.$mx.$dx; 19 $sleeptime = $_POST['sleeptime']; 20 $poortime = $_POST['poortime']; 21 $age = floor((date('Ymd')-$birthday)/10000); 22 23 function day_diff($date1, $date2) { 24 25 $timestamp1 = strtotime($date1); 26 $timestamp2 = strtotime($date2); 27 $seconddiff = abs($timestamp2 - $timestamp1); 28 $daydiff = $seconddiff / (60 * 60 * 24); 29 return $daydiff; 30 } 31 32 $day1 = strtotime($birthday); 33 $day2 = strtotime(date('Ymd')); 34 $dayaftter = ($day2 - $day1); 35 $daycount = ceil($dayaftter / (60 * 60 * 24)); 36 $lifetime = $daycount*24; 37 $lifeend = ceil(36500 - $daycount); 38 39 function day_last($time1,$time2) { 40 if ($time2 <=24){ 41 $laststamp1 = $time1 * (24-$time2); 42 $laststamp2 = ceil($laststamp1 / 24); 43 return $laststamp2; 44 45 } else{ 46 echo "※24時間以内を入力してください"; 47 } 48 } 49 $daysleft = day_last($lifeend,$sleeptime); 50 51 function day_last_after($time1,$time2,$time3) { 52 if ($time2 <=24){ 53 $laststamp1 = $time1 * (24-$time2-$time3); 54 $laststamp2 = ceil($laststamp1 / 24); 55 return $laststamp2; 56 } else{ 57 echo "※24時間以内を入力してください"; 58 } 59 } 60 $daysleftafter = day_last_after($lifeend,$sleeptime,$poortime); 61 $lastyaer = ceil($daysleft/365); 62 $lastyaerafter = ceil($daysleftafter/365); 63 $lifeclock = $age/4*60*60; 64 $time = sprintf(gmdate("H時間i分", $lifeclock)); 65 $professional = $daysleft * 24 /10000 66 67?>
試したこと
header関数をファイル名からURLに変更してみたのですが
こちらは変えても、問題解決ができない状態で
①のファイルのform欄に
「action="sent.php"」と記載してみましたが
こちらも問題解決に至りませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
