我有一个打印用户ID列表报告的程序。该程序应该为上传的列表中的用户逐个打印报告。问题是当我运行打印过程并使用indexInList = 30打印报表时,我收到错误:
此网页有重定向循环
http://127.0.0.1/content/8520?print=1&bulkprinting=1&filename=/private/var/tmp/phpHRXEw8.moved&indexInList=30&nopeergroup=1&nolabpage=0&hideScreeningOnly=1&showOnlyScreening=0&hideHoldMailing=1的网页导致了太多的重定向。清除此站点的cookie或允许第三方cookie可以解决问题。如果没有,则可能是服务器配置问题,而不是计算机问题。
我尝试清理cookie但仍然遇到同样的错误。
我在这里附上了一些代码,希望有人可以帮助我:
$sessionData['first_name'] = $foundUser->first_name;
$sessionData['last_name'] = $foundUser->last_name;
// Overwrite $_REQUEST variable with parameters before including
// the hpa report
$_REQUEST = array(
'user_id' => $foundUser->id,
'bulkprinting' => true
);
if($nopeergroup) { $_REQUEST['nopeergroup'] = $nopeergroup; }
if($nolabpage) { $_REQUEST['nolabpage'] = $nolabpage; }
if($hideScreeningOnly) { $_REQUEST['hideScreeningOnly'] = $hideScreeningOnly; }
if($showOnlyScreening) { $_REQUEST['showOnlyScreening'] = $showOnlyScreening; }
if($hideHoldMailing) { $_REQUEST['hideHoldMailing'] = $hideHoldMailing; }
$includeValue = include __DIR__.'/../hpa/hpa.php';
$url = sprintf(
"/content/8520?print=1&bulkprinting=1&filename=%s&indexInList=%s" .
"&nopeergroup=%s&nolabpage=%s&hideScreeningOnly=%s" .
"&showOnlyScreening=%s&hideHoldMailing=%s",
$filename, $indexInList, (int)$nopeergroup, (int)$nolabpage,
(int)$hideScreeningOnly, (int)$showOnlyScreening, (int)$hideHoldMailing);
if($hradata[0] !== false) {
$sessionData['hra_id'] = $hradata[0]['id'];
}
if($screeningdata[0] !== false) {
$sessionData['screening_id'] = $screeningdata[0]['id'];
}
if($includeValue !== 1) {
// Redirect to URL
$sessionData['message'] = $messages_set[$includeValue];
$_SESSION['printing_set'][] = $sessionData;
redirect($url);
}
$sessionData['markAsMailed'] = true;
$_SESSION['printing_set'][] = $sessionData;
?>
<script type="text/javascript">
function waitPrint() {
window.print();
var t = setTimeout("timed()", 1000);
}
function timed() {
window.location.replace("<?php echo $url ?>");
}
if(window.attachEvent) {
window.attachEvent("onload", waitPrint);
} else if(window.addEventListener) {
window.addEventListener("load", waitPrint, false);
}
</script>
答案 0 :(得分:0)
听起来你有很多需要打印的文件!
您可以更改浏览器设置(我似乎记得您可以在Firefox中)以允许超过30个循环。
或者,您可以随时将代码限制为30个循环,然后等待进一步的用户交互继续进行下一个30循环。
第三个选项是始终在每个页面上创建一个包含一个报告的Word文档或PDF,然后保存文件并打印 - 稍微麻烦(在某种程度上)但至少你可以打印所有内容马上。
答案 1 :(得分:0)
为了将$includeValue
设置为任何内容,文件__DIR__.'/../hpa/hpa.php'
必须在其中包含return语句,如include
include
中所示,示例5.如果包含的文件返回值,则1
仅在调用时返回值。
如果您的脚本仍然产生无限循环,则所包含文件中的逻辑不正确,并且始终产生的值不是$includeValue = include __DIR__.'/../hpa/hpa.php';
if($includeValue !== 1) {
// Redirect
}
。
基本上,这是您的问题归结为的代码:
{{1}}
答案 2 :(得分:0)
当站点配置错误配置到重定向循环时,浏览器内置检查以帮助您,并且30必须是您正在使用的浏览器的限制。你故意构建了一个重定向循环,但浏览器并不知道。不是使用window.location.replace()
方法,而是自动提交的表单怎么样?这应该与浏览器不同,并允许循环按设计进行。
<script type="text/javascript">
function waitPrint() {
window.print();
var t = setTimeout("timed()", 1000);
}
function timed() {
window.reloadForm.submit();
}
if(window.attachEvent) {
window.attachEvent("onload", waitPrint);
} else if(window.addEventListener) {
window.addEventListener("load", waitPrint, false);
}
</script>
<form name="reloadForm" action="<?php echo $url ?>">
</form>