【问题标题】:How to refresh page with php after a data of the user is changed in database?如何在数据库中更改用户数据后用php刷新页面?
【发布时间】:2019-05-07 11:00:55
【问题描述】:

我正在尝试制作一个页面来验证用户,一旦他们通过验证,它应该会自动显示新内容。

我已经尝试过:

<?php if ($user[ 'verified']) echo '<META HTTP-EQUIV="Refresh" Content="0; URL='.$location.'">'; ?>

但问题在于,如果用户通过验证,网站会不断刷新。

<div class="notverified" <?php if ($user[ 'verified']) echo 'style="display:contents;"'; ?>>
   <span>You are verified (example)</span>
</div>

我希望一旦用户在 db 中通过验证,新内容就会自动出现,或者一旦用户通过验证,网站会重新加载,但只会重新加载一次。

【问题讨论】:

  • 我建议您使用 javascript-ajax 实现来实现这一点。制作一个 JS 函数来定期轮询数据库的状态,一旦收到新的更新,就从 JS 代码刷新/更新页面。 PHP 代码的作用是使用数据库中的适当数据响应来自 JS 函数的 ajax(HTTP 请求)调用。
  • @FaisalRahmanAvash 嗯,除了 ajax 还有其他解决方案吗?我们宁愿不使用 ajax 对我们的网站进行编码。
  • 我唯一可以建议的另一件事是使用网络套接字/服务器推送。您可以查看 socket.io。虽然如果你想完全避开 JS,你几乎别无选择,只能使用 HTML 元刷新,因为当前的 Web 技术在客户端-服务器模型中工作。
  • @FaisalRahmanAvash 是的,我们使用 JavaScript。
  • 如果你打算使用web sockets with PHP using Ratchet,你可以查看这个库

标签: php html mysql database


【解决方案1】:

问题是你刷新页面,而不是使用 ajax 来获取内容。

<?php if ($user[ 'verified']) echo '<META HTTP-EQUIV="Refresh" Content="0; URL='.$location.'">'; ?>

当用户验证 == true 时,浏览器刷新,下次用户验证 == true 时,网站会不断刷新。

所以,如果 $user 验证,您应该触发 ajax 以获取新内容。

【讨论】:

  • 除了ajax还有其他解决方案吗?我们宁愿不使用 ajax 对我们的网站进行编码。
  • 或者你可以创建一个按钮,如果用户验证,他们可以点击它,触发刷新站点。
【解决方案2】:

我可以用 JavaScript 解决这个问题,只需添加 document.location.reload(true)

$('.verify-account').click(function() {
    $(this).prepend('<i style="margin-top:5px;margin-left:5px" class="fa fa fa-spinner fa-spin"></i> ');
    $.post('verify', function(data) {
        if (data.status == 'success') {
            $('.accountver').html('<strong class="text-success"><i class="fa fa-check"></i> Verified</strong>');
            $('.verify-account').html('<p1>Verified</p1>');
            $('.verify-account').prop('disabled', true);
            $('.verification').empty();
            document.location.reload(true)
        }
        $('.verify-account').find('i').remove();
        showAlert(data.status, data.message);
    }).fail(function(response) {
        $('.verify-account').find('i').remove();
        showAlert('error', 'There was a problem while perform this action. '+ response.responseText);
    });
});

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 2019-05-13
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2011-10-26
    • 2018-01-25
    相关资源
    最近更新 更多