【问题标题】:what is this notice referring to这个通知是指什么
【发布时间】:2010-11-01 09:31:56
【问题描述】:

注意:未定义索引:第 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>

【问题讨论】:

标签: php


【解决方案1】:

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

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

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

【讨论】:

  • 我应该在哪里检查/添加必要的字段?
【解决方案2】:

基本上不存在全局变量 $_POST['name']、$_POST['username'] 和 $_POST['password']。我建议您检查表单的每个输入是否作为可以声明如下的名称提交:

<input name="username"/>

这样您就可以通过 $_POST['username'] 访问该输入的值。 之后脚本输出的字符串(对不起,您指定的用户名已被使用。请选择另一个。)回显,因为您的 sql 查询如下所示:

SELECT username FROM users WHERE username=''

这将返回具有空 ('') 用户名​​的每个用户。 同样如前所述,请尽快修复脚本。

【讨论】:

  • 不,一点也不! SELECT username FROM users WHERE username='' 不是 SELECT username FROM users !第一个返回用户名是空字符串的行(NULL '' !),而第二个返回每一行。
  • 是的,对不起。我在想逻辑:没有人有用户名为空的用户。所以我修正了我的答案。
猜你喜欢
  • 2012-05-18
  • 2017-05-04
  • 2013-01-16
  • 2015-01-16
  • 2010-11-05
  • 1970-01-01
  • 2011-05-26
  • 2021-01-05
  • 1970-01-01
相关资源
最近更新 更多