2015-01-18 2 views
0

У меня возникла проблема, когда я пытаюсь выполнить эхо-страницу html после того, как пользователь отправит форму. После нажатия кнопки отправки пользователь перенаправляет страницу email.php, содержащую код php ниже. Однако эхо возвращает html-содержимое в поле clear и не отформатировано правильно.Когда Echoing html в Php, вывод отображается в ящике

Вот мой PHP код:

<?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>" 
; 

Вот результат:

<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, и я бегу на очень ограниченные знания. Я также запускаю свой сайт с помощью Wordpress. Если у вас есть идея, почему это происходит, сообщите мне. Я уже более недели просматриваю форумы и не нашел удачи в поиске решения.

------ EDIT -------

я понял, что сделал ошибку в заголовках моего PHP кода, заявивших содержимое в виде файла в формате JSON. Поскольку это была моя ошибка, которая не имеет ничего общего с вышеизложенным вопросом, я собираюсь удалить этот вопрос. Спасибо, что опубликовали ваши ответы, потому что без них я бы не видел эту глупую ошибку.

--------- EDIT ---------- Исправление: Я буду вверх голосования тех, кто помог мне вместо этого, просто упаковывают кто-то другой вопрос аналогично этому. В настоящее время у меня нет репутации для голосования, но я буду, как только это произойдет. Еще раз спасибо.

+3

Что вы подразумеваете под «в ясном»? Обычно это означает «без шифрования», но это не имеет смысла в этом контексте. Показывает ли исходный код в браузере вместо отображения страницы? – Quentin

+0

Не забудьте разобрать опечатку в этом, если это производственный сайт. – Mouser

+1

Похоже, вы включаете файл PHP из другого места. Вы показываете полный код здесь? Вы используете некоторые рамки? WordPress? – h00ligan

ответ

0

я понял, что сделал ошибку в заголовках мой PHP код, который объявлен Колорадо ntent как json-файл. Поскольку это была моя ошибка, которая не имеет никакого отношения к вопросу, я собираюсь принять этот пост в качестве ответа и опросить тех, кто мне помог. Спасибо, что опубликовали ваши ответы, потому что без них я бы не видел эту глупую ошибку.

+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

У вас уже есть подключение к базе открытого в WordPress по умолчанию. Используйте ниже в качестве примера .... обрабатывайте отправку на той же странице и перенаправляйте на другую страницу, снова вынимая информацию (это будет важно, если они нажмут кнопку обновления). Вместо функции 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, например '$ data [] = $ _POST ['value2']' – David