错误!如果发送空帖,则获得未定义的变量

时间:2012-11-02 14:47:55

标签: php

如果在我的注册表单中发送空帖,我收到错误消息

注意:未定义的索引:第34行/opt/lampp/htdocs/user/register.php中的术语

第34行中的

我有这个

$terms = trim($_POST["terms"]);

并以我有这个

的形式
<p>
<input type="checkbox" name="terms" id="terms"> I have read and accept the conditions of use
</p>

这是所有验证表格

if(!empty($_POST))
{
        $errors       = array();
        $terms        = trim($_POST["terms"]);
        $captcha      = md5($_POST["captcha"]);
    $name         = trim($_POST["name"]);

    if($terms == "")
    {
        $errors[] = lang("ACCOUNT_SPECIFY_NAME");
    }

    //End data validation
    if(count($errors) == 0)
    {   
            //Construct a user object
            $user = new User($username,$password,$email,$name,$lastname);

            //Checking this flag tells us whether there were any errors such as possible data duplication occured
            if(!$user->status)
            {
                if($user->username_taken) $errors[] = lang("ACCOUNT_USERNAME_IN_USE",array($username));
                if($user->email_taken)    $errors[] = lang("ACCOUNT_EMAIL_IN_USE",array($email));   
                if($user->email_blocked)  $errors[] = lang("ACCOUNT_EMAIL_BLOCKED");        
            }
            else
            {
                //Attempt to add the user to the database, carry out finishing  tasks like emailing the user (if required)
                if(!$user->userCakeAddUser())
                {
                    if($user->mail_failure) $errors[] = lang("MAIL_ERROR");
                    if($user->sql_failure)  $errors[] = lang("SQL_ERROR");
                }
            }
    }
}

&GT;

为什么我收到此警报消息?

感谢

2 个答案:

答案 0 :(得分:0)

尝试替换它:

if(!empty($_POST))

用这个:

if(!empty($_POST["terms"]))

您需要确保数组 $ _ POST 的值为条款

修改

试试这个:

$terms        = empty($_POST["terms"]) ? null : trim($_POST["terms"]);
$captcha      = empty($_POST["captcha"]) ? null : md5($_POST["captcha"]);
$name         = empty($_POST["name"]) ? null : trim($_POST["name"]);

而不是:

$terms        = trim($_POST["terms"]);
$captcha      = md5($_POST["captcha"]);
$name         = trim($_POST["name"]);

答案 1 :(得分:0)

这不是错误,但如果通知和通知不重要,可以忽略它。

if(isset($_POST['terms']))$terms = trim($_POST["terms"]);
PHP中的

isset()函数确定变量是否已设置且不是NULL。它返回一个布尔值,也就是说,如果设置了变量,它将返回true,如果变量值为null,则返回false。

您也可以使用

关闭通知
error_reporting(E_ALL ^ E_NOTICE);

在您的脚本开头..