3
4

4 回答 4

5

在从中提取值之前$_POST,您应该检查它们是否存在。您可以为此使用该isset功能(http://php.net/manual/en/function.isset.php)

于 2012-12-04T16:36:06.000 回答
2

您收到错误是因为您试图读取尚未设置的帖子变量,它们仅在表单提交时设置。将您的 php 代码包装在底部

if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... }

此外,您的代码可以进行 SQL 注入。在 SQL 查询中使用它们之前,至少mysql_real_escape_string在 post vars 上使用它们。mysql_real_escape_string对于生产站点来说还不够好,但应该在课堂上给你加分。

于 2012-12-04T16:45:26.587 回答
0

对于初学者,

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

于 2012-12-04T16:42:29.833 回答
0

您如何加载此页面?是否在 POST 上加载任何内容?如果不是,那么 $name = $_POST['Name']; 分配在 POST 上没有任何“名称”。

于 2012-12-04T16:36:18.007 回答