2013-08-11 2 views
1

내 데이터베이스에 php가 있으면 사용할 수 있습니다. 특히 나는 <?php echo $email; ?>에 content라는 열이 있습니다. 사용자라는 보호 된 페이지에서 내용 열을 호출하고 페이지를 출력합니다. 블로그와 마찬가지로 잠시 동안 mysqli. 내 데이터베이스를 살펴보면 실제로 함수가 폼으로 게시 된 실제 변수가 아닌 <?php echo $email; ?>이라는 것을 알 수 있습니다.데이터베이스에 PHP가 있으면 사용할 수 있습니까?

편집 :

이 또한 내가 양식에서 값을 나타 그것이 실제로 전체 echo 문이 무엇인지보기 위해 불을 지르고에서 찾고 있어요. echo 문은 저장된 양식의 일부로 데이터베이스에서 가져옵니다. 이것은 좋은 습관이 아닌가? 그렇다면 어떻게 할 수 있습니까? 나는 무엇인가 놓치고 있냐??

추가 정보를 원하시면 내가 페이지의 내용을 메아리 스크립트를 가지고

.. 입력 데이터에 mysqli 이스케이프 문자열을 사용하고 있다는 점이다. 이 경우 데이터베이스의 내용은 전자 메일의 숨겨진 필드를 포함하는 양식입니다. 이 방법으로 우리는 데이터베이스에 게시하는 것을 말할 수 있으므로 연결을 설정할 수 있습니다. 일본어 페이지 내

이 특정 페이지에 포함 된 활성 변수이다.
<input type="hidden" id="email" value="<?php echo $email; ?>" /> 

는 일반적으로 에코가 작동 것이지만, 그 이유는 확실하지 해요 : 나는 데이터베이스에서 필드 지금과 같은 형태로 포함하고 있습니다. 그 이유는 그 입력 필드가 데이터베이스에서 온다는 사실이 이미 페이지 내에있는 변수를 기반으로 반향되지 않는다고 묻는 이유입니다. 설명은

또한 예 : 실제 user.php 페이지에서 이메일 그게

<?php 
include_once "includes/db_conx.php"; 
$sql = "SELECT * FROM course ORDER BY id DESC"; 
$sql_page = mysqli_query($db_conx,$sql); 
while($row = mysqli_fetch_array($sql_page)){ 

$email = $row["email"]; 
} 
?> 

는 .....

이제 user.php도 ..

내용에 대한 영역을 가지고
<?php 
include_once "includes/db_conx.php"; 
$sql = "SELECT * FROM content ORDER BY id DESC LIMIT 1"; 
$sql_page = mysqli_query($db_conx,$sql); 
while($row = mysqli_fetch_array($sql_page)){ 

$content = $row["content"]; 
} 
?> 
우리는 내용이 같다고 말할 것

...

<form> 
    <input type="hidden" id="email" value="<?php echo $email; ?>" /> 
//  
</form> 

이것은 또한 user.php에 출력합니다. user.php에 $ email이 있습니다.이 접근 방법에 대해 어떻게 말하고 있습니까? 어떻게 내가 이것을 반향시킬 수 있습니까? 의견을 바탕으로

+0

가능한 중복 (http://stackoverflow.com/questions/5072434/php-eval-code-in-between-php-from-database) –

+0

하지 않음 모범 사례로 간주됩니다. 템플릿 작업과 같이 원하는 작업을 수행하는 덜 복잡한 방법이 있습니다. 그것은 당신이 (더 이상 잘하면) 찾고있어 eval() 함수입니다! –

+0

나는 eval()을 사용하고 있다고 생각하지 않는다 ... 위에서 설명 할 것이다. 1 초에 @NeilNeyman – Chris

답변

1

나는 빠른 대답은 내 첫 코멘트에 링크 된 기사를 확인하는 것입니다라고 말하고 싶지만. 예, 문제는 양식 출력 코드가 데이터가 아니라 변수에 데이터를 기대할 가능성이 높다는 것입니다. 안에 포함 된 코드를 실제로 실행하려면 변수를 eval()해야합니다. 그러나 이것이 최선의 방법은 아닙니다.

$x = '<php? echo $hello ?>'; 

$outstr= "<input type='hidden' value=' $x ' >"; 
//no this wont work unless you use eval($x) 

편집 :

기반

더 나은 솔루션

그것은 차이가 그냥 DB에 $ 이메일의 내용을 저장하고 당신의 형태로 그를 전송하는 것 콘텐츠로 위의 설명에, 당신은 단지 콘텐츠의 태그 사이의 모든 것을 무시하고 실제 콘텐츠로 대체하는 방법이 필요할 수 있습니다? DB 디자인을 바꿀 수 없다고 가정합니다 ...

두 빠른 & 더러운 시도 할 수 & 아마도 안전하지 않은 것입니다

include("data:,$content"); 
//or 
eval('?>'.$content.'<?'); 

또는 당신은 정규 표현식으로 대체 할 수있다 : 다음

$phpTagPattern = "#<\?.*?(echo)\s+(\$\w+);.*?(\?>|$)#s"; //just searching specifically 
          //for <?php echo $varname; ?> to replace with $varname; 
$replacePattern = "$2"; // this may need some cleaning/debugging here. It's late... 
$newContent = preg_replace($phpTagPattern,$replacePattern,$content); 

여전히 얻을 수 parse_str해야 할거야 어쨌든 변수 내용 ... 아마 코드를 실행하는 것보다 다소 안전합니다.

echo parse_str($newContent); //should get you to actual contents of $email variable 

이 모든

보다 쉽게 ​​토크 나이 확장을 달성 할 수 있습니다 http://www.php.net/manual/en/tokenizer.examples.php 당신은 T_OPEN_TAG 및 T_CLOSE_TAG 검색 할 것입니다.

높은 수준의 더 나은 방법 (TM) 종류의 설명을 위해 실제 데이터를 데이터베이스에 저장하고 콘텐츠를 멋지게 템플릿 엔진에 넣는 것이 더 적합합니다. 그런 다음 폼의 셸을 만들고 필요한 곳에 변수를 전달합니다. 데이터를 로직과 분리하고 출력/포맷팅 마크 업을 분리하십시오. 정말 [데이터베이스에서 사이에서 PHP의 평가() 코드]의

+0

이메일은 동일한 페이지 (user.php)에 저장되고 사용됩니다. 다른 곳에서는 ... 단지 양식 자체가 아닙니다. 수동으로 에코를하면 멋지게 나옵니다. 우리는 여전히 같은 페이지에 있습니까? – Chris

+0

예. 이메일에 에코 만 표시하면됩니다. 당신은 뽑아 진 내용을 반향시키고 싶지 않고 평가는 약간 위태 롭다. 왜냐하면 당신은 PHP 코드를 울리고 있기 때문입니다. 명시 적으로 지시하지 않으면 코드가 실행되지 않습니다. –

+0

양식 내에있는 경우 어떻게 표시합니까? 나는 당신이 의미하는 바를 완전히 혼란 스럽습니다. 나는 그것을 기꺼이 사용한다고 말합니다. 그러나 제가 생각한 것입니다 ... db의 내용 컬럼에서 얻는 유일한 것입니다. 그 입력과 변수를 가진 형태입니다 ... 당신이 그것을 사용하는 말,하지만 내가하고있는 줄 알았지. – Chris