我需要在几秒钟内刷新页面,但我想刷新用户输入的时间值
此代码是正确的,但运行一次。只要用户页面输出我就想运行它。
我不知道怎么写戒指。
这是我的HTML代码
<form class="form-inline" method="POST">
<div class="form-group">
<label for="text">Refresh page by secondes</label>
<input type="text" class="form-control" name="refresh-time">
</div>
<button type="submit" class="btn btn-default"><i class="fa fa-pencil" ></i> Apply</button>
</form>
这是我的PHP代码
<?php
$pagename = 'لیست کلیه تماس ها';
require_once dirname(__FILE__) . '/header.php';
if(isset($_POST['btnreferesh']))
{
$p_call_loges->pages( '20' );
}
if(isset($_POST['refresh-time']))
{
header("Refresh:$time");
}
?>
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<h2 class="page-header">لیست گزارش تماس ها</h2>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-yellow">
<div class="panel-heading">
<div class="panel-title pull-right">
<i class="fa fa-file-text" aria-hidden="true"></i> نمایش اطلاعات ثبت شده
</div>
<form method="POST">
<button type="submit" name="btnreferesh" class="btn btn-default pull-left"><i class="fa fa-refresh" aria-hidden="true"></i> بازسازی فرم</button>
</form>
<div class="clearfix"></div>
</div>
<div class="panel-body">
<table width="100%" class="table table-striped table-bordered table-hover" id="dataTables-example">
<thead>
<tr>
<th class="text-right">نام و نام خانوادگی مبدا</th>
<th class="text-right">شماره موبایل مبدا</th>
<th class="text-right">نام و نام خانوادگی مقصد</th>
<th class="text-right">شماره موبایل مقصد </th>
<th class="text-right">زمان شروع</th>
<th class="text-right">مدت زمان مکالمه</th>
</tr>
</thead>
<tbody>
<?php $arr = $p_call_loges->pages( '20' ); if( $arr ) { foreach( $arr as $row ) { ?>
<tr class="odd gradeX">
<td><?php echo $row['source_name_family']; ?></td>
<td><?php echo $row['source_mobile_num']; ?></td>
<td><?php echo $row['destination_name_family']; ?></td>
<td><?php echo $row['destination_mobile_num']; ?></td>
<td><?php echo $row['call_time']; ?></td>
<td><?php echo $row['duration']; ?> دقیقه</td>
</tr>
<?php } } else { ?>
<?php echo all_noting; ?>
<?php } ?>
</tbody>
</table>
<!-- /.table-responsive -->
</div>
<!-- /.panel-body -->
<div class="panel-footer">
<form class="form-inline" method="POST">
<div class="form-group">
<label for="text">بازسازی صفحه براساس ثانیه</label>
<input type="text" class="form-control" name="refresh-time">
</div>
<button type="submit" class="btn btn-default"><i class="fa fa-pencil" ></i> ثبت</button>
</form>
</div>
<!-- /.panel-footer -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
</div>
<!-- /#page-wrapper -->
<?php
require_once dirname(__FILE__) . '/footer.php';
?>
答案 0 :(得分:1)
使用您的公式让用户输入超时。使用以下PHP-Snippet,在html代码中插入html-refresh。确保输出放在head标签中。在刷新URL中将给定超时添加为get参数。通过以下刷新,PHP-Snippet再次收到超时,并再次插入html-refresh。
因为你的公式通过post发送数据,你必须使用$ _REQUEST变量,该变量包含来自$ _POST,$ _GET和$ _COOKIE的数据。
if(isset($_REQUEST['refresh-time']))
{
$time = $_REQUEST['refresh-time'];
echo '<meta http-equiv="refresh" content="'.$time.'; URL=http://www.example.com/yourPage.php?refresh-time='.$time.'">';
}
或者您将表单更改为GET并使用$ _GET [&#39;刷新时间&#39;]。
答案 1 :(得分:1)
与FTP或IRC不同,HTTP是无状态协议。简单来说,这意味着浏览器建立网络连接,请求资源,接收响应并关闭连接(这在所有情况下都不是严格正确,但现在它已经足够好了)。此外,响应只能请求一次重定向,因为重定向到多个位置没有意义。
因此,在无限循环中发送HTTP标头只会使浏览器超时或崩溃。
您的页面必须重定向一次,并在下一页加载中包含超时信息。如果您需要纯服务器端解决方案,则需要使用以下任一方式传输信息:
我选择#1,因为它是唯一可以识别标签的机制。
// Simplified untested code
$url = 'http://example.com/foo.php';
$timeout = null;
if (isset($_POST['refresh-time']) && $_POST['refresh-time']>0) {
$timeout = $_POST['refresh-time'];
} elseif (isset($_GET['refresh-time']) && $_GET['refresh-time']>0) {
$timeout = $_GET['refresh-time'];
}
if (!is_null($timeout)) {
header(sprintf('Refresh: %2$d; URL=$1$s?refresh-time=%2$d', $url, $timeout));
exit;
}
// HTML comes here (form included)