4 回答
在从中提取值之前$_POST
,您应该检查它们是否存在。您可以为此使用该isset
功能(http://php.net/manual/en/function.isset.php)
您收到错误是因为您试图读取尚未设置的帖子变量,它们仅在表单提交时设置。将您的 php 代码包装在底部
if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... }
此外,您的代码可以进行 SQL 注入。在 SQL 查询中使用它们之前,至少mysql_real_escape_string
在 post vars 上使用它们。mysql_real_escape_string
对于生产站点来说还不够好,但应该在课堂上给你加分。
对于初学者,
mysql_connect() 不应该有 $ 伴随它;它不是一个变量,它是一个预定义的函数。删除 $ 以正确连接到数据库。
为什么在这个文档的顶部有一个 XML 标记?这是 HTML/PHP——一个 HTML 文档类型就足够了。
从第 215 行开始,更新:
if (isset($_POST)) {
$Name = $_POST['Name'];
$Surname = $_POST['Surname'];
$Username = $_POST['Username'];
$Email = $_POST['Email'];
$C_Email = $_POST['C_Email'];
$Password = $_POST['password'];
$C_Password = $_POST['c_password'];
$SecQ = $_POST['SecQ'];
$SecA = $_POST['SecA'];
}
POST 变量来自您的表单,您必须检查它们是否存在,否则 PHP 会给您一个 NOTICE 错误。您可以通过放置 error_reporting(0); 来禁用这些通知;在文档的顶部。出于开发目的,最好保持这些可见性。
您应该仅在表单已提交的情况下与数据库进行交互(插入、检查)。如果您不这样做,PHP 将运行所有这些操作而无需用户输入任何内容。最好使用 IF 语句,如下所示:
if (isset($_POST['submit']) {
// blah blah
// check if user exists, check if fields are blank
// insert the user if all of this stuff checks out..
} else {
// just display the form
}
很棒的表单教程: http: //php.about.com/od/learnphp/ss/php_forms.htm
您如何加载此页面?是否在 POST 上加载任何内容?如果不是,那么 $name = $_POST['Name']; 分配在 POST 上没有任何“名称”。