我对Drupal完全陌生。我在Drupal中使用纯HTML创建了一个表单,当用户单击pay时,我调用一个PHP文件只是为了获取一些数据库信息,然后此PHP重定向到另一个将PayPal付款放在一起的PHP。
出于某些原因,在Drupal下调用PayPal付款PHP不会将其重定向到PayPal。我的图层如下:
[https://example.com/test/?q=node/11->调用savedatatoDB.php->调用paypalpreparepayment.php->重定向到paypal
如果我直接从浏览器中调用PayPal付款PHP,如下所示:https://example.com/test/paypal/restapi/sample/payments/PaymentPP.php?samount=0.005&sprice=123.45&description=products&sqty=100
有效!我认为问题可能出在header()之前,但事实并非如此。
我像这样在重定向之前写了一行写入日志文件:
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$log = "{$today} ready to redirect {$sale_description}, {$sale_amount}, {$sale_quantity}, {$sale_price}\n";
//Save string to log, use FILE_APPEND to append.
file_put_contents('./log_'.date("j.n.Y").'.txt', $log, FILE_APPEND);
header("Location: $redirectUrl");
exit;
日志显示我已经走了那么远,但没有重定向!但是再次,如果我直接从浏览器中调用该PHP,那么我会看到PayPal要求我进行授权。
所以当我在Drupal UI下时,我想知道Drupal是否可以某种方式阻止重定向。
我从Drupal.org得到了一个有意义的答案。
这里是链接:https://www.drupal.org/node/2365503#comment-9295613
[Jaypan大约11小时前评论了]
问题是您的重定向位于服务器端,但您用JavaScript触发它。如果触发器在您的JS中,则重定向也需要在JS中进行。如果触发器是非JS(提交到服务器),则您的重定向可以在服务器端。