데이터베이스에서 오는 PHP 코드를 실행하기 위해 eval을 사용하고 있습니다. 이 코드는 메타 태그 및 페이지 제목 용입니다. 나는이 ($ 현서을 컨트롤러에서 다음PHP, Eval code 결과 변수가
$name . " test page title |".SiteSettings::getSiteNameAlternate();
그리고 meta_title을 가진 개체이며, 그 요소는 DB에서 정확한 문자열을 가지고 : 한 가지 예는 (이 테이블에 저장됩니다) 다음과 같습니다) :
$pageTitle = isset($seo->meta_title) ? @eval("echo $seo->meta_title") : null;
저는 Larevel 프레임 워크를 사용하고 있으며 해당 페이지 제목을 블레이드 템플리트에 전달하면됩니다. 블레이드 코드
<title>{{ isset($page_title) ? $page_title : SiteSettings::defaultPageTitle() }}</title>
이 문제는 eval의 에코가 페이지 상단에도 페이지 이름을 가져 오기 때문에 발생합니다.
나는 print (멍청 아)와 printf를 사용해 보았습니다. 작동하지 않았다. 어떻게 화면에 출력하지 않고 변수에 그 평가의 가치를 두는가?
와트에 대해 'eval'을 사용하고 있습니까? 대체 어디 선가 잘못된 방향으로 나아 가지 않았습니까? – PeeHaa
아마 잘못 처리했는데 db에서 PHP 코드를 실행하는 다른 방법이 보이지 않습니다. –
DB에서 코드를 실행하는 것은 일반적으로 좋지 않습니다. eval에서 코드를 실행하는 것은 일반적으로 나쁜 생각입니다. 때로는 정당한 이유가있을 수 있지만 드문 경우입니다. 일반적으로 사람들은 이와 같은 코드를 작성할 때 최종 사용자가 개발자가 변경하지 않고 코드를 시스템에 추가 할 수있는 유연한 CMS 유형 플랫폼을 만들려고합니다. 이는 개발자가 아닌 사람이 코드를 작성하기 때문에 착오에 기반을 둡니까? 구성 가능한 시스템이 필요한 경우 올바른 방법은 설치 가능한 플러그인 시스템을 통해 이루어집니다. – Simba