这种方法使用GET方法错了吗?

时间:2015-03-16 20:43:40

标签: php html sql get

我有一些工作,我遇到了一个问题,我只能解决这个问题

header("Location:messages.php?ID_Conversation=$row[ID]");

这是“错误的”吗?

1 个答案:

答案 0 :(得分:1)

这完全没错。您正在重定向到资源并将信息作为URL的一部分传递给该资源,这是完全可以接受的。

但是,错误的部分是URL的结构方式。如果您要按规律进行此操作,您将需要养成尽可能精确设置位置的习惯。

至少这是说你应该设置相对于域根的完整路径:

header("Location:/any_directories/messages.php?ID_Conversation=$row[ID]");

在最好的情况下,这意味着包括域和协议:

header("Location:https://yourdomain.com/any_directories/messages.php?ID_Conversation=$row[ID]");

为简化此操作,请创建一个辅助函数或对象来处理此类重定向。

function redirect($url) {
    header("Location:https://yourdomain.com/$url");
}

redirect("any_directories/messages.php?ID_Conversation=$row[ID]");

显然在上面的函数中还有其他注意事项,可能会将GET查询的数据作为数组传递,发现域和/或协议等,并且不应该按原样使用它,但这个想法是合理的