如何将数据存储在登录日期时间表中?

14 浏览
0 Comments

如何将数据存储在登录日期时间表中?

我正在试图重新学习一些PHP基础知识,以制作一个简单的登录脚本,但是我遇到了一个之前从未遇到过的错误(我在一年多前制作了相同的脚本,从未出现过这个错误)。我尽量简化代码来测试哪个地方有问题,以下是问题所在:


当我向脚本发送一个变量时,这段代码可以正常工作,但是当没有提供变量时,它会报错。理论上来说,这是可以接受的,因为如果没有提供用户名/密码,则会出现错误。在将代码发送到脚本之前,我将检查确保这一点,但是我担心空字符串可能会泄漏并输出一些未知的错误。以下是我收到的错误信息:

( ! ) Notice: Undefined index: username in C:\wamp\www\verify_login.php on line 2
Call Stack
    Time    Memory  Function    Location
1   0.0003  668576  {main}( )   ..\verify_login.php:0

未提供用户名

正如您所看到的,代码确认没有提供变量,但是它会报错,我猜这意味着在预期的位置没有找到变量。请有人给我解释一下这个问题吗?

0
0 Comments

问题原因:用户想要在登录日期时间表中存储数据,但不知道如何实现。

解决方法:可以使用@$_POST['field']代替isset(),这样可以更简洁地获取数据并避免打印错误信息。当字段未设置时,页面上不会显示任何错误。

0
0 Comments

问题的原因是用户想要了解如何将数据存储在登录日期时间表中。解决方法是使用适当的验证方法来确保接收到的数据是符合预期的。可以使用正则表达式、Zend Framework或Symfony的实现,或者使用内置的filter扩展功能。在处理用户输入时,永远不要信任用户的输入,要进行智能处理,并确保接收到的数据确实是符合预期的类型。可以使用filter_var函数进行数据的过滤和验证。另外,也可以使用array_key_exists函数来验证用户输入。不建议使用mysql_real_escape函数,而是应该学习使用预处理语句和PDO来处理数据库操作。

0
0 Comments

如何在登录日期时间表中存储数据?

在PHP中,一个从未设置过的变量或数组元素与其值为null的变量不同;尝试访问这样一个未设置的值会导致运行时错误。这就是你遇到的问题:数组$_POST在键"username"处没有任何元素,因此解释器在到达空值测试之前就终止了程序。

幸运的是,你可以在不实际尝试访问变量或数组元素的情况下测试其是否存在;这就是特殊运算符isset的作用:

if (isset($_POST["username"]))
{
  $user = $_POST["username"];
  echo $user;
  echo " is your username";
} 
else 
{
  $user = null;
  echo "no username supplied";
}

这看起来会以与你的代码完全相同的方式失败,因为PHP尝试获取$_POST["username"]的值作为isset()函数的参数。然而,isset()实际上并不是一个函数,而是在评估阶段之前被识别出的特殊语法,因此PHP解释器在实际尝试检索值之前就会检查其是否存在。

值得一提的是,在运行时错误方面,缺少数组元素被视为较小的错误(分配了E_NOTICE级别)。如果你将error_reporting级别更改为忽略通知,你的原始代码实际上可以按原样工作,尝试的数组访问会返回null。但这被认为是一个不良实践,尤其是对于生产代码而言。

附带说明:PHP支持字符串插值,所以在if块中的echo语句可以合并为一个:

echo "$user is your username";

谢谢。你对我遇到这个错误的原因以及如何解决它给出了非常全面但简单的答案。我不仅仅想要一个“如何修复/摆脱这个错误”的答案,我还想理解它,而你为我做到了,谢谢。

你的$_POST["username"]变量未设置。

0