폼으로 게시판 내용을 넘길때...

폼으로 게시판 내용을 넘길때...

QA

폼으로 게시판 내용을 넘길때...

답변 4

사용 PHP 버전

7.2

본문

안녕하세요. 

폼을 이용하여 게시판 제목과 몇가지 여분필드를 예약페이지로 넘기고 있습니다. 

예약페이지 글쓰기 페이지에 아래와 같이 상단을 넣으니 제가 원하는 항목은 잘 가지고 오고 있습니다. 


$subject = $_POST[wr_subject];
if( empty( $w)){
    $ref_id=sql_real_escape_string( $_POST['ref']);
    $ttb= $_POST['ref_table']?'g5_write_'.$_POST['ref_table']:'g5_write_booking_tour';
    $tmp1= sql_fetch("select wr_subject from {$ttb} where wr_id='$ref_id' ");
    $wr_subject= $tmp1['wr_subject'];
    $write['wr_8'] = $_POST['wr_6']; //상품가격
    $write['wr_10'] = $_POST['wr_4']; //가격표기문구
}
 

그런데 이 예약페이지를 회원전용으로 만들고 싶어서 권한을 2 이상만 작성하게큼 설정을 했는데 

예약하기 버튼을 누루면 --> 회원로그인 페이지 --> 예약작성페이지 로 가게하려고 합니다. 

그런데 회원로그인 페이지만 갔다가 다시 예약페이지로 가면 폼으로 옮겨왔던 내용들이 리프레쉬 되면서 

모두 사라집니다. 로그인 페이지를 다녀와도 폼으로 옮겨온 내용이 그대로 있게 하려면 

어떻게 해야할까요?

도움 주시면 감사하겠습니다. 

이 질문에 댓글 쓰기 :

답변 4


<?php
$subject = $_POST['wr_subject'] ?? '';
if (empty($_POST['w'])) {
    $ref_id = sql_real_escape_string($_POST['ref'] ?? '');
    $ttb = !empty($_POST['ref_table']) ? 'g5_write_' . $_POST['ref_table'] : 'g5_write_booking_tour';
    $tmp1 = sql_fetch("SELECT wr_subject FROM {$ttb} WHERE wr_id='$ref_id'");
    $wr_subject = isset($tmp1['wr_subject']) ? $tmp1['wr_subject'] : '';
    $write['wr_8'] = $_POST['wr_6'] ?? '';
    $write['wr_10'] = $_POST['wr_4'] ?? '';
    if (!$is_member && !$member['mb_id']) { ?>
        <script>
            window.onload = function () { // 회원이 아니면 로컬에 저장
                localStorage.setItem("wr_subject", "<?= addslashes($wr_subject) ?>");
                localStorage.setItem("wr_8", "<?= addslashes($write['wr_8']) ?>");
                localStorage.setItem("wr_10", "<?= addslashes($write['wr_10']) ?>");
            };
        </script>
    <?php } 
} else if(!$_POST['wr_6'] && !$_POST['wr_4']) { // 포스트로 넘어온 값이 없으면 로컬에 있는 것 불러오기 ?>
    <script>
        window.onload = function () {
            if (document.querySelector("input[name='wr_subject']")) {
                document.querySelector("input[name='wr_subject']").value = localStorage.getItem("wr_subject");
            }
            if (document.querySelector("input[name='wr_8']")) {
                document.querySelector("input[name='wr_8']").value = localStorage.getItem("wr_8");
            }
            if (document.querySelector("input[name='wr_10']")) {
                document.querySelector("input[name='wr_10']").value = localStorage.getItem("wr_10");
            }
            /* // 로컬에서 확인
            console.log("Loaded from localStorage:", 
                localStorage.getItem("wr_subject"), 
                localStorage.getItem("wr_8"), 
                localStorage.getItem("wr_10")
            );
            */
        };
    </script>
<?php } ?>

로그인 페이지를 수정 하기는 불편할 것이니 로컬에 저장해서 하면 될 것입니다.

테스트 해보지는 않았는데 위와 같이 하면 될 것입니다.
오류가 나면 수정해서 해보세요.

작성중 데이터 임시 저장 및 불러오기를 구현해야 할것 같습니다.

임시 저장 방법으로는 서버 세션을 사용하거나

민감하지 않은 데이터의 경우 클라이언트 세션 스토리지의 사용을 고려해볼수 있습니다.

회원 로그인페이지로 넘어가면 $_POST 값이 무력화 될것이니

원하는 정보를 자바스크립트의 세션 스토리지로 담아서 다시 뿌려야 할 것 같습니다.

로그인하여 이동시 임시저장 기능을 쓰지 않으면 데이터를 손실될수 밖에 없습니다.
차라리 예약입력하기전에 로그인후 입력 가능하도록 처리후 로그인후 기입하도록 하는쪽으로 기능 구현하시는게 효율적이지 않을까 싶습니다.
만약 해당 기능 구현을 위해서 로그인 페이지 이동전에 ajax로 해서 임시 테이블에 해당 데이터를 기록한후
로그인후 페이지 접근시 해당 세션값이 동일하면 그에 따라 데이터를 불러오도록 적용하셔야 할듯 합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,825
© SIRSOFT
현재 페이지 제일 처음으로