编程调用php的最佳方法

时间:2010-04-14 06:36:24

标签: php file-get-contents

我最近在这里发布accessing $_SESSION when using file_get_contents in PHP关于我遇到的一个问题,而且普遍的共识是我做得不对......我一般认为“只要它有效......”我想我会得到一些关于如何做得更好的反馈......

我要从多个不同的区域以完全相同的格式发送完全相同的电子邮件。

  1. 输入作业时(自动作为POST的一部分)
  2. 在审核作业以重新分配给其他安装程序时手动
  3. 原始脚本是一个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;
    
    ?>
    

1 个答案:

答案 0 :(得分:0)

制作一个功能并将其包括在内 单独功能。从邮件发送(不需要)的身份验证(需要会话)
然后将邮件发送功能包含在两个任务中。