我最近在这里发布accessing $_SESSION when using file_get_contents in PHP关于我遇到的一个问题,而且普遍的共识是我做得不对......我一般认为“只要它有效......”我想我会得到一些关于如何做得更好的反馈......
我要从多个不同的区域以完全相同的格式发送完全相同的电子邮件。
原始脚本是一个php页面,使用AJAX调用来发送工作订单请求 - 只需调用标准的php页面,返回成功或错误消息,然后在调用页面中显示。
现在我尝试在自动作业条目中使用相同的页面,以便通过表单接受作业,记录并邮寄。
我的问题是(正如你从原始帖子中看到的那样)函数file_get_contents()在自动脚本中不利于这个原因......
我的问题是,从一个AJAX调用我需要做的事情包括数据库连接初始化,启动会话以及在独立页面中做任何其他需要完成的事情......如果不需要其中的一些或全部它是一个包含,所以它使文件只有一个目的...
如何使文件适用于这两个目的?我想我正在寻找最佳文件布局和结构的建议,以满足两种情况......
当前文件如下:
<?php
session_start();
$order_id = $_GET['order_id'];
include('include/database.php');
function getLineItems($order_id) {
$query = mysql_query("SELECT ...lineItems...");
//Print rows with data
while($row = mysql_fetch_object($query)) {
$lineItems .= '...Build Line Item String...';
}
return $lineItems;
}
function send_email($order_id) {
//Get data for current job to display
$query = mysql_query("SELECT ...Job Details...");
$row = mysql_fetch_object($query);
$subject = 'Work Order Request';
$email_message = '...Build Email...
...Include Job Details...
'.getLineItems($order_id).'
...Finish Email...';
$headers = '...Create Email Headers...';
if (mail($row->primary_email, $subject, $email_message, $headers)) {
$query = mysql_query("...log successful send...");
if (mysql_error()!="") {
$message .= '...display mysqlerror()..';
}
$message .= '...create success message...';
} else {
$query = mysql_query("...log failed send...");
if (mysql_error()!="") {
$message .= '...display mysqlerror()..';
}
$message .= '...create failed message...';
}
return $message;
} // END send_email() function
//Check supplier info
$query = mysql_query("...get suppliers info attached to order_id...");
if (mysql_num_rows($query) > 0) {
while($row = mysql_fetch_object($query)) {
if ($row->primary_email=="") {
$message .= '...no email message...';
} else if ($row->notification_email=="") {
$message .= '...no notifications message...';
} else {
$message .= send_email($order_id);
}
}
} else {
$message .= '...no supplier matched message...';
}
print $message;
?>
答案 0 :(得分:0)
制作一个功能并将其包括在内
单独功能。从邮件发送(不需要)的身份验证(需要会话)
然后将邮件发送功能包含在两个任务中。