PHP变量范围问题

时间:2011-04-21 21:18:07

标签: php variables scope declaration

我是PHP的初学者并尝试编写代码,它确实形成了验证。 只是测试出来并不奇怪。我刚刚编写了一个测试Age输入文本的函数,无论它是否为数字。如果不是,它会在数组中存储错误,然后在另一页中显示该错误。我在视频教程中看到了这种方法,但是我自己也做不到。当我尝试调用该错误(不是Age中的数值)时,它总是在我的add.php页面中显示这个错误:

  

注意:未定义的变量:第37行/home/rafael/www/RofaCorp/add/add.php中的错误

如何声明可以通过整个项目访问的变量?

这是我的代码:

  • form_validation.php
<?php

function validate_number($number) {
   global $errors;
   if (is_numeric($number)) {
       return $number;
   }else {
       $errors[] = "Value must be number";        
   }

   if (!empty ($errors))
   {
       header("Location: ../add.php");
       exit;
   }
}

?>
  • create_ind.php

    <?php require_once '../../include/connection.php'; ?>
    <?php require_once '../../include/form_validation.php'; ?>
    <?php require_once '../../include/functions_database_infoget.php'; ?>
    
    <?php
    $family_id = get_family_info_fam("id");
    $ind_name = mysql_real_escape_string($_POST["ind_name"]);
    $age = validate_number(mysql_real_escape_string($_POST["age"]));
    $gender = $_POST["gender"];
    $notes = mysql_real_escape_string($_POST["notes"]);
    
    
        $add_query = "INSERT INTO individual
                    ( g_id , ind_name , age , gender , notes) 
                    Values ( {$family_id} , '{$ind_name}' , {$age} , '{$gender}' ,     '{$notes}')";
            if(mysql_query($add_query , $connection)){
            header("Location: ../../main.php");
            exit;
        } else {echo "ERROR " . mysql_error() ; } 
    
    
    
    ?>
    
    <?php mysql_close($connection); ?>
    
  • add.php(我的代码的一部分)

    <!--Main Content-->
    <section id="mainContent">
        <header>
            <h3>Select where to add new Family/Individual.</h3>
        </header>
        <article>
            <?php 
                if (count($errors) > 0) {
                    for($i=0 ; $i < count($errors) ; $i++){
                        echo "{$errors[$i]}" . "<br/>";
                    }
                }
            ?>
        </article>
    </section>
    

2 个答案:

答案 0 :(得分:3)

全局变量仅在脚本处理时定义,只要您header("Location: ../add.php");加载新页面并且所有变量都丢失。这就是错误消息告诉您的内容,$errors中没有变量add.php

如果您希望错误消息在不同页面加载之间保持不变,session variable是一个不错的选择(当然还有其他类似数据库等)。只需在add.php中再次启动会话,即可访问存储在会话中的变量。

答案 1 :(得分:1)

如果它显示在另一个页面中,请使用会话。 将允许您从其他页面检索变量。

您可以使用这个简单的tut http://www.tizag.com/phpT/phpsessions.php