2015-01-18 2 views
0

사용자가 양식을 제출 한 후 HTML 페이지를 반향하려고하는 중 문제가 발생합니다. 제출 버튼을 누르면 사용자는 아래의 PHP 코드가 포함 된 email.php 페이지로 리디렉션됩니다. 그러나 에코는 HTML 컨텐트를 명확하게 반환하며 올바르게 포맷되지 않습니다. 나는 PHP와 함께 최고의 아니다PHP에서 HTML을 에코하는 경우 출력이 일반 텍스트로 표시됩니다.

<html> 
<head> 
<style type="text/css"></style> 
</head> 
<body> 
<pre style="word-wrap: break-word; white-space: pre-wrap;"> 
    <html> 
    <head> 
    <title>XXXX Confirmation</title> 
    </head> 
    <body style='background-color:#f3f3f3; margin:0;'> 
    <div style='background-color:#0a5a92; padding: 10px;color:#f3f3f3; margin:0px;'> 
    <h2>Thank You for Signing up!</h2> 
    </div> 
    <div style='padding: 0px 10px 0px 10px;'> 
    <p> If you did not subscribe to XXXX, please email <a href='mailto:[email protected]'>[email protected]</a> to unsubcribe.</p> 
    <br/> 
    </div> 
    </body> 
    </html> 
</pre> 
</body> 
</html> 

나는 매우 제한된 지식에 실행하고 있습니다 : 여기

<?php 
//error_reporting(E_ALL); 
//ini_set("display_errors", "On");` 

//$json_data=$_GET['track']; 
//______________________________________ 
//Establish Connection 
$db = new PDO('mysql:host=xxxx;dbname=xxxx;charset=utf8', 'xxxx', 'xxxx') 
    or die("cannot open database"); 
//$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
//$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); 

$sql = "INSERT INTO xxxx (xxxx, xxxx, xxxx, xxxx) VALUES (:email, :firstname, :lastname, :year :month :day)"; 

$params = array(
    ':email' => $_POST['email'], 
    ':firstname' => $_POST['firstname'], 
    ':lastname' => $_POST['lastname'], 
    ':day' => $_POST['day'], 
    ':month' => $_POST['month'], 
    ':year' => $_POST['year'] 
); 
$points = $db->prepare($sql); 

echo "<html> 
<head> 
<title>XXXX Confrimation</title> 
</head> 
<body style='background-color:#f3f3f3; margin:0;'> 
<div style='background-color:#0a5a92; padding: 10px;color:#f3f3f3; margin:0px;'> 
<h2>Thank You for Signing up!</h2> 
</div> 
<div style='padding: 0px 10px 0px 10px;'> 
<p> If you did not subscribe to XXXX, please email <a href='mailto:[email protected]'>[email protected]</a> to unsubcribe.</p> 
<br/> 
</div> 
</body> 
</html>" 
; 

이 출력됩니다 :

여기 내 PHP 코드입니다. 나는 또한 wordpress를 사용하여 나의 위치를 ​​달리고있다. 왜 이런 일이 벌어지고 있는지 잘 모르겠 으면 알려주세요. 나는 포럼을 통해 일주일 넘게 조사 해왔고 해결책을 찾는 데 운이 없었습니다.

------ 나는 내가 JSON 파일로 내용을 선언 내 PHP 코드의 헤더에 실수를 깨달았 -------

편집 할 수 있습니다. 이것은 위의 질문과 관련이없는 내 실수 였기 때문에이 질문을 삭제할 것입니다. 답장을 보내 주셔서 감사합니다. 내가 없으면이 바보 같은 실수를 저 지르지 않았을 것입니다.

--------- 편집 ---------- 수정 : 나는 다른 사람이 문제가있는 단지 넣다, 대신 나에게 도움이 사람이 최대 투표 사람들에게 갈거야 이것과 비슷합니다. 나는 현재 선거권에 대한 명성을 얻지 못했지만 최대한 빨리하겠다. 다시 감사합니다.

+3

