-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 回答