当 Echoing html in Php 时,输出以明文显示
When Echoing html in Php, output is displayed in the clear
我在尝试在用户提交表单后回显 html 页面时遇到问题。按下提交按钮后,用户将被重定向到包含下面 php 代码的 email.php 页面。然而回显 returns html 内容清晰且格式不正确。
这是我的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:XXXX@XXXX.com'>XXXX@XXXX.com</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:XXXX@XXXX.com'>XXXX@XXXX.com</a> to unsubcribe.</p>
<br/>
</div>
</body>
</html>
</pre>
</body>
</html>
我在 php 方面不是最好的,而且我 运行 的知识非常有限。我也 运行 我的网站使用 wordpress。如果您知道为什么会这样,请告诉我。我已经在论坛中搜索了一个多星期,但没有找到解决方案。
------编辑------
我意识到我在将内容声明为 json 文件的 php 代码的 headers 中犯了一个错误。因为这是我的一个错误,与上面的问题无关,所以我将删除这个问题。感谢您发布您的答案,因为没有它们我就不会看到这个愚蠢的错误。
----------编辑--------
更正:我将转向 up-vote 那些帮助过我的人,以防其他人遇到与此类似的问题。我目前没有 up-vote 的声誉,但我会尽快获得。再次感谢。
您似乎将您的内容回显到一个已经具有基本 HTML
框架(打开 html
标签等)的站点。如果查看输出,可以看到有 2 个 html
、2 个 body
和 2 个 head
标签,它们只能出现 一次每个网站。我猜你的脚本将你的脚本输出回显到 <pre>
标签中。
试试这个 echo,看看它是否会导致你想要的输出:
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:XXXX@XXXX.com'>XXXX@XXXX.com</a> to unsubcribe.</p>
<br/>
</div>";
默认情况下,您已经在 wordpress 中打开了一个数据库连接。使用下面的示例....在同一页面上处理提交并重定向到另一个页面再次拉取信息(如果他们按下刷新按钮,这将很重要)因此您可以使用:[=13 而不是 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
我意识到我在将内容声明为 json 文件的 php 代码的 headers 中犯了一个错误。因为这是我的一个错误,与问题无关我将接受这个post作为答案和up-vote那些帮助过我的人。感谢您 post 的回答,因为没有他们我就不会看到这个愚蠢的错误。
我在尝试在用户提交表单后回显 html 页面时遇到问题。按下提交按钮后,用户将被重定向到包含下面 php 代码的 email.php 页面。然而回显 returns html 内容清晰且格式不正确。
这是我的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:XXXX@XXXX.com'>XXXX@XXXX.com</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:XXXX@XXXX.com'>XXXX@XXXX.com</a> to unsubcribe.</p>
<br/>
</div>
</body>
</html>
</pre>
</body>
</html>
我在 php 方面不是最好的,而且我 运行 的知识非常有限。我也 运行 我的网站使用 wordpress。如果您知道为什么会这样,请告诉我。我已经在论坛中搜索了一个多星期,但没有找到解决方案。
------编辑------
我意识到我在将内容声明为 json 文件的 php 代码的 headers 中犯了一个错误。因为这是我的一个错误,与上面的问题无关,所以我将删除这个问题。感谢您发布您的答案,因为没有它们我就不会看到这个愚蠢的错误。
----------编辑-------- 更正:我将转向 up-vote 那些帮助过我的人,以防其他人遇到与此类似的问题。我目前没有 up-vote 的声誉,但我会尽快获得。再次感谢。
您似乎将您的内容回显到一个已经具有基本 HTML
框架(打开 html
标签等)的站点。如果查看输出,可以看到有 2 个 html
、2 个 body
和 2 个 head
标签,它们只能出现 一次每个网站。我猜你的脚本将你的脚本输出回显到 <pre>
标签中。
试试这个 echo,看看它是否会导致你想要的输出:
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:XXXX@XXXX.com'>XXXX@XXXX.com</a> to unsubcribe.</p>
<br/>
</div>";
默认情况下,您已经在 wordpress 中打开了一个数据库连接。使用下面的示例....在同一页面上处理提交并重定向到另一个页面再次拉取信息(如果他们按下刷新按钮,这将很重要)因此您可以使用:[=13 而不是 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
我意识到我在将内容声明为 json 文件的 php 代码的 headers 中犯了一个错误。因为这是我的一个错误,与问题无关我将接受这个post作为答案和up-vote那些帮助过我的人。感谢您 post 的回答,因为没有他们我就不会看到这个愚蠢的错误。