可变不经由PHP函数更新

问题描述 投票:0回答:2

我已经按照上呼应PHP变量来表示不正确输入字段非常信的WC3教程。我不明白为什么这是行不通的。

我有一些奇怪的作用域问题:

tools.php:

if(!isset($_POST)){
    $name_error = "";
}
if(isset($_POST) && !empty($_POST)){
    $_SESSION['current'] = $_POST;
    validateForm();
}

index.php文件:

<span class="error"><?php echo $name_error; ?></span>

tools.php:

function validateForm() {
    $cust = $_SESSION['current']['cust'];
    $usermovie = $_SESSION['current']['movie'];
    $userseats = $_SESSION['current']['seats'];
    if(!preg_match('/[a-zA-Z ]+/', $cust['name']) || empty($cust['name'])){
        $name_error = "a-z only.";
        echo $name_error;
    } else{
        $_SESSION['bookings'][] = $_SESSION['current'];
        echo 'pass';
        $name_error = "";
    }

}

我知道这是打的功能和更新$ NAME_ERROR的价值,因为它从回声功能的正确值。同样,如果我手动设置的$ NAME_ERROR值的字符串时,它正确地显示在误差范围。的$ NAME_ERROR中跨度值不更新,当我刚刚提交表单/运行功能正常不过。

php variables scope
2个回答
0
投票

不必返回任何值。返回这样的$name_error值:

if(!isset($_POST)){
    $name_error = "";
}
if(isset($_POST) && !empty($_POST)){
    $_SESSION['current'] = $_POST;
    $name_error = validateForm();
}

function validateForm() {
    $cust = $_SESSION['current']['cust'];
    $usermovie = $_SESSION['current']['movie'];
    $userseats = $_SESSION['current']['seats'];
    if(!preg_match('/[a-zA-Z ]+/', $cust['name']) || empty($cust['name'])){
        $name_error = "a-z only.";
    } else{
        $_SESSION['bookings'][] = $_SESSION['current'];
        echo 'pass';
        $name_error = "";
    }
    return $name_error;
}

0
投票

工作了,申报所需

global $name_error;

在函数的开始 - 谁能给我一个方法里面的错误,虽然跨越了返回的各个功能的结果呢?我显然不能只调用它们的存在。

© www.soinside.com 2019 - 2024. All rights reserved.