2013-02-19 105 views
0

我在这个论坛上看了很多,但找不到我需要的东西。等待iframe加载在php

我想使用一个PHP脚本来清理desknow数据库,我设法让它通过我所有的录制循环并发送命令给一个iframe,但我的问题是,我需要它等到iframe作为在它执行下一个循环之前完成加载,因为它将数据库命令发送到desknow服务器。我试图在循环中进行睡眠,但是当我这样做时,它只会等待指定时间的循环次数,然后同时输出所有iframe。它不必为每个记录打开一个新的iframe,就像它在这里做的那样,如果有一种方法可以在每个循环中更改iframe的src,它会更好。

<?php 
    echo "start"; 

    @ $db = new mysqli('localhost', 'desknow', 'xxxxxxxx', 'desknow'); 

    if (mysqli_connect_errno()) { 
     echo "fail"; 
     exit; 
    } 

    echo "pass"; 

    for ($i=1; $i <4; $i++) { 
     flush(); 
     sleep(2); 
     $query = "select email from compte where no = $i"; 
     $result = $db->query($query); 
     $row= $result->fetch_assoc(); 
     $email = htmlspecialchars(stripslashes($row['email'])); 
     echo "<br>"; 
     echo "<iframe onload=\"load()\" src=\"http://0.0.0.0:81/desknow/admin?pwd=xxxxxx&action=mail_deleteemails&username=$email&domain=mydomain.com&path=inbox&before=20121231_1300/\"></iframe>"; 
    } 

    $result->free(); 
    $db->close(); 
?> 
+1

这是不安全的,应该被认为是一个非常糟糕的做法! – jeroenvisser101 2013-02-19 13:21:44

+0

尝试使用'file_get_contents'或'curl' – bitWorking 2013-02-19 13:24:16

回答

0

尝试flush();前使用ob_flush();,并echo 'start';

0

你的URL拥有IP,用户名和数据库服务器的密码 - 这是非常不安全的,非常糟糕的做法。

如果你真的要更新之类的东西,你需要做的客户端。使用JavaScript方法可以非常简单,它将重新加载现有DOM成员的HTML内容。

您还可以使用页面刷新或表单后,完成另一个往返于这将更新视图服务器。