使用php中的“header(location:)”发布数据

时间:2011-12-19 14:41:14

标签: php header http-post

我刚为我的网站制作了一个标志脚本。表单将数据发布到自身,然后检查所有数据是否正确。如果是,则加载付款页面。要加载此付款页面,请使用:

  header(location: payment.php);

所以我想将数据发送到我加载的页面,我虽然可以使用:

  $userid = mysql_insert_id();

将最后一个ID添加到数据库但它无法正常工作,但也许我使用它错了。无论如何,我知道在我的数据库中每个记录上的电子邮件地址是唯一的还是id,所以我想也许我会改变标题:

 header(location: payment.php?email=$email);

通过这种方式,它会将电子邮件地址放入网址,我可以通过以下方式在下一页上再次找到用户:

 $email = $_GET['email'];

现在这很好用,我可以从数据库中获取用户详细信息。然而,我认为将某人的电子邮件地址放入网址并不是最佳做法,但我不能为我的生活想到另一种方式。

这样做有什么建议或好方法吗?

感谢您的时间。

4 个答案:

答案 0 :(得分:3)

使用持久数据与客户端

相关联

使用$_SESSION将数据与当前客户端关联,不要忘记在将数据实际附加到数组之前调用session_start ();

注意:这需要在客户端使用Cookie


将功能包含在一个文件中

虽然发布数据的页面的唯一目的是验证数据,但是执行此操作然后您可以include ("payment.php");,不需要重定向。

或者将表单着陆页的功能改为payment.php


使用发送到payment.php的GET参数

您还可以重定向到payment.php?id=<val>,其中<val>是交易的ID,但您不应公开真实ID,因为这会降低安全性。

除非您检查以确保用户只能访问实际属于他们的id

可以使用支付信息的哈希值,因为这个值不会轻易地或完全被猜到。

答案 1 :(得分:1)

在两页中做任何事情之前,先开始一个会话。

<?php session_start()

并在验证页面上执行类似

的操作
$_SESSION['email'] = $email;

最后在付款页面上,您可以通过

收到电子邮件
$email = $_SESSION['email'];

答案 2 :(得分:1)

我认为你应该回去查看mysql_insert_id()无效的原因。这将是获取数据的最佳方式。

答案 3 :(得分:0)

更新付款后,请从您的数据库创建/获取您的GUID或您的唯一ID,并使用您的guid或唯一ID重定向到您的成功页面,无论如何都不会对此ID进行曝光。