gpt4 book ai didi

php - “未声明 HTML 文档的字符编码”问题

转载 作者:太空狗 更新时间:2023-10-29 16:37:07 25 4
gpt4 key购买 nike

我制作了一个用户可以填写的表单,它会检查用户是否正确插入了电子邮件。

  • 如果返回 false:用户会看到一条错误消息。
  • 如果它返回 true:它会向用户显示一条确认消息,但它也会将数据INSERT 到数据库中。

因此,当我尝试在 PHP 文件中添加表单以便发出警报或在同一页面上向用户提供错误消息时,问题就出现了。我开始收到此错误:

The character encoding of the HTML document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the page must to be declared in the document or in the transfer protocol.

所以我试图通过恢复到旧版本来恢复它,我不得不剪切和粘贴几段代码,但没有太复杂。出于某种奇怪的原因,我仍然收到此错误。自然地,我在 Stackoverflow 上检查了关于这个问题的类似主题,但没有一个答案让我更进一步。例如在页面的头部添加meta信息,我还创建了一个PHP头部这样的:header('Content-type: text/html; charset=utf-8') ;之后我阅读了一些关于这个错误的文章,但没有一篇文章帮助我解决了这个问题。

这是我的代码示例。我在这个页面上收到错误:

 <?php    
include_once('credentials.php');
mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());
include_once('functions.php');

$apples = sanitize($_POST['Apple']);
$oranges = sanitize($_POST['Orange']);
$melons = sanitize($_POST['Melon']);
$pears = sanitize($_POST['Pear']);
$strawberries = sanitize($_POST['Strawberry']);
$grapes = sanitize($_POST['Grape']);
if($_POST['Grape'] == 'Yes')
{ $grapes = 1; }
else
{ $grapes = 0; }
$blueberries = sanitize($_POST['Blueberry']);

if (checkStrawberries($strawberries) == true) {
mysql_query(" INSERT INTO tablename (Name, Weight, Color, Ripeness, Age, Origin, Destination)
VALUES ('$apples', '$oranges', '$melons', '$Pears', '$strawberries', '$grapes', '$blueberries') ");

or die(mysql_error());

echo '<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
</head>
<title>Page</title>
<body>
True
<a href="../index.php">home</a>
</body>
</html>';
} else {
echo '<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
</head>
<title>Pagina</title>
<body>
False
<a href="../index.php">home</a>
</body>
</html>';
}
?>

我不得不重命名变量和类,因为它们与我工作的公司关系密切。

编辑:此错误是由 Firefox 中使用 Firebug 的控制台日志产生的。

编辑 2:更改了 var 和函数名称以避免混淆并说明此应用程序内的数据交换。

编辑 3:我试图弄清楚我的代码中究竟是什么导致了这个错误,因为我使用下面 Dobromir Velev 向我展示的测试用例测试了编码部分并且工作正常.我决定注释掉 IF ELSE 语句,但我没有收到错误。所以这似乎破坏了页面。

我暂时删除了 echo ,因为它没有为这个特定的挑战增加任何值(value)。

if (checkStrawberries($strawberries) == true) {    
mysql_query("INSERT INTO tablename (Name, Weight, Color, Ripeness, Age, Origin, Destination)
VALUES ('$apples', '$oranges', '$melons', '$Pears', '$strawberries', '$grapes', '$blueberries') ");
or die(mysql_error());
} else {
echo 'FALSE';
}

函数 checkStrawberries 是这样的:

function checkEmail($email) {
if (!preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)) {
return false;
}
return true;
}

sanitize 函数是这样的:

function sanitize($dirty){
$clean = htmlspecialchars($dirty);
$cleaner = mysql_real_escape_string($clean);
return $cleaner;
}

最佳答案

经过对 PHP 聊天的一些讨论,问题似乎来自额外的分号

来自:

mysql_query(); or die();

收件人:

mysql_query() or die();

关于php - “未声明 HTML 文档的字符编码”问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13864211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com