giftcon_dev/routes/dev_web.php
2026-03-03 15:13:16 +09:00

61 lines
1.8 KiB
PHP

<?php
/* 개발용 페이지 세션 보기*/
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::post('_dev/session', function (Request $request) {
abort_unless(config('app.debug') || app()->environment('local'), 404);
$action = (string) $request->input('_dev_sess_action', '');
// 자동 타입 변환(익명 함수라 재선언 문제 없음)
$parse = function (string $raw) {
$s = trim($raw);
$lower = strtolower($s);
if ($lower === 'true') return true;
if ($lower === 'false') return false;
if ($lower === 'null') return null;
// 정수
if (preg_match('/^-?\d+$/', $s)) {
// 앞자리 0이 있는 값(예: 00123)은 문자열 유지하고 싶으면 아래 조건 추가
// if (strlen($s) > 1 && $s[0] === '0') return $raw;
$int = (int) $s;
if ((string)$int === $s) return $int;
}
// 실수
if (preg_match('/^-?\d+\.\d+$/', $s)) {
return (float) $s;
}
// JSON
if ($s !== '' && (str_starts_with($s, '{') || str_starts_with($s, '['))) {
$j = json_decode($s, true);
if (json_last_error() === JSON_ERROR_NONE) return $j;
}
return $raw;
};
if ($action === 'flush') {
session()->flush();
session()->save();
} elseif ($action === 'put') {
$k = trim((string) $request->input('_dev_sess_key', ''));
$raw = (string) $request->input('_dev_sess_value', '');
if ($k !== '') {
session()->put($k, $parse($raw));
session()->save();
}
}
return redirect()->to((string) $request->input('_dev_return', '/'));
})->name('dev.session');
/* 개발용 페이지 세션 보기*/