-4

私の PHP スクリプトは、フロント エンドで新しい情報がデータベースのメンバーに入力されたときに、電子メールと SMS を送信するように作成されました。ただし、電子メール コードと SMS コードは個別に機能していますが、一緒にするとコードは実行されません。

実際、コードはスキップされました。呼び出された関数で意図的なエラーを作成しようとしましたが、認識されませんでした。なんで?

<?php
    error_reporting(E_ALL ^ E_NOTICE);

    define('INCLUDE_CHECK', true);

    require 'functions.php';
    include ("generatesms.php");
    include ("class.phpmailer.php");
    include ("../sendsmsV3.5/sendsmsV3.5/CurlProcess.php");
    include ("../sendsmsV3.5/sendsmsV3.5/Way2Sms.php");
    include ("class.smtp.php");

    // The above files can be included only if INCLUDE_CHECK is defined
    $host     = "localhost"; // Host name
    $username = "root";      // Mysql username
    $password = "";          // Mysql password
    $db_name  = "test";      // Database name
    $tbl_name = "mails";     // Table name

    // Connect to server and select database.
    mysql_connect($host, $username, $password) or die("cannot connect");
    mysql_select_db($db_name)or die("cannot select DB");

    // Get values from form
    $subject  = $_POST['subject'];
    $email    = $_POST['email'];
    $phone    = $_POST['phone'];
    //$dept   = $_POST['dept'];
    $content  = $_POST['content'];
    $month    = $_POST['birthday-mm'];
    $day      = $_POST['birthday-dd'];
    $year     = $_POST['birthday-yyyy'];
    $date_eve = "$year-$month-$day";
    $dept     = $_POST['branch'];

    if (empty($dept)) {
        echo("You didn't select any DEPEARTMENTS.");
    } else {
        $N = count($dept);

        for($i=0; $i < $N; $i++) {   
            echo $dept[$i]; echo "<br>";
            $dep = $dept[$i];

            // Insert data into mysql
           $sql = "INSERT INTO $tbl_name(subject, body, dept, phone, email, date_eve) VALUES ('$subject', '$content', '$dep', '$phone', '$email', '$date_eve')";

           $result = mysql_query($sql);

           // if successfully insert data into database, displays message "Successful".
           if ($result) {
               echo "Successful";
               echo "<BR>";
               newssender($dept, $content, $subject);
               generatesms($dept,$date_eve,$subject);

               echo "<a href='index.php'>Back to main page</a>";
           } else {
               echo "ERROR";
           }
       }
    }

    // close connection
    mysql_close();
4

1 に答える 1

0

まず、すべての SQL に大きな問題があります。mysql_* 関数は非推奨であり、入力をサニタイズしていないため脆弱性にさらされているため、使用しないでください。( http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php )

関数コードを提示していただけれnewssender()ば、詳細/具体的な回答を提供できますが、それまでの間、他のユーザーのためにいくつかのデバッグプロセスを経る一般的な解決策を提供します.

次のようなコードがある場合:

myFunction1();
myFunction2();

実行されてmyFunction1()いるが実行されていmyFunction2()ない場合は、コメントアウトを試すことができます// myFunction1()(実行したように聞こえます)。その時点でmyFunction2()実行された場合、明らかに問題はmyFunction1(). 探すべきものは次のとおりです。

  1. 致命的なエラー。コード内の構文またはその他のエラーを見つけるために、エラーと通知がオンになっていることを確認してください
  2. コードに存在する可能性があるものをdie探します。exitこれらはスクリプトを終了し、それ以上のコードは実行されません。

#2をテストする簡単な方法は、これを行うことです:

myFunction1();
echo 'I made it here!';

「できました!」が表示されない場合 あなたの画面では、明らかにコードはそこまで到達していません。つまり、コードが返される前に終了したことを意味しますmyFunction1()

それが役立つことを願っています!

于 2013-06-07T14:35:41.493 に答える