这个通知指的是什么

1 php

注意:未定义的索引:第12行的C:\ wamp\www\espn.com\registration.php中的名称

注意:未定义的索引:第13行的C:\ wamp\www\espn.com\registration.php中的用户名

注意:第14行的C:\ wamp\www\espn.com\registration.php中的未定义索引:密码很抱歉,您已经指定了您指定的用户名.请选择另一个.

编码

<html>
<body>
<?php
$dbhost = "localhost";
$dbname = "users";
$dbuser = "root";
$dbpass = "*******";

mysql_connect ($dbhost,$dbuser,$dbpass)or die("Could not connect: ".mysql_error());
mysql_select_db($dbname) or die(mysql_error());

$name = $_POST['name'];
$username = $_POST['username'];
$password = md5($_POST['password']);

$checkuser = mysql_query("SELECT username FROM users WHERE username='$username'"); 

$username_exist = mysql_num_rows($checkuser);

if($username_exist > 1){
    echo "I'm sorry but the username you specified has already been taken.  Please pick another one.";
    unset($username);
    include 'registration.html';
    exit();
}

$query = "INSERT INTO users (name,username, password)
VALUES('$name','$username', '$password')";
mysql_query($query) or die(mysql_error());
mysql_close();

echo "You have successfully registered";
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Vin*_*ard 7

这意味着$ _POST ['name'],$ _POST ['username']和$ _POST ['password']不存在.当您访问registration.php(或字段名称错误)时,您的表单很可能无法提交.

在PHP中,您必须确保在使用之前设置要使用的每个字段.您可以使用!empty或isset函数.

此外,您的脚本容易受到SQL注入攻击,请查看mysql_real_escape_string函数.你的条件是错误的:如果你想知道,如果用户名已经存在,你应该检查它是否大于0,而不是1也可以使用,而不是选择一排COUNT(*)查询.