我正在努力使用由Cronjob激活并包含重定向的PHP脚本。
该脚本在我的数据库中查找记录,根据需要发送电子邮件,然后重定向到已编译的URL,以便将记录的详细信息导入外部系统。
电子邮件部分通过Cronjob正常工作,重定向没有,我明白这是因为Cronjobs不在浏览器中运行,但我不确定什么是重定向到URL的最佳替代方法。
以下简化代码:
<?php
// Connect to DB
require_once($_SERVER['DOCUMENT_ROOT']."/admin/inc/dbconnect.php");
// Check DB for quotes that have not been sent to this client
$query_quotes = "SELECT * FROM quotes WHERE sent_client = 0 LIMIT 1";
$view_request = mysqli_query($GLOBALS['db_connect'], $query_quotes);
// Send to external system and email customer with quote
while ($quotes = mysqli_fetch_array($view_request)){
$Body = "Email Content";
// Send email via Swift Mailer
// Send quote information to third party system via URL redirect
header('Location: http://exampleurl/?FirstName='.rawurlencode($quotes['name']).'&businessName='.rawurlencode($quotes['company_name']).'.');
}
?>
答案 0 :(得分:0)
正如您所说,您不在网络环境中,因此没有浏览器可以对Location:
重定向进行操作。这并不意味着你不能将信息传递给网页 - 你只是无法重定向到它 - 你打电话给它,并获取信息 - 你得到的信息可能不多 - 只是'好吧,我得到了它可能绰绰有余。它可能就像
$url = "http://exampleurl/?FirstName=" .
rawurlencode($quotes['name']) . '&businessName=' .
rawurlencode($quotes['company_name'])
$response = file_get_contents($url);
响应可能就像200 OK
一样简单(虽然除了'OK'之外没有任何响应,正式根据HTTP规范,你会返回204 No Content
,但那是一个非常小的事情。)
更好的方法是使用正确的HTTP调用函数,可以处理重定向等潜在问题并使生活更轻松 - 例如Guzzle库,但是,如果file_get_contents为您提供URL,那么可能就够了,至少在你测试基础知识的时候。