我是PHP的初学者并尝试编写代码,它确实形成了验证。 只是测试出来并不奇怪。我刚刚编写了一个测试Age输入文本的函数,无论它是否为数字。如果不是,它会在数组中存储错误,然后在另一页中显示该错误。我在视频教程中看到了这种方法,但是我自己也做不到。当我尝试调用该错误(不是Age中的数值)时,它总是在我的add.php页面中显示这个错误:
注意:未定义的变量:第37行/home/rafael/www/RofaCorp/add/add.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>
答案 0 :(得分:3)
全局变量仅在脚本处理时定义,只要您header("Location: ../add.php");
加载新页面并且所有变量都丢失。这就是错误消息告诉您的内容,$errors
中没有变量add.php
。
如果您希望错误消息在不同页面加载之间保持不变,session variable是一个不错的选择(当然还有其他类似数据库等)。只需在add.php
中再次启动会话,即可访问存储在会话中的变量。
答案 1 :(得分:1)
如果它显示在另一个页面中,请使用会话。 将允许您从其他页面检索变量。
您可以使用这个简单的tut http://www.tizag.com/phpT/phpsessions.php