首页 > 解决方案 > 第一次单击 word 2007 中的超链接(当它是蓝色时)导致我的网站 php 上的响应不正确

问题描述

所以我必须从我的测试文档中的超链接打开我的网站。我必须这样做以确保我的测试易于使用。可悲的是,我的网页似乎出现了非常奇怪的行为。

因此,当您打开链接时,它应该发送一封电子邮件,然后回复成功消息并从数据库中删除所有记录。如果您只是在浏览器中输入链接并且第二次打开超链接,则此方法有效。

但是,当您第一次打开链接时(并且您在数据库中确实有某些内容),它会发送电子邮件,但并没有像应有的那样给出成功的响应,而是在通过我的 if 之后似乎通过了我的 else 语句声明,它给出的响应是数据库中没有电子邮件。

因此,第一次单击 word 2007(也来自 PowerPoint)中的链接时,它会执行以下操作

  1. 发送邮件,如果满足 if 语句会发生什么
  2. 如果满足 else 语句,则响应数据库中没有记录

这是我的路线

<!DOCTYPE html>
<html lang="nl">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="stylesheets/style.css">
    <title>Ninebits Enquete</title>
</head>
<?php



//Models
require_once    '../Models/Model.php';
require_once    '../Models/Database.php';
require_once    '../Models/Question.php';
require_once    '../Models/Survey.php';
require_once    '../Models/Mail_Info.php';
require_once    '../Models/Mail.php';
require_once    '../Models/Answer.php';

//controllers
require_once    '../Controllers/surveyController.php';
require_once    '../Controllers/mail_infoController.php';
require_once    '../Controllers/mailController.php';
require_once    '../Controllers/answerController.php';


//views
require_once    'views/surveyView.php';
require_once    'views/finishView.php';
require_once    'views/selectionView.php';
require_once    'views/dashboardView.php';
require_once    'views/previouslySavedView.php';
require_once    'views/errorView.php';




//will get the URL so it can be used for routing
$url = isset($_SERVER['PATH_INFO']) ? explode('/', ltrim($_SERVER['PATH_INFO'],'/')) : '/'  ;

//this is where my problem comes from by calling this
if($url == '/' && $_SERVER["REQUEST_METHOD"] === "GET")
{
        $mc = new mailController;

        $mc->sendMail();
}


else
{
    if($url[1] == 'list')
    {

        $sc = new surveyController();
        $mic = new mail_infoController();


       $list = $mic->checkadress($_GET['type']);
       $sc->displayPage($list);

    }



    else if($url[1] == 'finish')
    {
        $ac = new answerController();

        $ac->showFinish();
    }

    else if($url[1] == 'selection')
    {
        $sc = new surveyController();

        $sc->selectionScreen();
    }

    else if($url[1] == 'dashboard')
    {

      $ac = new answerController();
      $ac->getCalculatedValue($_GET['id']);


    }

    else
    {
        header('HTTP/1.1 404 Not Found');
        die("<h1>404</h1> pagina $url[1] kunnen wij niet vinden of bestaat niet. ");
    }


}

?>
</html>

我在调用链接时调用的函数

    /**
     *
     *
     * sends the email with link to the client.
     */
    public function sendMail()
    {

        $mail = new Mail();

      //it goes through here when calling the link the first time from word
        if(!$mail->exception)
        {
            $info = $mail->mails;

            foreach ($info as $infoItem)
            {
                $adress = $infoItem["mailadress"];

                if(filter_var($adress, FILTER_VALIDATE_EMAIL) )
                {
                    $hash = $this->createLink($infoItem['client'], $infoItem['survey']);
                    $mail->mail_info->addMailInfo($infoItem['client'], $hash);

                    $to = $infoItem["mailadress"];
                    $subject = "Enquete";
                    $message = "<html><body>";
                    $message .= "<h1>Geachte ".$infoItem['client'];
                    $message .= "</h1>";
                    $message .= "<h3>Bedankt voor het gebruiken van onze service en producten</h3>";
                    $message .= "<p>Om ons te laten weten wat u van de service en producten vondt willen wij u graag vragen om de enquete in de link hieronder in te vullen</p>";
                    $message .= "<a href='https://ontwikkeling.ninebits.nl/lab/stage/danny/Enquete/public/list?type=$hash'>Ninebits Enquete</a>";
                    $message .= "<br>";
                    $message .= "<br>";
                    $message .= "<p>met vriendelijke groet,</p>";
                    $message .= "<p>Het hele Ninebits team</p>";
                    $message .= "</body></html>";



                    $headers = "from: Ninebits\r\n";
                    $headers .= "MIME-Version: 1.0\r\n";
                    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

                    mail($to, $subject, $message, $headers);


                    $mail->deleteMails($infoItem['id']);

                      //this is the response I am expecting everything up to here seems to work
                        echo 'success <br>';

                }

                else
                {
                   //it does not seem to go in this else here which is good in this case

                    echo 'Dit is geen correct email adres<br>';

                    $mail->deleteMails($infoItem['id']);

                    if($mail->exception)
                    {
                       echo $mail->exceptionMessage;
                    }
                }
            }

        }

         //but then it responds with this else here
         else
         {
             echo $mail->exceptionMessage;
         }
    }
}

浏览器控制台和我能够获得的所有日志数据都指向只有 1 个正在执行的 get 调用

标签: phphttpms-word

解决方案


推荐阅读