PHP - неизвестный символ в переменной после отправки электронного письма в формате HTML - PullRequest
0 голосов
/ 12 мая 2011

Я разрабатываю модуль регистрации пользователей в phpNuke, и я столкнулся с проблемой, что я понятия не имею, что это такое.

Для чего предназначена функция:

  1. взять все данные из формы регистрации пользователя, поместить их в таблицу MySql для временных пользователей.
  2. На этом этапе администратору сайта будет отправлено html-сообщение для одобрения.
  3. Как только администратор одобрит это по ссылке в html-письме, пользователю будет отправлено электронное письмо с сообщением о том, что его аккаунт утвержден.


    $check_num = md5($user_email);</p>

<pre><code>if($creditcard == "1"){
            $finishlink = "http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num&adminApproval=2";
        }else{
            $finishlink = "http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num&adminApproval=1";
            $rejectlink = "http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=$check_num&adminApproval=0";
        }


$from_admin = $adminmail;
$admin_header = "MIME-Version: 1.0" . "\r\n";
$admin_header .= "Content-type: text/html; charset=UTF-8" ."\r\n";
$admin_header .= "From: $from_admin" . "\r\n";
$admin_msg = "<html><head><title>Membership Request</title></head>"
."<body><b>Membership Request</b><br /><br />" 
."<table width=\"500\" border=\"0\">"
."<tr><td width=\"150\">Country/Region :</td><td width=\"350\">$region</td></tr>"
."<tr><td width=\"150\">Company Name :</td><td width=\"350\">$organization</td></tr>"
."<tr><td width=\"150\">Email Address :</td><td width=\"350\">$user_email</td></tr>"
."<tr><td width=\"150\">Name :</td><td width=\"350\">$fullname</td></tr>"
."<tr><td width=\"150\">Title :</td><td width=\"350\">$title</td></tr>"
."<tr><td width=\"150\">Telephone :</td><td width=\"350\">$phone</td></tr>"
."<tr><td width=\"150\">Referral :</td><td width=\"350\" valign=\"top\">$referral</td></tr>"
."<tr><td width=\"150\">Area of interest :</td><td width=\"350\">$areaOfInterest</td></tr>"
."<tr><td width=\"150\">Sign up for updates :</td><td width=\"350\">$newsletter</td></tr>"
//."<tr><td width=\"150\">Activate Member :</td><td width=\"350\"><a href=\"$finishlink\">YES</a>/<a href=\"$rejectlink\">NO</a></td></tr>"
.'<tr><td width="150">Activate Member :</td><td width="350"><a href="'.$finishlink.'">YES</a>&nbsp;<a href="'.$rejectlink.'">NO</a></td></tr>'
."</table></body></html>";
$admin_subj = "Membership Request from ".ucwords($fullname).",".$region;
mail($adminmail,$admin_subj,$admin_msg, $admin_header);  

Выше приведен сценарий, который отправляет электронную почту в формате HTML, он прекрасно работает в среде IIS, однако, когда я перенес это на сервер Linux в Network Solutions, в финишную $ контрольную сумму добавлена ​​"!"переменная.это происходит только в среде Linux.

Как видно из вышесказанного, и $ finishlink, и $ rejectlink практически идентичны, разница в конце равна & adminApproval = value.И эта «неизвестная переменная» встречается только в $ finishlink, $ rejectlink в порядке.

пример ошибки в моей электронной почте, finishlink:

<code>
http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=f17cde8f32a68d06af5301!  bda67653e4&adminApproval=1">YES

rejectlink:

<code>
http://$siteurl/modules.php?name=$module_name&op=activate&username=$username&check_num=f17cde8f32a68d06af5301bda67653e4&adminApproval=0">NO

Если кто-то сможет указать мне правильное направление, я буду очень признателен!Я потратил на это больше времени.

1 Ответ

1 голос
/ 12 мая 2011

Из того, что я могу сказать, ваш код выглядит нормально, и нет никаких причин, по которым это должно происходить.

Общий ответ заключается в упрощении кода до тех пор, пока вы не дойдете до точной точки, где он выходит из строя.Правильно ли, если вы не отправляете тело по электронной почте, а просто отображаете его в браузере или сохраняете в файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...