PHP验证链接到下一页

Posted

技术标签:

【中文标题】PHP验证链接到下一页【英文标题】:PHP validation link to next page 【发布时间】:2011-12-23 02:25:42 【问题描述】:

我有一个 html 表单页面,我将其发回自身以执行一些 php 验证。

一旦发回自身并且验证通过,我使用字符串将页面指向下一个链接:

echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.website.com/planning/page2.php\">"; 

但是,当使用此页面时,页面会在转到下一页(page2.php)之前自行刷新,这意味着页面在执行验证时再次闪烁,然后重定向。执行验证时如何使其不“闪烁”?

我的验证如下:

//validation
if(isset($_POST['loadid']))
$errors = array();
$load=$_POST['loadid'];

if (empty($load))
$errors[]='<strong><font color=red>Please select a load number</font></strong>';



if (!empty($errors)) 
foreach ($errors as $error) 
    echo $error."<br>";
    
    else 
        echo "Population accurate";
        echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.website.com/planning/page2.php\">"; 
        $_SESSION['sessionloadid']=$_POST['loadid'];



感谢您的帮助, 瑞恩·史密斯

【问题讨论】:

您是否尝试删除重定向? 【参考方案1】:

Flash 结果是因为您在“浏览器内部”进行重定向。这意味着,浏览器需要加载您的 HTML,然后已经开始显示它。

然后浏览器看到它应该重定向,重置窗口(flash)并进行重定向。

您可以通过已经使用 HTTP 标头进行重定向来防止这种情况:

$_SESSION['sessionloadid']=$_POST['loadid'];
$uri = 'http://www.website.com/planning/page2.php';
header('Location: '.$uri);
printf('<a href="%s">Moved.</a>', $uri);
exit;

代替:

echo "Population accurate";
echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.website.com/planning/page2.php\">"; 
$_SESSION['sessionloadid']=$_POST['loadid'];

浏览器在开始显示页面之前会处理 HTTP 标头,然后它会看到重定向并重定向(通常是自动的)。如果浏览器没有自动重定向,则会出现一个简短的“已移动”。将显示消息,因此用户可以通过单击链接导航到新位置。

参见http_redirect 函数,它提供了更多使用PHP 进行重定向的功能。如果您没有可用的扩展,函数文档显示了在使用 PHP 进行重定向时应注意的多个要点:

使用绝对 URI。 提供 HTTP 正文。 指定重定向代码(301、302、...)。 退出脚本。

如果您没有该功能,我建议您编写一个功能相同的功能,以便您可以轻松地在应用程序中进行重定向。

【讨论】:

在这里是正确的+1。您不能依赖&lt;meta http-equiv="refresh"...&gt;,因为某些浏览器可能已将其关闭。上述header() 调用将向浏览器发出302 Found,浏览器将立即重定向到$uri。在发出标头重定向后,不必打印 Moved 链接,但如果浏览器出于某种奇怪的原因将最大重定向数设置为 0,则最好这样做。 @Yzmir Ramirez:浏览器可能也禁用了位置标头的自动重定向,请记住这一点。 可能值得添加您要使用 header() 函数发送的响应代码(即,无论是 301 还是在本例中为 303 重定向)。 嗨@hakre,感谢您的建议。我收到错误警告:无法修改标题信息 - 第 31 行 /home/user/public_html/lanning/page2 中的(输出开始于 /home/user/public_html/lanning/page2.php:25)的标题第 31 行在我的代码中是: header('Location: '.$uri);任何建议。这是因为 POST 操作指向自身以执行验证吗?解决方法是什么?

以上是关于PHP验证链接到下一页的主要内容,如果未能解决你的问题,请参考以下文章

在链接到下一页之前播放音频的 HTML 链接

使用 Javascript 链接到下一页和上一页

如何使用angularjs变量使超链接移动到下一页?

如果React.JS链接标记的所有验证都正确,则渲染下一个组件

这个超链接放到哪里?才能把ID传到下一页?

WordPress - 如何将锚点添加到上一页/下一页链接