我做了一个表单,用户可以填写并检查用户是否正确插入电子邮件。
这是我的代码示例。 我在此页面上遇到错误:
该函数 sanitize 的作用如下:
- 如果返回false:用户将看到错误消息。
- 如果返回true:它将向用户显示确认消息,但还将在数据库中插入数据。
所以我试图通过恢复旧版本来修复它,我需要剪切和粘贴一些代码片段,但没有太复杂。 由于一些奇怪的原因,我仍然会收到此错误。 当然,我在Stackoverflow上检查了关于此问题的类似主题,但没有答案让我更进一步。 例如,在页面标头中添加HTML文档的字符编码未声明。 如果文档包含来自US-ASCII范围之外的字符,则文档将在某些浏览器配置中呈现为乱码。 页面的字符编码必须在文档或传输协议中声明。
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和function名称以避免混淆,并说明了应用程序内部数据的交换。
编辑3:我试图找出我的代码中到底是什么导致了这个错误,因为我使用Dobromir Velev提供给我的测试用例测试编码部分,并且结果完全正确。我决定注释掉IF ELSE语句,然后就没有错误了。因此,这似乎会破坏页面。
我暂时删除了echo,因为它对这个特定的挑战没有任何价值。
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;
}
function
?(function($_POST['1']);
)。这样做可能会破坏一些代码,因为function
是一个保留关键字。 - Jelmer