"명확한"의미는 무엇입니까? 일반적으로 "암호화하지 않음"을 의미하지만,이 맥락에서는 의미가 없습니다. 페이지를 렌더링하는 대신 브라우저에 소스 코드가 표시됩니까? – Quentin

+0

프로덕션 사이트 인 경우 오타를 분류하는 것을 잊지 마십시오. – Mouser

+1

다른 곳의 PHP 파일을 포함하고있는 것처럼 보입니다. 여기에 전체 코드를 보여 주시겠습니까? 어떤 프레임 워크를 사용하고 있습니까? 워드 프레스? – h00ligan

답변

0

나는이 선언 내 PHP 코드의 헤더에 실수를 깨달았 공동 json 파일로 ntent. 이것이 내 질문과 관련이없는 내 실수 였기 때문에 나는이 게시물을 대답으로 받아들이고 나를 도운 사람들을지지 할 것입니다. 답장을 보내 주셔서 감사합니다. 내가 없으면이 바보 같은 실수를 저 지르지 않았을 것입니다.

+0

예를 들어 게시 한 후에이를 생각했습니다. 도와 줘서 고마워! –

0

기본 콘텐츠가 HTML 인 사이트 (예 : html 태그 등)에 콘텐츠를 표시하는 것으로 보입니다. 출력을 보면 2 html, 2 body 및 2 head 태그가 표시되며 이는 , 한 사이트 당으로 표시 될 수 있습니다. 스크립트가 스크립트 출력을 <pre> 태그에 에코합니다.

이 에코를 시도하고 원하는 출력에 이르게하는지 :

echo " 
<body style='background-color:#f3f3f3; margin:0;'> 
<div style='background-color:#0a5a92; padding: 10px;color:#f3f3f3; margin:0px;'> 
<h2>Thank You for Signing up!</h2> 
</div> 
<div style='padding: 0px 10px 0px 10px;'> 
<p> If you did not subscribe to XXXX, please email <a href='mailto:[email protected]'>[email protected]</a> to unsubcribe.</p> 
<br/> 
</div>"; 
+0

나는 이것을 시도했지만 행운이 없었습니다. 출력은 여전히 ​​

 ".."
쌍 –

0

이미 기본적으로 워드 프레스에서 열린 DB 연결을 가지고있다. 아래 예제를 사용하여 .... 동일한 페이지에서 제출을 처리하고 정보를 다시 가져 오는 다른 페이지로 리디렉션합니다 (새로 고침 버튼을 누르면 중요합니다). 이렇게하면 pdo 함수 대신 다음을 사용할 수 있습니다.

if($_POST): 

    global $wpdb; 
    $data[]=$_POST['value']; 
    $wpdb->insert('wp_custom', $data); 

    if($wpdb->insert_id): 
     $url= get_site_url().'/rest of the url'.'id='.$wpdb->insert_id; 
     wp_redirect($url); 
     exit(); 
    endif; 
endif; 

get_header(); // will apply html and title tags.....check your theme for the the correct div/section to start html code with. 
?> 
<form action="" ></form> 

리디렉션 페이지 :

if($_GET['id']): 
    $info = $wpdb->get_row("SELECT * FROM $wpdb->custom WHERE id = $_GET['id']"); 
endif; 

?> 
<section class=""></section> 

는 또한 보안 볼 필요가 - santize_text_field()를 찾아 http://codex.wordpress.org/Class_Reference/wpdb

+0

ps로 렌더링됩니다. html/title 태그는 WordPress의 헤더에 추가됩니다. 다시 입력하면 안됩니다. – David

+0

이 방법을 통해 배열 변수를 계속 사용할 수 있습니까? 내 진술을 매개 변수화하는 아이디어를 좋아합니다. –

+0

네, 그렇지만 이제는 $ info 객체에 포함되어'$ info-> columnname'처럼 가져 오거나 제출을위한 $ _POST 값을 의미합니까? 예를 들어'$ data [] = $ _POST [ 'value2']' – David

관련 문제