Q&A

CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.4

홈페이지 개발 개인 초보입니다. 홈페이지에서 사번을  QR코드로 출력하는 기능을 넣으려고 하는데요.. 회원 정보 확장변수 입력id는 org_num입니다. 

아래 코드로 만들었는데 사번을 불러오질 못하네요 ㅠ

 

고수님들 도움 부탁드립니다.

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>사번 QR코드 생성기</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <script src="https://cdn.jsdelivr.net/npm/qrcodejs@1.0.0/qrcode.min.js"></script>
    <style>
        body {
            font-family: 'Inter', sans-serif;
            background-color: #f3f4f6;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
        }
        .container {
            background-color: white;
            padding: 2.5rem;
            border-radius: 1rem;
            box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
            text-align: center;
            width: 100%;
            max-width: 400px;
        }
    </style>
</head>
<body>

    <div class="container">
        <h1 class="text-3xl font-bold mb-6 text-gray-800">사번 QR 코드</h1>


        <!-- 이 부분에 라이믹스 PHP 코드를 삽입하여 사번 값을 가져옵니다. -->
        <?php

            // $logged_info 변수가 존재하는지 확인
            if (isset($logged_info) && isset($logged_info->extra_vars['org_num'])) {
                $org_num = $logged_info->extra_vars['org_num'];
            } else {
                $org_num = ''; // $logged_info가 없거나 확장 변수가 없을 경우
            }
        ?>

        <!-- 사번 표시 -->
        <p class="text-lg text-gray-600 mb-4">
            회원님의 사번: <span id="org_num_display" class="font-semibold text-gray-800">
                <!-- PHP 변수에서 가져온 사번 값을 여기에 출력 -->
                <?php echo htmlspecialchars($org_num); ?>
            </span>
        </p>

        <!-- QR 코드가 생성될 영역 -->
        <div id="qrcode" class="p-4 bg-gray-100 rounded-lg inline-block mb-6"></div>

        <p class="text-sm text-gray-500">QR 코드를 스캔하면 사번 정보가 표시됩니다.</p>
    </div>

    <script>
        document.addEventListener('DOMContentLoaded', () => {
            // PHP에서 삽입된 사번 값을 가져옵니다.
            const orgNum = document.getElementById('org_num_display').textContent.trim();
            const qrcodeContainer = document.getElementById('qrcode');

            // qrcode.js를 사용하여 QR 코드를 생성합니다.
            // 사번 값이 비어 있지 않은 경우에만 QR 코드를 생성합니다.
            if (orgNum) {
                new QRCode(qrcodeContainer, {
                    text: orgNum,
                    width: 200,
                    height: 200,
                    colorDark : "#000000",
                    colorLight : "#ffffff",
                    correctLevel : QRCode.CorrectLevel.H
                });
            } else {
                qrcodeContainer.innerHTML = '<p class="text-gray-500">사번 정보가 없습니다.</p>';
            }
        });
    </script>

</body>
</html>

jinn Lv. 1

댓글 7

  • 별도의 PHP파일을 사용하여 직접 도메인.tld/경로/qr.php 처럼 불러오시나요?

    그렇다면 php 상단에 

    require_once $_SERVER['DOCUMENT_ROOT'].'/common/autoload.php';

        Context::init();

     

    를 넣어보세요.

  • @얼음조각티

    루트에 qrcode.html파일을 생성해서 링크 시킬려고 합니다 

  • @jinn

    가급적이면 별도의 모듈을 만들어보시고, 그게 어렵다면 "외부페이지"로 불러오도록 해보세요.

     

  • 라이믹스 회원정보와 연동하려면 라이믹스의 틀 안에서 동작하도록 해야지요. 임의로 만든 파일에 회원정보가 존재할 리가 없잖아요?  라이믹스와 전혀 관계없는 파일에서 회원정보를 볼 수 있다면 보안취약점이겠지요. ㅎㅎ

     

    작성하신 파일을 직접 링크하지 말고 라이믹스에서 외부페이지로 불러오도록 해 보세요. 빈 화면에 꼭 필요한 내용만 나오도록 하고 싶다면 해당 페이지에 레이아웃을 쓰지 않으면 그만입니다.

     

    단, 라이믹스 내에서 실행하더라도 $logged_info라는 전역변수가 존재한다는 보장은 없죠. 누군가가 일부러 만들지 않으면 어떤 변수도 없는 것이 기본입니다.

        $logged_info = Context::get('logged_info');

    이런 식으로 불러와서 쓰면 됩니다. 물론 라이믹스가 아니라면 Context도 존재하지 않습니다.

     

    라이믹스 내에서 동작하는 외부페이지라면 <!doctype> <title> <html> <head> <body> 등의 태그는 삭제해야 합니다. 이런 부분은 코어에서 관리하니까요. <script>나 <style>은 그냥 두셔도 됩니다.

  • @기진곰

    감사합니다 잘해결했습니다^^

  • 회원가입 추가항목에  org_num  라는 입력항목ID 로 넣었다는거죠?

    $logged_info->extra_vars['org_num']
    가 아니라
    $logged_info->org_num
    로 하시면 될거예요

  • @sejin7940

    감사합니다 잘해결했습니다^^