0

私は最近、PHPでfile_get_contentsを使用しているときに$ _SESSIONにアクセスすることを投稿しました。これは、私が抱えていた問題についてです。一般的なコンセンサスは、正しく実行していないということです。どうすればもっとうまくできるかについてフィードバックをもらえると思いました...

私は、複数の異なる領域からまったく同じ形式でまったく同じ電子メールを送信することになっていました。

  1. ジョブが入力されたとき(POSTの一部として自動的に)
  2. 別のインストーラーに再割り当てするジョブを確認するときに手動で

元のスクリプトは、AJAXを使用して作業指示要求を送信するために呼び出されるphpページです。これは、標準のphpページを呼び出し、成功またはエラーメッセージを返し、呼び出しページ内に表示するだけで機能します。

自動化されたジョブエントリ内で同じページを使用して、フォームを介してジョブを受け入れ、ログに記録してメールで送信しようとしました。

私の問題は(元の投稿からわかるように)自動スクリプトのこの原因には関数file_get_contents()が適切ではないことです...

私の問題は、AJAX呼び出しから、データベース接続イニシャライザーを含めたり、セッションを開始したり、スタンドアロンページで実行する必要がある他のことを実行したりする必要があることです...これらの一部またはすべては、インクルードするので、ファイルは1つの目的にのみ適しています...

ファイルを両方の目的に適したものにするにはどうすればよいですか?両方のシナリオに対応するための最適なファイルレイアウトと構造の推奨事項を探していると思います...

現在のファイルは次のようになります。

<?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;

?>
4

1 に答える 1

0

関数を作成し、それを含める別々
の関数を実行し ます。認証 (セッションが必要) からメール送信 (不要) まで、 両方のタスクにメール送信機能を含めます。

于 2010-04-14T06:50:09.977 に答える