2017-01-12 7 views
0

ページを数秒で更新する必要がありますが、ユーザーが入力した時刻の値を更新します。
このコードは正しいものの、一度実行されます。私はユーザーページを出している限り、それを実行したい。
私はリングを書く方法を知らない。

これは私のHTMLコードPHPで入力されたユーザーをリフレッシュする時間をかけてページを数秒でリフレッシュ

<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';  
    ?> 
+1

これはHTTPの仕組みではありません。ブラウザがメモリ不足になるまで無限の 'Refresh'ヘッダを送信しても、無限のリダイレクトは発生しません。 –

答えて

1

ユーザーがタイムアウトを入力できるようにあなたのformularを使用することです。次のPHPスニペットを使用すると、HTMLコードにhtml-refreshが挿入されます。出力がheadタグに配置されていることを確認します。指定されたタイムアウトをリフレッシュURLのgetパラメータとして追加します。次のリフレッシュで、PHP-Snippetは再びタイムアウトを受け取り、html-refreshが再び挿入されます。

あなたのフォーミュラはポストでデータを送信するので、$ _POST、$ _GETおよび$ _COOKIEのデータを含む$ _REQUEST変数を使用する必要があります。

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 ['refresh-time']を使用します。

+0

ありがとうございましたが、私はユーザーにリフレッシュ時間を入力してほしい – davOOd

+0

@ davOOd何が問題なのですか?この回答はあなた自身のコードに基づいています。 –

+0

タイムアウトはユーザーによって入力されます。私はこれをより明確にするために私の答えを編集しました。 – radicarl

1

FTPまたはIRCとは異なり、HTTPはステートレスプロトコルです。簡単に言えば、ブラウザがネットワーク接続を確立し、リソースを要求し、応答を受け取り、接続を閉じます(これはすべての場合に厳密には当てはまりませんが、これで十分です)。さらに、応答は複数の場所にリダイレクトする意味がないため、1つのリダイレクトのみを要求できます。

無限ループでHTTPヘッダーを送信すると、ブラウザのタイムアウトやクラッシュが発生するだけです。

ページが一度リダイレクトされ、次のページの読み込みにタイムアウト情報が含まれている必要があります。あなたは純粋なサーバー側のソリューションをしたい場合は、これらのいずれかに情報を送信する必要があります。リダイレクトURLにGETパラメータとして

  1. セッションデータとしてクッキーとして

#1はタブを意識した唯一のメカニズムなので、#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) 
関連する問題