通过花时间在PHP中

时间:2017-01-12 14:46:49

标签: php html

我需要在几秒钟内刷新页面,但我想刷新用户输入的时间值 此代码是正确的,但运行一次。只要用户页面输出我就想运行它。
我不知道怎么写戒指。

这是我的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';     
    ?>  

2 个答案:

答案 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. 作为重定向网址中的GET参数
  2. 作为cookie
  3. 作为会话数据
  4. 我选择#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)