确认电子邮件时提供的空值

时间:2012-10-01 作者:Matt

Fixed the problem by adding if ( \'email\' == $type || \'email2\' == $type ) { to the top of the snippet below and changing the first elseif to a if statment

我已经在我的WordPress主页上创建了一个WordPress注册表单,但我在验证电子邮件地址匹配方面有点问题。

这是我用来做这件事的代码。

elseif ( !is_email($userdata[\'user_email\'], true) )
$error = __(\'You must enter a valid email address.\', \'frontendprofile\');
elseif ( email_exists($userdata[\'user_email\']) )
$error = __(\'Sorry, that email address is already used!\',     \'frontendprofile\');
elseif ( !empty($_POST[\'email\'] ) && !empty( $_POST[\'email2\'] ) ) {
    if ( $_POST[\'email\'] == $_POST[\'email2\'] )
        wp_update_user( array( \'ID\' => $current_user->id,      \'user_email\' =>     esc_attr( $_POST[\'email\'] ) ) );
    else
        $error = __(\'The emails you entered do not match.  Your    email was not updated.\', \'frontendprofile\');
}
但当我点击注册按钮时,我一直会遇到这个错误

Warning: get_object_vars() expects parameter 1 to be object, null given in 
我认为验证过程没有完全发挥作用,因此它没有接收电子邮件地址,而是在提交表单中显示空值,但我看不到这是在哪里发生的。

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

首先,这不是一个错误,而是一个警告。如果它导致页面崩溃而不是逻辑错误,那是因为您正在将错误日志打印到屏幕上,而不是像您应该做的那样将其记录到日志文件中。关闭显示错误可以解决此问题。

这仍然给你留下了警告,这些警告仍然很糟糕。注意,在您的代码中,您使用了POST变量,并对其进行了转义,但没有检查值是什么。E、 g.表单字段可能为空,或者\'\'/null 他们仍然会通过。

我建议你颠倒支票的顺序,你需要先检查电子邮件是否已设置,然后再检查是否为空,then, 一旦你确认确实有东西要核对,你会检查它是电子邮件的正确格式吗。现在你正以相反的顺序做这件事。

编辑:只是为了澄清您的代码应该做什么:

if email is not empty then
     if email is not valid
          error = \'...\'
     else
         if email1 == email 2 then
             wp_update_user
         else
             error = \'...\'
在处理电子邮件之前,请检查电子邮件是否为空。

你实际上在做的是:

if email is not valid then <- oh dear, we haven\'t checked if email is set/empty, error/warning
    error = \'...\'
else if email is not empty then < -- too late, we\'ve already used the email value!
    if email1 == email2 then
        wp_update_user

结束

相关推荐

分类-{axnonomy}.php不起作用

我刚刚为wordpress网站创建了一个自定义帖子类型(公文包)。我还添加了一个名为(portfoliocategory)的自定义分类法。我已经为我的自定义帖子类型(归档公文包)创建了一个归档页面,该页面工作正常,但我需要自定义分类法模板的帮助,我已经创建了分类法portfoliocategory。php,但它显示的是默认的归档页面,而不是分类页面模板!!