【发布时间】:2026-01-27 12:35:01
【问题描述】:
我必须在下面编写代码 - 已更新
php代码
if(empty($_POST['formEmail']))
{
$errorMessage .= "<li>You forgot to enter your email</li>";
}
$varEmail = $_POST['formEmail'];
if(empty($errorMessage))
{
$db = mysql_connect("servername","username","password");
if(!$db) die("Error connecting to MySQL database.");
mysql_select_db("tableName" ,$db);
$sql = "INSERT INTO emails(email) VALUES ('$varEmail')";
mysql_query($sql);
echo "Details added";
$_SESSION['status'] = 'success';
}
exit();
}
function PrepSQL($value)
{
// Stripslashes
if(get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// Quote
$value = "'" . mysql_real_escape_string($value) . "'";
return($value);
}
?>
表单代码
<?php
if(!empty($errorMessage))
{
echo("<p>There was an error with your form:</p>\n");
echo("<ul>" . $errorMessage . "</ul>\n");
}
?>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>
<label for='formEmail'>Sign up to be notified when we go live!</label><br/>
<input type="text" name="formEmail" maxlength="50" value="<?=$varEmail;?>" />
</p>
<input type="submit" name="formSubmit" value="Submit" />
</form>
我没有收到任何错误,据我所知语法看起来不错,但它没有将电子邮件信息放入数据库。有人知道发生了什么吗?作为旁注,我是所有 php 的新手。
【问题讨论】:
-
永远不要在查询中注入
$_*超级全局变量,使用mysql_real_escape_string()转义所有 $vars,无论它们来自您还是用户。此外,get_magic_quotes_gpc()已损坏,不应使用。 -
@Johan,我对 sql 数据库了解不多,所以你说的也可能是拉丁文。你能详细说明一下吗?
-
当然,阅读这个问题:*.com/questions/332365/… 以及为什么魔术引号被破坏:php.net/manual/en/security.magicquotes.disabling.php
标签: php mysql forms phpmyadmin database-connection