目的是为了防止在页面刷新后,亦或是在url连接处手动输入尝试进入网页时,抛出错误信息。
但是这样以来,还是会尝试读取session信息,自而报错, 错误信息及代码如下
<?php
require_once(dirname(__FILE__)."/../../common/auth.php");
require_once(dirname(__FILE__)."/../../common/defs_gen.php");
require_once(dirname(__FILE__)."/../../common/user.php");
require_once(dirname(__FILE__)."/../../common/bhcs_db.php");
require_once(dirname(__FILE__)."/../../common/affiliate.php");
require_once(dirname(__FILE__)."/../../home/bh/common/tutor_bh.php");
require_once(dirname(__FILE__)."/../../zoom/zoom_api.php");
require_once(dirname(__FILE__)."/../../common/bhcs/trial_lesson.php");
$word = new word();
$user_id = check_auth_login_user();
// トークンチェック
$tokenError = check_token('conf_trial_regist_token');
if ($_SESSION) {
$user_info = user::get_info_by_id($user_id);
$post = $_SESSION;
$post['email'] = $user_info->email;
$post['delivery_email'] = $user_info->delivery_email;
$post['bh_account_id'] = $user_info->bh_account_id;
$post['bh_user_id'] = $user_info->bh_user_id;
$post['user_name'] = $user_info->name;
$post['user_name_jp'] = $user_info->name_jp;
$post['course_name'] = foundation::$course_list[$post['course_id']];
$post['language_name'] = $post['language_id'] ? bhcs_db::getLanguageWithLanguageId($post['language_id']) : '';
$post['tutor_type_name'] = ($post['tutor_type'] == 'japanese') ? '日本人' : 'ネイティブ';
$post['application_type'] = ($post['datetime_type'] == 1) ? '仮予約' : '予約確定';
$post['program_name'] = $post['program_id'] ? foundation::$en_program_list[$post['program_id']] : '';
$res = TrialLesson::regist($user_info, $post);
$error_msg = '';
if (!$res->error){
// 本予約でレッスン方法がオンラインの場合
if (($post['datetime_type'] == 2) && ($post['lesson_type1'] == 2)) {
// Zoomミーティング作成
$duration = 90;
$agenda = 'Lesson: Trial lesson' . '\r\n' . ' Date:' . $res->start_datetime;
$date = date('Y-m-d', strtotime($res->start_datetime));
$start_time = date('H:i', strtotime($res->start_datetime));
$end_time = date('H:i', strtotime($res->start_datetime . '+90 minute'));
$zoom_result = zoom_api::set_meeting_create_data($duration, 'Trial lesson', $agenda, $date, $start_time, $end_time, $res->zoom_user_id);
if ($zoom_result) {
bhcs_db::registZoomMeeting($res->application_id, $res->lesson_id, $res->start_datetime, $duration, $zoom_result);
}
}
// アフィリエイト情報取得
$affiliate = Affiliate::get_affiliate_by_user_id($user_id);
if ($affiliate) {
// アフィリエイトステータス更新
Affiliate::update_status_by_user_id($user_id, $affiliate->id);
if ($affiliate->affiliate_type_id == AFFILIATE_TYPE_A8_01) {
// アフィリエイトデータ送信
send_curl_affiliate_data($affiliate);
}
}
// 不要なセッション削除
foreach ($_SESSION as $key => $val) {
if ($key == 'user_loginhash') {
continue;
}
unset($_SESSION[$key]);
}
} else {
// 仮予約の場合
if ($post['datetime_type'] == 1) {
$error_msg = '申し訳ありません、ご指定の全ての日時の予約枠は既に埋まってしまいました。<br>お手数ですが、下記ボタンより日時の再選択をお願いいたします。<br>※入力情報は保持しています。';
// 本予約の場合
} else {
$error_msg = '申し訳ありません、ご指定の日時・講師の予約枠は既に埋まってしまいました。<br>お手数ですが、下記ボタンより日時・講師の再選択をお願いいたします。';
}
// 指定の日時・講師が埋まっているのでセッションを削除(datetime1は画面遷移的に除外)
unset($_SESSION['datetime2']);
unset($_SESSION['datetime3']);
unset($_SESSION['datetime_type']);
unset($_SESSION['tutor_type']);
unset($_SESSION['lesson_type1']);
unset($_SESSION['lesson_type2']);
unset($_SESSION['lesson_type3']);
}
}
$step1 = is_smartphone() ? 'コース' : 'コース選択';
$step2 = is_smartphone() ? '日時' : '日時選択';
$step3 = is_smartphone() ? '確認' : '確認';
$step4 = is_smartphone() ? '完了' : '予約完了';
$not_header_content = true;
$header = array(
'title' => '無料体験レッスンお申し込み | 完了画面'
);
?>
<script>
(function(){
var _CIDN = "cid";
var _PLIDN = "plid";
var _ACTN = "cid_auth_get_type";
var _APTN = "plid_auth_get_type";
var _PMTV = "5cee139ab4a1a";
var _TRKU = "https://growth-link.net/track.php?p=" + _PMTV;
var _cks = document.cookie.split("; ");
var _cidv = "", _plidv = "", _actv = "", _aptv = "";
for(var i = 0; i < _cks.length; i++){ var _ckd = _cks[i].split("="); if(_ckd[0] == "CL_" + _PMTV && _ckd[1].length > 1){ _cidv = _ckd[1]; } if(_ckd[0] == "PL_" + _PMTV && _ckd[1].length > 1){ _plidv = _ckd[1]; } if(_ckd[0] == "ACT_" + _PMTV && _ckd[1].length > 1){ _actv = _ckd[1]; } if(_ckd[0] == "APT_" + _PMTV && _ckd[1].length > 1){ _aptv = _ckd[1]; } if(_cidv && _plidv && _actv && _aptv) break; }
if(!_cidv && localStorage.getItem("CL_" + _PMTV)){ _cidv = localStorage.getItem("CL_" + _PMTV); _actv = "ls"; }
if(_cidv){ _TRKU += "&" + _CIDN + "=" + _cidv; }
if(!_plidv && localStorage.getItem("PL_" + _PMTV)){ _plidv = localStorage.getItem("PL_" + _PMTV); _aptv = "ls"; }
if(_plidv){ _TRKU += "&" + _PLIDN + "=" + _plidv; }
if(_actv){ _TRKU += "&" + _ACTN + "=" + _actv; }
if(_aptv){ _TRKU += "&" + _APTN + "=" + _aptv; }
img = document.body.appendChild(document.createElement("img"));
img.src = _TRKU + "&t=abcdefg";
}());
</script>
<?php include (get_user_header ()); ?>
<div class="main_space">
<div class="container">
<div class="page-header">
<h1>無料体験レッスンお申し込み</h1>
</div>
<?php if ($tokenError === true) : ?>
<div class="alert alert-danger text-center">正常な画面遷移ではありません。
<br>お手数ですが、最初からやり直してください。
</div>
<?php else: ?>
<ol class="step_bar step4">
<li class="step"><?php echo $step1; ?></li>
<li class="step"><?php echo $step2; ?></li>
<li class="step"><?php echo $step3; ?></li>
<li class="step current"><?php echo $step4; ?></li>
</ol>
<?php if (!$error_msg) : ?>
<div class="message_area">
<h2>予約登録完了</h2>
<p>無料体験レッスンにお申し込み頂き、誠にありがとうございます。
<br>予約完了メールを送信させて頂きました。
<br>ご予約内容はTOPページからもご確認頂けます。
</p>
</div>
<div class="domain">
各携帯電話会社のセキュリティ設定や、お客様の迷惑メール対策等で、メールが正しく届かない場合がございます。<br>
迷惑メールフォルダにメールが届いていないかをご確認頂き、届いていない場合は以下のドメインを受信できるようご対応をお願いいたします。
<span><?php echo SUPPORT_DOMAIN ; ?></span><br>
上記の対応をされてもメールが確認出来ない場合は、お手数ですが下記メールアドレスまでご連絡をお願いいたします。<br><br>
<span><a href="mailto:<?php echo SUPPORT_EMAIL;?>"><img src="/images/email_white.png"></a></span>
</div>
<a href="/" class="btn btn-primary btn-lg center_link">ホーム</a>
<?php else: ?>
<div class="alert alert-danger"><?php echo $error_msg; ?></div>
<a href="datetime.php" class="btn btn-primary btn-lg center_link">日時選択ページへ</a>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
<?php include (get_user_footer ()); ?>
<?php
// アフィリエイトデータをcurlで送信
function send_curl_affiliate_data($affiliate) {
$parameter = explode(',', $affiliate->parameter);
switch ($parameter[1]) {
case 'ieltsa8':
$pid = '&pid=s00000019054003&so=';
$si = '&si=500-1-500-a8¤cy=JPY';
break;
case 'toefla8':
$pid = '&pid=s00000019054002&so=';
$si = '&si=500-1-500-a8¤cy=JPY';
break;
case 'multilanguage':
$pid = '&pid=s00000019054001&so=';
$si = '&si=5000-1-5000-a8¤cy=JPY';
break;
}
$order_no = 'bh' . $affiliate->user_id . 'a8';
$url = 'https://px.a8.net/a8fly/earnings?a8=' . $parameter[0] . $pid . $order_no . $si;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($curl);
curl_close($curl);
// ログ出力
$log = fopen(dirname(__FILE__)."/../../log/affiliate.txt", "a");
if (!$log) {
echo "Error: Open Log File, log.txt";
}
fwrite($log, date('Y-m-d H:i:s') . " Affiliate: A8. UserID: " . $affiliate->user_id . ". Response: " . $res . "\r\n");
fclose($log);
}
?>
错误信息如下
想请教如何避免在成功输出错误信息的时候不报错的方法例如在得到错误信息时时session无效等等等等
(16, 18, 132行是对应的位置)
感谢解答与指教