如何防止通过 url 直接访问 php 文件但重定向

How to prevent access to a php file directly through url but redirect

我希望我的访问者直接阻止页面 success.php 例如:www.site.com/paypal/success.php 但是当 paypal 付款完成后,它会重定向到该页面显示信息。但是在确认paypal付款之前不能直接到这个页面

这不是解决问题的正确方法。

您始终可以将人们发送到成功页面,可选择使用交易 ID。

不能说的是付款是否成功。这取决于您的支付提供商。您可能需要等待他们的消息。如果是 PayPal,您可以使用 IPN.

所以不要依赖成功页面来确认交易,依赖您的支付提供商。

会话或 cookie 也不应用于跟踪交易。如果我同时开始 2 笔交易会怎样?

而不是在 paypal 中将目标 URL 设置为

http://...../success.php

设置为

http://...../success.php?secret=something-random-here

然后您的 success.php 脚本将检查 $_GET['secret'] 是否存在并等于您期望的值。

我不确定您的代码是什么样的,但我会在付款处理中使用会话,然后在 success.php 确认页面上需要它。

<?php // transcation.php page

    // Should the payment be successfully authorized
    session.start();
    $_SESSION['successful_transaction'] = true;

?>


<?php //success.php

    if (empty($_SESSION['successful_transaction'])) die("Sorry, access denied");
?>