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>
댓글 7
별도의 PHP파일을 사용하여 직접 도메인.tld/경로/qr.php 처럼 불러오시나요?
그렇다면 php 상단에
require_once $_SERVER['DOCUMENT_ROOT'].'/common/autoload.php';
Context::init();
를 넣어보세요.
루트에 qrcode.html파일을 생성해서 링크 시킬려고 합니다
가급적이면 별도의 모듈을 만들어보시고, 그게 어렵다면 "외부페이지"로 불러오도록 해보세요.
라이믹스 회원정보와 연동하려면 라이믹스의 틀 안에서 동작하도록 해야지요. 임의로 만든 파일에 회원정보가 존재할 리가 없잖아요? 라이믹스와 전혀 관계없는 파일에서 회원정보를 볼 수 있다면 보안취약점이겠지요. ㅎㅎ
작성하신 파일을 직접 링크하지 말고 라이믹스에서 외부페이지로 불러오도록 해 보세요. 빈 화면에 꼭 필요한 내용만 나오도록 하고 싶다면 해당 페이지에 레이아웃을 쓰지 않으면 그만입니다.
단, 라이믹스 내에서 실행하더라도 $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
로 하시면 될거예요
감사합니다 잘해결했습니다^^