php的filter_var()在.html页面使用导致代码异常输出的情况,请问是什么原因??
具体如下:当文件名为header1.php时,代码如下:
<?php
//通知浏览器要发送文本的类型和字符集形式
header('Content-Type: text/html; charset = UTF-8');
//开始一个会话
session_start(); //设置会话值
$_SESSION['user_id'] = 1;
$_SESSION['user_tz'] = 'America/New_York'; //连接数据库
require_once('../mysqli_connect.php'); //判断get方式传递的$lid变量是否存在且为不小于1的整数
echo filter_var($_GET['lid'], FILTER_VALIDATE_INT, array('min_range'=>1));
/*if(isset($_GET['lid']) &&
filter_var($_GET['lid'], FILTER_VALIDATE_INT, array('min_range'=> 1))
)
{
//设置会话值
$_SESSION['lid'] = $_GET['lid'];
}else{
$_SESSION['lid'] = 1; //默认值
}
*/
?>
运行后,浏览器输出如下:即页面上为空。当将上述代码文件名修改为header1.html后再运行,结果如下:
若在header1.html中删除与filter_var()相关的代码,具体如下:
<?php
//通知浏览器要发送文本的类型和字符集形式
header('Content-Type: text/html; charset = UTF-8');
//开始一个会话
session_start(); //设置会话值
$_SESSION['user_id'] = 1;
$_SESSION['user_tz'] = 'America/New_York'; //连接数据库
require_once('../mysqli_connect.php'); //判断get方式传递的$lid变量是否存在且为不小于1的整数
?>
运行后:
注:上述代码只是为了测试filter_var()在.html中的使用情况截取出来的。请问是我不正确的使用造成的还是其他原因呢??期待大家的指点!!
具体如下:当文件名为header1.php时,代码如下:
<?php
//通知浏览器要发送文本的类型和字符集形式
header('Content-Type: text/html; charset = UTF-8');
//开始一个会话
session_start(); //设置会话值
$_SESSION['user_id'] = 1;
$_SESSION['user_tz'] = 'America/New_York'; //连接数据库
require_once('../mysqli_connect.php'); //判断get方式传递的$lid变量是否存在且为不小于1的整数
echo filter_var($_GET['lid'], FILTER_VALIDATE_INT, array('min_range'=>1));
/*if(isset($_GET['lid']) &&
filter_var($_GET['lid'], FILTER_VALIDATE_INT, array('min_range'=> 1))
)
{
//设置会话值
$_SESSION['lid'] = $_GET['lid'];
}else{
$_SESSION['lid'] = 1; //默认值
}
*/
?>
运行后,浏览器输出如下:即页面上为空。当将上述代码文件名修改为header1.html后再运行,结果如下:
若在header1.html中删除与filter_var()相关的代码,具体如下:
<?php
//通知浏览器要发送文本的类型和字符集形式
header('Content-Type: text/html; charset = UTF-8');
//开始一个会话
session_start(); //设置会话值
$_SESSION['user_id'] = 1;
$_SESSION['user_tz'] = 'America/New_York'; //连接数据库
require_once('../mysqli_connect.php'); //判断get方式传递的$lid变量是否存在且为不小于1的整数
?>
运行后:
注:上述代码只是为了测试filter_var()在.html中的使用情况截取出来的。请问是我不正确的使用造成的还是其他原因呢??期待大家的指点!!
所以出现空页面是很正常的
echo filter_var($_GET['lid'], FILTER_VALIDATE_INT, array('min_range'=>1));
只在 $_GET['lid'] 为数值,且值大于等于 1 时有输出
当 $_GET['lid'] 的值小于 1(如果 $_GET['lid'] 是字符串,就是 0)时,就会输出空白(实际是 false)
加上除此以外没有其他输出,所以就是空白页了
再次谢谢你的回答!我知道正确的输出就应该是空白页面,这个我已经懂了。现在主要想弄清楚的是当文件后缀为.html时,为什么浏览器会有输出(按道理应该也是空白)?是因为filter_var()不能用在html文件中还是有别的原因??主要是想求证这个问题,谢谢!!
按照你的指导:
第一步,执行header1.html,其代码如下:
<?php # Script 17.1 - header1.html// 指示页面编码:
header ('Content-Type: text/html; charset=UTF-8');
// 启动会话:
session_start();var_dump(isset($_GET['lid']));
var_dump(filter_var($_GET['lid'], FILTER_VALIDATE_INT));
if (isset($_GET['lid']) && filter_var($_GET['lid'], FILTER_VALIDATE_INT)) {
$_SESSION['lid'] = $_GET['lid'];
} elseif (!isset($_SESSION['lid'])) {
$_SESSION['lid'] = 1; //
}?>
代码运行后,页面为空白:查看网页源代码,如下:
第二部,在filter_var()中增加了, array('min_range' => 1),header1.html代码变为如下:
<?php # Script 17.1 - header1.html// 指示页面编码:
header ('Content-Type: text/html; charset=UTF-8');
// 启动会话:
session_start();var_dump(isset($_GET['lid']));
var_dump(filter_var($_GET['lid'], FILTER_VALIDATE_INT));
if (isset($_GET['lid']) && filter_var($_GET['lid'], FILTER_VALIDATE_INT, array('min_range' => 1))) {
$_SESSION['lid'] = $_GET['lid'];
} elseif (!isset($_SESSION['lid'])) {
$_SESSION['lid'] = 1; //
}?>
运行如下:网页源代码:
加入了array('min_range' => 1)感觉filter_var()函数就无法正常执行了。是因为这个参数的影响还是我理解有误或是代码输出不规范???我是在学习《PHP与MySQL动态网站开发》(Larry Ullman)第17章的实例时出现了这个问题。。再次谢谢你的指教!!!
需要改为*.php再运行才有结果输出。