PHP7 ,PHP5 버전 그누보드5 문제인지 이해가 안가네요
본문
Fatal error: Call to undefined function alert() in D:\APM_Setup\htdocs_aegook.or.kr\gbyc531_www.tar\www\c.php on line 10
c.php최초오류 c.php?id=admin 하면 잘되는데 없는 아이디 id=adminx 하면 오류남. ( 신기 ).
APM_setup 은 버전 PHP Version 5.2.12
<?php
include_once("./_common.php");
$chuid = "$id";
if ($chuid){
$mb_id = trim($chuid);
$mb = get_member($mb_id);
if (!$mb[mb_id])
alert("추천인이 가입된 회원이 아닙니다.", "$g5[path]/bbs/register.php");//<<id없는거 넣으면 여기에러남
set_cookie('Cook_chu_id', $chuid, 86400);
alert("$chuid 님이 추천하였습니다.", "$g5[path]/bbs/register.php");
} else {
alert("추천인 아이디가 없습니다.\\n\\nhttp://www.aegook.or.kr/c.php?id=추천인아이디\\n\\n위의 형식이어야 추천인 혜택이 있습니다.", "$g5[path]/bbs/register.php");
}
?>
신기하게도 PHP Version 7.0.0p1 (cafe24 호스팅)
define('G5_VERSION', '그누보드5');
define('G5_GNUBOARD_VER', '5.3.1.3');
define('G5_YOUNGCART_VER', '5.3.1.3');
alert()함수가 정의안되었다고 나옵니다. 그래서 alert1()으로 이름바꿔 정의 아래와같이 했느데 동일 오류남.
/c.php 파일에서 alert()를 호출시 에러남.
/lib/common.lib.php 요기에 명시되있거늘..~ php7.0의 버그인듯한데..
어떤 버그인지를 알고 써야할듯하여 아시는분 한수 부탁들립니다.
Fatal error: Uncaught Error: Call to undefined function alert1() in /yyy_aegook/www/c.php:32 Stack trace: #0 {main} thrown in /yyy_aegook/www/c.php on line 32
c.php파일
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include_once("./_common.php");
// 경고메세지를 경고창으로
function alert1($msg='', $url='', $error=true, $post=false)
{
global $g5, $config, $member;
global $is_admin;
$msg = $msg ? strip_tags($msg, '<br>') : '올바른 방법으로 이용해 주십시오.';
$header = '';
if (isset($g5['title'])) {
$header = $g5['title'];
}
include_once(G5_BBS_PATH.'/alert.php');
exit;
}
$chuid = "$id";
if ($chuid){
$mb_id = trim($chuid);
$mb = get_member($mb_id);
if (!$mb[mb_id]){
alert1("추천인이 가입된 회원이 아닙니다.", "$g5[path]/bbs/register.php"); // <<최초 여기 에러가남.신기 분명 alert()가 정의 되어있었음.
}
set_cookie('Cook_chu_id', $chuid, 86400);
alert1("$chuid 님이 추천하였습니다.", "$g5[path]/bbs/register.php");
} else {
alert1("추천인 아이디가 없습니다.\\n\\nhttp://www.aegook.or.kr/c.php?id=추천인아이디\\n\\n위의 형식이어야 추천인 혜택이 있습니다.", "$g5[path]/bbs/register.php");// <<여기 에러 위에 정의했거늘.
}
?>
답변 2
찾았음^^
아래코드를 보시면.. 공백으로 보이는 특수문자가 있습니다.
복사붙여넣기하면서 보이지 않는 특수문자가 앞에 있어서 그게 함수명으로 포함되어서 였음.
<?php
include_once("./_common.php");
$chuid = "$id";
function alert1($msg,$go){
echo "<script>
alert('$msg');
location.href='$go';
</script>";
exit;
}
if ($chuid){
$mb_id = trim($chuid);
$mb = get_member($mb_id);
if (!$mb[mb_id]){
alert1("추천인이 가입된 회원이 아닙니다.", "$g5[path]/bbs/register.php");
}
set_cookie('Cook_chu_id', $chuid, 86400);
alert1("$chuid 님이 추천하였습니다.", "$g5[path]/bbs/register.php");
} else {
alert1("추천인 아이디가 없습니다.\\n\\nhttp://www.aegook.or.kr/c.php?id=추천인아이디\\n\\n위의 형식이어야 추천인 혜택이 있습니다.", "$g5[path]/bbs/register.php");
}
?>[/code]
<?php
function te st(){
echo "te st()";
}
te st();
결과는 아래아같이 함수가 실행된다.. 이 보이지 않는 문자가 앞에있어서였다. 흐~
te혻혻혻st()
---
앞에 헤더에<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">를 넣으면
결과가아래와같이 나온다.
te st()
----------- ! php5,7 UTF8로 작성시에는 공백과 보이지 않는 특수문자를 기억하자!
!-->