zuerst mal Danke für die Bereitstellung eines captcha Skriptes
Leider komme ich mit dem Scripteinbau auch nicht klar, ich habe von php und html so gut wie keine Ahnung. Habe zwar einiges auspropiert, mit dem Ergebnis, dass auf meiner Gästebuchseite alles weg war bzw. ist.
Hier die Seite um die es geht
http://www.pro-bordi.de/html/gastebuch.php
Ich habe mehrer phps auf dem Server liegen. Wo muss in denn da das Script einfügen
gb_add:
<?php
error_reporting(0);
$cgiDir = $nof_rootDir ."/". $nof_scriptDir ."/";
$nof_suiteName = "Guestbook";
if (!NOF_fileExists($cgiDir."gb_xml.php")){
exit();
} else {
include_once($cgiDir."gb_xml.php");
}
$useName = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useName");
$useComment = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useComment");
$useEmail = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useEmail");
$useHomepage = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useHomepage");
$useCity = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useCity");
$useCountry = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useCountry");
$useEmoticons = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useEmoticons");
$ag_gbpath = $nof_rootDir."/".$nof_scriptDir."/";
$ad_gbfile = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "dbPath");
$ag_gbpage = GetServerVariable('PHP_SELF');
$useState = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useState");
$requireValidation = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "validate");
$notifyWebmaster = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "sendEmail");
$notifyEmail = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "emailToAddress");
$smtpip = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "emailServer");
$smtpport = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "emailServerPort");
$smtpfrom = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "emailFromAddress");
$separator = '|';
InitParameterVariables(GetGVariable(''), $myVars);
InitParameterVariables(GetPostVariable(''), $myVars);
$sbmName = 'btn'.str_replace('.', '_',GetServerVariable('SERVER_NAME'));
?>
<script language="JavaScript">
function ValidateEmail(theinput) {
var s = new String;
s = theinput.value
var extra = String.fromCharCode(223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,257,259,261,263,265,267,269,271,273,275,277,279,281,283,285,287,289,291,293,295,297,299,301,303,305,309,311,312,314,316,318,322,324,326,328,331,333,335,337,339,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373,375,378,380,382);
var regEx = new RegExp("^[^@]+@[a-z0-9" + extra + "]+([\\.-][a-z0-9" + extra + "]+)*\\.([a-z]{2,}|[0-9]{1,})$","gi");
var validFormat = (s.search(regEx)>=0);
return validFormat;
}
function validate() {
// validate name
if ( document.<?="form".$nof_componentId?>.name.value == "" ) {
alert( "<?=html_entity_decode($GLOBALS['nof_resources']->get('gb.AddForm.NameField.RequiredMessage'))?>" );
document.<?="form".$nof_componentId?>.name.focus();
return false;
}
// validate comment
if ( document.<?="form".$nof_componentId?>.comment.value == "" ) {
alert( "<?=html_entity_decode($GLOBALS['nof_resources']->get('gb.AddForm.CommentField.RequiredMessage'))?>" );
document.<?="form".$nof_componentId?>.comment.focus();
return false;
}
// validate email
if ( document.<?="form".$nof_componentId?>.email.value != "" && !ValidateEmail(document.<?="form".$nof_componentId?>.email) ) {
alert( "<?=html_entity_decode($GLOBALS['nof_resources']->get('gb.AddForm.EmailField.ValidMessage'))?>" );
document.<?="form".$nof_componentId?>.email.focus();
return false;
}
// adjust homepage value
if ( document.<?="form".$nof_componentId?>.homepage != null ) {
var homepage = document.<?="form".$nof_componentId?>.homepage.value;
if ( homepage.indexOf( "http://" ) != -1) {
document.<?="form".$nof_componentId?>.homepage.value = homepage.substring( 7, homepage.length );
}
}
return true;
}
function insertAtCursor( field, value ) {
if ( document.selection ) {
//IE support
field.focus();
sel = document.selection.createRange();
sel.text = value;
} else if ( field.selectionStart || field.selectionStart == '0' ) {
//MOZILLA/NETSCAPE support
var startPos = field.selectionStart;
var endPos = field.selectionEnd;
field.value = field.value.substring( 0, startPos ) + value + field.value.substring( endPos, field.value.length );
} else {
field.value += value;
}
}
function insertEmoticon( emoticon ) {
var ta = document.<?="form".$nof_componentId?>.comment;
var text = "";
if ( document.<?="form".$nof_componentId?>.comment != null ) {
var text = "";
switch ( emoticon ) {
case "smile": text = ":)"; break;
case "happy": text = ":D"; break;
case "laugh": text = "=))"; break;
case "ohwell": text = ":/"; break;
case "sad": text = ":("; break;
case "mad": text = "X("; break;
case "tongue": text = ":P"; break;
case "wink": text = ";)"; break;
}
insertAtCursor( document.<?="form".$nof_componentId?>.comment, text );
}
}
</script>
<form class="gb" name="<?="form".$nof_componentId?>" method="post" action="<?php echo $cgiDir . "gb_add_post.php" ?>" onSubmit="return validate();" target="_self">
<script language="JavaScript">
if (window.parent.location == document.location) {
document.write('<input type="hidden" name="goback" value="' + document.location + '">');
} else {
document.write('<input type="hidden" name="goback" value="' + document.location + '">');
}
</script>
<input type="hidden" name="nof_rootDir" value="<?=$nof_rootDir?>">
<input type="hidden" name="nof_scriptDir" value="<?=$nof_scriptDir?>">
<input type="hidden" name="nof_debug" value="<?=$nof_debug?>">
<input type="hidden" name="nof_scriptInterfaceFile" value="<?=$nof_scriptInterfaceFile?>">
<input type="hidden" name="nof_componentId" value="<?=$nof_componentId?>">
<input type="hidden" name="nof_langFile" value="<?=$nof_langFile?>">
<table class="gb">
<?php
if ( $useName == "true") {
?>
<tr class="gb">
<td class="gb">* <?=$GLOBALS['nof_resources']->get('gb.AddForm.NameField.Label')?></td>
<td class="gb"><input class="gb" type="text" name="name" size="25"></td>
</tr>
<?php
}
if ( $useEmail == "true") {
?>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.EmailField.Label')?></td>
<td class="gb"><input class="gb" type="text" name="email" size="25"></td>
</tr>
<?php
}
if ( $useHomepage == "true") {
?>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.HomepageField.Label')?></td>
<td class="gb"><input class="gb" type="text" name="homepage" size="25"></td>
</tr>
<?php
}
if ( $useCity == "true") {
?>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.CityField.Label')?></td>
<td class="gb"><input class="gb" type="text" name="city" size="25"></td>
</tr>
<?php
}
if ( $useState == "true") {
?>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.StateField.Label')?></td>
<td class="gb"><input class="gb" type="text" name="state" size="25"></td>
</tr>
<?php
}
if ( $useCountry == "true") {
?>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.CountryField.Label')?></td>
<td class="gb"><input class="gb" type="text" name="country" size="25"></td>
</tr>
<?php
}
if ( $useComment == "true" ) {
?>
<tr class="gb">
<td class="gb" valign="top">* <?=$GLOBALS['nof_resources']->get('gb.AddForm.CommentField.Label')?></td>
<td class="gb"><textarea class="gb" name="comment" style="width:350px;height:80px" wrap="hard"></textarea></td>
</tr>
<?php
}
if ( $useEmoticons == "true") {
?>
<tr class="gb">
<td class="gb"></td>
<td class="gb">
<center>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/smile.gif" onclick="insertEmoticon('smile');" style="cursor:pointer;" ></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/happy.gif" onclick="insertEmoticon('happy');" style="cursor:pointer;"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/laugh.gif" onclick="insertEmoticon('laugh');" style="cursor:pointer;"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/ohwell.gif" onclick="insertEmoticon('ohwell');" style="cursor:pointer;"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/sad.gif" onclick="insertEmoticon('sad');" style="cursor:pointer;"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/mad.gif" onclick="insertEmoticon('mad');" style="cursor:pointer;"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/tongue.gif" onclick="insertEmoticon('tongue');" style="cursor:pointer;"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/wink.gif" onclick="insertEmoticon('wink');" style="cursor:pointer;"></img>
</center>
</td>
</tr>
<?php
}
?>
<tr class="gb">
<td class="gb"></td>
<td class="gb"><input name="<?=$sbmName?>" type="submit" value="<?=$GLOBALS['nof_resources']->get('gb.AddForm.Submit.Button.Label')?>"></td>
</tr>
<? if ($requireValidation == "true") { ?>
<tr class="gb">
<td class="gb"></td>
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.Validation.Text')?></td>
</tr>
<? } ?>
<tr class="gb">
<td class="gb"></td>
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.Required.Warning')?></td>
</tr>
</table>
</form>
gb_add_post:
<?
error_reporting(0);
if ( !file_exists("nof_utils.inc.php") ) {
echo "<p>An error occured. Please contact the site administrator</p><p>Error code: 103</p>";
}
require_once("nof_utils.inc.php");
if ( GetPostVariable('btn'.str_replace('.', '_', GetServerVariable('SERVER_NAME'))) == '' ) {
echo "<META http-equiv='Refresh' content='0; url=".GetPostVariable('goback')."'>";
exit();
}
$nof_rootDir = GetPostVariable('nof_rootDir');
$nof_debug = GetPostVariable('nof_debug');
$nof_componentId = GetPostVariable('nof_componentId');
$nof_scriptDir = GetPostVariable('nof_scriptDir');
$nof_scriptInterfaceFile = GetPostVariable('nof_scriptInterfaceFile');
$cgiDir = "";
$nof_suiteName = "Guestbook";
$nof_langFile = str_replace($nof_rootDir.'/'.$nof_scriptDir, "", GetPostVariable('nof_langFile'));
$nof_langFile = str_replace('/', "", $nof_langFile);
if ( !file_exists($nof_langFile) ) {
if($nof_debug == "true") {
echo "<p>The components required for suite <b>mygb</b> are not published. Please check your publish settings in Fusion and republish the site.</p>";
} else {
echo "<p>An error occured. Please contact the site administrator</p>
<p>Error code: 103</p>";
}
exit();
}
$nof_resources->addFile($nof_langFile);
if (!NOF_fileExists($cgiDir."gb_xml.php")){
exit();
} else {
include_once($cgiDir."gb_xml.php");
}
$useName = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useName");
$useComment = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useComment");
$useEmail = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useEmail");
$useHomepage = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useHomepage");
$useCity = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useCity");
$useCountry = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useCountry");
$useEmoticons = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useEmoticons");
$ag_gbpath = $nof_rootDir."/".$nof_scriptDir."/";
$ad_gbfile = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "dbPath");
$ag_gbpage = GetServerVariable('PHP_SELF');
$useState = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "useState");
$notifyWebmaster = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "notifyWebmaster");
$requireValidation = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "validate");
$notifyEmail = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "emailToAddress");
$smtpip = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "emailServer");
$smtpport = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "emailServerPort");
$smtpfrom = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "emailFromAddress");
$language = gb_XMLGetPropertyByID($cgiDir . $nof_scriptInterfaceFile, "$nof_componentId", "language");
$separator = '|';
InitParameterVariables(GetGVariable(''), $myVars);
InitParameterVariables(GetPostVariable(''), $myVars);
$data = time();
$name = $myVars['name'];
$email = $myVars['email'];
$homepage = $myVars['homepage'];
$city = $myVars['city'];
$state = $myVars['state'];
$country = $myVars['country'];
$comment = $myVars['comment'];
($requireValidation == "true")?$validated = 0:$validated = 1;
$array = array("$name", "$email", "$homepage", "$city","$state", "$country", "$data", "$comment", "$validated");
//the for is used against str_replace's arrays parameters for <php4.0.5 compatibility
for ( $i=0; $i<count($array); $i++ ) {
$array[$i] = str_replace($separator,"",$array[$i]);
}
$full = implode("|", $array);
$tmp = $full;
$tmp = str_replace('<', "<", $tmp);
$tmp = str_replace('>', ">", $tmp);
$tmp = str_replace("\r\n", "<br>", $tmp);
$tmp = str_replace("\n", "<br>", $tmp);
$tmp = str_replace('"', '"', $tmp);
if (!file_exists(dirname($ad_gbfile))) {
NOF_throwError(540,array("{1}"=>NOF_mapPath(dirname($ad_gbfile)),"{2}"=>getcwd()));
}
if (!is_writable(dirname($ad_gbfile))) {
NOF_throwError(541,array("{1}"=>NOF_mapPath(dirname($ad_gbfile)),"{2}"=>getcwd()));
}
$fp = @fopen($ad_gbfile, 'a+') or NOF_throwError(502,array("{1}"=>NOF_mapPath($ad_gbfile),"{2}"=>getcwd()));
flock($fp, LOCK_EX);
fwrite($fp, $tmp. "\r\n");
flock($fp, LOCK_UN);
fclose($fp);
if ($notifyWebmaster == "true") {
$emailTemplate = gbReadEmailTemplate('gb_emailTemplate_'.$language.'.properties','[EMAIL]');
$message = $emailTemplate['[email]body'];
$message = str_replace('{0}',$name,$message);
$message = str_replace('{1}',$comment,$message);
$message = str_replace("\\n", chr(13), $message);
$message = str_replace("\\", "", $message);
if (!NOF_fileExists($cgiDir.'gb_smtp.php')) {
exit();
}
include_once($cgiDir.'gb_smtp.php');
$mail = new PHPMailer();
$mail->From = $smtpfrom;
$mail->FromName = $smtpfrom;
$mail->Host = $smtpip;
$mail->Port = $smtpport;
$mail->SMTPDebug = false;
$mail->Mailer = "smtp";
$mail->Subject = $emailTemplate['[email]subject'];
//do not set the charset for the email, it use the default value which is iso
// $mail->CharSet = "utf-8";
$mail->SMTPAuth = false;
$mail->IsHTML = false;
$mail->AddAddress($notifyEmail,$notifyEmail);
$mail->Body = $message;
// send e-mail
if (!$mail->Send()) {
echo "<!-- ErrorInfo: ".$mail->ErrorInfo."-->";
$mail->Mailer = "mail";
if (!$mail->Send()) {
echo "<!-- ErrorInfo: ".$mail->ErrorInfo."-->";
NOF_throwError(201,array("{1}"=>$notifyEmail,"{2}"=>$smtpfrom,"{3}"=>"$smtpip:$smtpport"));
if ($nof_debug == 'true') {
exit();
}
}
}
// done! clean up
$mail->ClearAddresses();
$mail->ClearAttachments();
}
$urlArr = explode("?", GetPostVariable('goback'));
$url = $urlArr[0];
if ( count($urlArr) > 1 ) {
$urlArr[1] = str_replace("go=add", "", $urlArr[1]);
$urlArr[1] = str_replace("&&", "&", $urlArr[1]);
if ( $urlArr[1] != "" ) {
if ( substr($urlArr[1], 0, 1) == '&' ) { $urlArr[1] = substr($urlArr[1], 1); }
if ( substr($urlArr[1], -1, 1) == '&' ) { $urlArr[1] = substr($urlArr[1],0, -1); }
$url .= "?".$urlArr[1];
}
}
echo "<META http-equiv='Refresh' content='0; url=".$url."'>";
?>
gb_admin:
<?php
$pathPrefix = $nof_rootDir."/".$nof_scriptDir;
if (!NOF_fileExists($pathPrefix."/"."gb_xml.php")){
exit();
} else {
include_once($pathPrefix."/"."gb_xml.php");
}
$adminpwd = gb_XMLGetPropertyByID($pathPrefix."/".$nof_scriptInterfaceFile, "$nof_componentId", "adminPassword");
$ad_gbpath = $nof_rootDir."/".$nof_scriptDir."/";
$ad_showtime = "true";
$ad_emoticons = gb_XMLGetPropertyByID($pathPrefix."/".$nof_scriptInterfaceFile, "$nof_componentId", "useEmoticons");
$me = GetServerVariable('PHP_SELF');
$txtedit = $GLOBALS['nof_resources']->get("gb.Admin.Edit.Link");
$txtdelete = $GLOBALS['nof_resources']->get("gb.Admin.Delete.Link");
$ad_separator = "|";
$gbfile_admin = $ad_gbpath . gb_XMLGetPropertyByID($pathPrefix."/".$nof_scriptInterfaceFile, "$nof_componentId", "dbPath");
$invalidpass = false;
// predefine variable values
$myVars['pass'.$nof_componentId] = '';
$myVars['name'] = '';
$myVars['email'] = '';
$myVars['homepage'] = '';
$myVars['city'] = '';
$myVars['state'] = '';
$myVars['country'] = '';
$myVars['comment'] = '';
$myVars['op'] = '';
$myVars['id'] = '';
InitParameterVariables(GetGVariable(''), $myVars);
InitParameterVariables(GetPostVariable(''), $myVars);
if ($myVars['op'] =="logout".$nof_componentId) {
SetSessionVariable('pass'.$nof_componentId, '');
//echo "<META http-equiv='Refresh' content='0; url=$me'>";
}
if ($myVars['pass'.$nof_componentId] == $adminpwd) {
SetSessionVariable('pass'.$nof_componentId, $adminpwd);
} else if ($myVars['pass'.$nof_componentId] != "") {
$invalidpass = true;
}
?>
<h1 class="gb"><?=$GLOBALS['nof_resources']->get('gb.Admin.Title')?></h1>
<?
if ( GetSessionVariable('pass'.$nof_componentId) != '' and GetSessionVariable('pass'.$nof_componentId) == $adminpwd) {
$ad_op = $myVars['op'];
$ad_id = $myVars['id'];
if (!file_exists(dirname($gbfile_admin))) {
NOF_throwError(540,array("{1}"=>NOF_mapPath(dirname($gbfile_admin)),"{2}"=>getcwd()));
}
if (!is_writable(dirname($gbfile_admin))) {
NOF_throwError(541,array("{1}"=>NOF_mapPath(dirname($gbfile_admin)),"{2}"=>getcwd()));
}
if (!file_exists($gbfile_admin)){
if(!$FILE = @fopen($gbfile_admin, 'w')){
NOF_throwError(500,array("{1}"=>NOF_mapPath($gbfile_admin),"{2}"=>getcwd()));
}
}
$lines = file($gbfile_admin);
$line_num = count($lines);
if ($ad_op == "validate".$nof_componentId) {
$validLines = $lines;
if (isset($validLines[$ad_id])) {
$values = explode($ad_separator,str_replace("\r\n","",$validLines[$ad_id]));
if ($values[8] == 1) {
$values[8] = "0\r\n";
} else {
$values[8] = "1\r\n";
}
$validLines[$ad_id] = implode($ad_separator,$values);
$lines[$ad_id] = $validLines[$ad_id];
$fp = @fopen($gbfile_admin, "w") or NOF_throwError(500,array("{1}"=>NOF_mapPath($gbfile_admin),"{2}"=>getcwd()));
fwrite($fp, implode('',$validLines));
fclose($fp);
unset($validLines);
}
}
if ($ad_op == "edit".$nof_componentId) {
//form the db line from post
$data = time();
$name = $myVars['name'];
$email = $myVars['email'];
$homepage = $myVars['homepage'];
$city = $myVars['city'];
$state = $myVars['state'];
$country = $myVars['country'];
$comment = $myVars['comment'];
($myVars['validate'] == "1")?$validated = 1:$validated = 0;
$array = array("$name", "$email", "$homepage", "$city","$state", "$country", "$data", "$comment","$validated");
for ( $i=0; $i<count($array); $i++ ) {
$array[$i] = str_replace($ad_separator,"",$array[$i]);
}
$full = implode($ad_separator, $array);
//replace html enclose tags, newlines, quotes and space
$tmp = $full;
$tmp = str_replace('<', "<", $tmp);
$tmp = str_replace('>', ">", $tmp);
$tmp = str_replace("\r\n", "<br>", $tmp);
$tmp = str_replace("\n", "<br>", $tmp);
$tmp = str_replace('"', '"', $tmp);
$tmp = str_replace(' ', ' ', $tmp);
$lines[$ad_id] = $tmp;
$new_lines = "";
foreach ($lines as $index => $value) {
if ($index != $ad_id) $new_lines .= $value;
else $new_lines .= $lines[$ad_id]."\r\n";
}
$fp = @fopen($gbfile_admin, "w") or NOF_throwError(500,array("{1}"=>NOF_mapPath($gbfile_admin),"{2}"=>getcwd()));
fwrite($fp, $new_lines);
fclose($fp);
}
if ($ad_op =="delete".$nof_componentId) {
foreach ($lines as $index => $value) {
if ($index != $ad_id)
$new_lines .= $value;
else $new_lines .="";
}
$fp = @fopen($gbfile_admin, "w") or NOF_throwError(500,array("{1}"=>NOF_mapPath($gbfile_admin),"{2}"=>getcwd()));
flock($fp, LOCK_EX);
fwrite($fp, $new_lines);
flock($fp, LOCK_UN);
fclose($fp);
echo "<META http-equiv='Refresh' content='0; url=$me'>";
}
echo "<h2 class=\"gb\"><a target=\"_self\" href=\"$me?op=logout".$nof_componentId."\">".$GLOBALS['nof_resources']->get('gb.Admin.Logout.Link')."</a></h2>";
if ($ad_op == "showedit".$nof_componentId) {
if (!NOF_fileExists($nof_rootDir."/".$nof_scriptDir."/".'gb_admin_edit.php')) {
exit();
}
include_once($pathPrefix."/"."gb_admin_edit.php");
} else {
for ($i = $line_num-1; $i >= 0; $i--) {
if (trim($lines[$i]) != "") {
$sir = explode($ad_separator, $lines[$i]);
for ($k = 8; $k >= 0; $k--) $sir[$k] = trim($sir[$k]);
echo "<hr class=\"gb\">";
echo "<p class=\"gb\">";
echo "<b>".$GLOBALS['nof_resources']->get('gb.AddForm.NameField.Label')."</b>: ".$sir[0]."<br>";
if ($sir[1] != "") {
echo "<b>".$GLOBALS['nof_resources']->get('gb.AddForm.EmailField.Label')." </b>: "."<a class=\"gb\" href=mailto:$sir[1]>$sir[1]</a>"."<br>";
}
if ($sir[2] != "") {
echo "<b>".$GLOBALS['nof_resources']->get('gb.AddForm.HomepageField.Label').": </b>"."<a class=\"gb\" target=\"_blank\" href=\"http://$sir[2] \" >$sir[2]</a>"."<br>";
}
if ($sir[3] != "") {
echo "<b>".$GLOBALS['nof_resources']->get('gb.AddForm.CityField.Label')." </b>: "."$sir[3]"."<br>";
}
if ($sir[4] != "") {
echo "<b>".$GLOBALS['nof_resources']->get('gb.AddForm.StateField.Label').": </b>"."$sir[4]"."<br>";
}
if ($sir[5] != "") {
echo "<b>".$GLOBALS['nof_resources']->get('gb.AddForm.CountryField.Label').": </b>"."$sir[5]"."<br>";
}
if ($ad_showtime == "true" && is_numeric($sir[6])) {
if ($GLOBALS['nof_locale'] == 'de') {
$sir[6] = date('d.m.Y H:m:s',$sir[6]);
} else {
$sir[6] = date('m/d/Y h:m:s a',$sir[6]);
}
echo "<b>".$GLOBALS['nof_resources']->get('gb.Admin.Sent.Text')." </b> ".$sir[6]."<br>";
}
echo "</p>";
if ($ad_emoticons == "true") {
$sir[7] = str_replace('http:/', "[[H_T_T_P]]", $sir[7]);
$sir[7] = str_replace(':)', "<img src=$nof_rootDir/assets/images/emoticons/smile.gif></img>", $sir[7]);
$sir[7] = str_replace(':D', "<img src=$nof_rootDir/assets/images/emoticons/happy.gif></img>", $sir[7]);
$sir[7] = str_replace('=))', "<img src=$nof_rootDir/assets/images/emoticons/laugh.gif></img>", $sir[7]);
$sir[7] = str_replace(':/', "<img src=$nof_rootDir/assets/images/emoticons/ohwell.gif></img>", $sir[7]);
$sir[7] = str_replace(':(', "<img src=$nof_rootDir/assets/images/emoticons/sad.gif></img>", $sir[7]);
$sir[7] = str_replace('X(', "<img src=$nof_rootDir/assets/images/emoticons/mad.gif></img>", $sir[7]);
$sir[7] = str_replace(':P', "<img src=$nof_rootDir/assets/images/emoticons/tongue.gif></img>", $sir[7]);
$sir[7] = str_replace(';)', "<img src=$nof_rootDir/assets/images/emoticons/wink.gif></img>", $sir[7]);
$sir[7] = str_replace("[[H_T_T_P]]", 'http:/', $sir[7]);
}
echo "<p class='gb' class=\"gb\">".$sir[7]."</p>";
echo "<br><h2 class='gb'>";
echo "<a target=\"_self\" class='gb' href=$me?op=showedit".$nof_componentId."&id=".$i.">".$txtedit."</a>";
echo " ";
echo "<a target=\"_self\" class=\"gb\" href=\"$me?op=delete".$nof_componentId."&id=$i\" onclick='return confirm("".$GLOBALS['nof_resources']->get('gb.Admin.Delete.Confirmation.Message')."");'>".$txtdelete."</a>";
echo " ";
if ($sir[8] == "1") {
$valLink = $GLOBALS['nof_resources']->get('gb.Admin.Invalidate.Link');
} else {
$valLink = $GLOBALS['nof_resources']->get('gb.Admin.Validate.Link');
}
echo "<a target=\"_self\" class='gb' href=$me?op=validate".$nof_componentId."&id=".$i.">$valLink</a>";
echo "</h2>";
}
}
}
echo "<hr class=\"gb\">";
} else {
?>
<form class="gb" name="login" method="post" action="<?php echo "$me" ?>" target="_self">
<table class="gb">
<?php if ($invalidpass) echo "<tr class=\"gb\"><td class=\"gb\"></td><td class=\"gb\"><font color=\"red\"><center>".$GLOBALS['nof_resources']->get('gb.Admin.Login.BadPassword.Message')."</center></font></td></tr>"; ?>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.Admin.Login.PasswordField.Label')?></td>
<td class="gb"><input class="gb" type=password name=pass<?=$nof_componentId?> size=15></td>
<td class="gb"><input class="gb" type=submit value="<?=$GLOBALS['nof_resources']->get('gb.Admin.Login.Submit.Button.Label')?>"></td>
</tr>
</table>
</form>
<?
}
?>
gb_admin_edit.php:
<?php
$eg_id = GetGVariable('id');
$eg_lines = file($gbfile_admin) or NOF_throwError(501,array("{1}"=>NOF_mapPath($gbfile_admin),"{2}"=>getcwd()));
foreach ($eg_lines as $line_num => $line) {
if ($line_num == $eg_id){
$eg_sir = explode($ad_separator, preg_replace("/\n\r/","",$eg_lines[$line_num]));
}
}
?>
<script language="JavaScript">
function ValidateEmail(theinput) {
var s = new String;
s = theinput.value
var extra = String.fromCharCode(223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,257,259,261,263,265,267,269,271,273,275,277,279,281,283,285,287,289,291,293,295,297,299,301,303,305,309,311,312,314,316,318,322,324,326,328,331,333,335,337,339,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373,375,378,380,382);
var regEx = new RegExp("^[^@]+@[a-z0-9" + extra + "]+([\\.-][a-z0-9" + extra + "]+)*\\.([a-z]{2,}|[0-9]{1,})$","gi");
var validFormat = (s.search(regEx)>=0);
return validFormat;
}
function validateForm() {
if (document.<?="form".$nof_componentId?>.name.value == "") {
alert("<?=html_entity_decode($GLOBALS['nof_resources']->get('gb.AddForm.NameField.RequiredMessage'))?>");
document.<?="form".$nof_componentId?>.name.focus();
return false;
}
if (document.<?="form".$nof_componentId?>.comment.value == "") {
alert("<?=html_entity_decode($GLOBALS['nof_resources']->get('gb.AddForm.CommentField.RequiredMessage'))?>");
document.<?="form".$nof_componentId?>.comment.focus();
return false;
}
if (document.<?="form".$nof_componentId?>.email != null) {
if ( document.<?="form".$nof_componentId?>.email.value != "" && !ValidateEmail(document.<?="form".$nof_componentId?>.email)) {
alert("<?=html_entity_decode($GLOBALS['nof_resources']->get('gb.AddForm.EmailField.ValidMessage'))?>");
document.<?="form".$nof_componentId?>.email.focus();
return false;
}
}
if (document.<?="form".$nof_componentId?>.homepage != null) {
var hp = document.<?="form".$nof_componentId?>.homepage.value;
if (hp.indexOf("http://") != -1) {
document.<?="form".$nof_componentId?>.homepage.value = hp.substring(7, hp.length);
}
}
return true;
}
function insertAtCursor(myField, myValue) {
if (document.selection) {
//IE support
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
} else if (myField.selectionStart || myField.selectionStart == '0') {
//MOZILLA/NETSCAPE support
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
} else {
myField.value += myValue;
}
}
function addEmotion(emo) {
var ta = document.<?="form".$nof_componentId?>.comment;
var text = "";
if (ta == null) return;
else {
switch (emo) {
case "smile": text = ":)"; break;
case "happy": text = ":D"; break;
case "laugh": text = "=))"; break;
case "ohwell": text = ":/"; break;
case "sad": text = ":("; break;
case "mad": text = "X("; break;
case "tongue": text = ":P"; break;
case "wink": text = ";)"; break;
}
}
insertAtCursor(ta, text);
}
</script>
<form class="gb" name="<?="form".$nof_componentId?>" method="post" action="<?php echo GetServerVariable('PHP_SELF')."?op=edit".$nof_componentId."&id="."$eg_id" ?>" onSubmit="return validateForm();" target="_self">
<table class="gb">
<tr class="gb">
<td class="gb">*<?=$GLOBALS['nof_resources']->get('gb.AddForm.NameField.Label')?></td>
<td class="gb"><input class="gb" type=text name=name size=25 value="<?php echo $eg_sir[0] ?>"></td>
</tr>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.EmailField.Label')?></td>
<td class="gb"><input class="gb" type=text name=email size=25 value="<?php echo $eg_sir[1] ?>"></td>
</tr>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.HomepageField.Label')?></td>
<td class="gb"><input class="gb" type=text name=homepage size=25 value="<?php echo $eg_sir[2] ?>"></td>
</tr>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.CityField.Label')?></td>
<td class="gb"><input class="gb" type=text name=city size=25 value="<?php echo $eg_sir[3] ?>"></td>
</tr>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.StateField.Label')?></td>
<td class="gb"><input class="gb" type=text name=state size=25 value="<?php echo $eg_sir[4] ?>"></td>
</tr>
<tr class="gb">
<td class="gb"><?=$GLOBALS['nof_resources']->get('gb.AddForm.CountryField.Label')?></td>
<td class="gb"><input class="gb" type=text name=country size=25 value="<?php echo $eg_sir[5] ?>"></td>
</tr>
<tr class="gb">
<td class="gb" valign="top">*<?=$GLOBALS['nof_resources']->get('gb.AddForm.CommentField.Label')?></td>
<td class="gb"><textarea class="gb" name="comment" style="width:350px;height:80px" wrap="hard"><?php echo str_replace("<br>", "\n", $eg_sir[7]); ?></textarea></td>
</tr>
<?php
if ($ad_emoticons == "true") {
?>
<tr class="gb">
<td class="gb"></td>
<td class="gb">
<center>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/smile.gif" onclick="addEmotion('smile');"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/happy.gif" onclick="addEmotion('happy');"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/laugh.gif" onclick="addEmotion('laugh');"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/ohwell.gif" onclick="addEmotion('ohwell');"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/sad.gif" onclick="addEmotion('sad');"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/mad.gif" onclick="addEmotion('mad');"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/tongue.gif" onclick="addEmotion('tongue');"></img>
<img src="<?=$nof_rootDir?>/assets/images/emoticons/wink.gif" onclick="addEmotion('wink');"></img>
</center>
</td>
</tr>
<?php
}
?>
<tr class="gb">
<td class="gb" valign="top"><?=$GLOBALS['nof_resources']->get('gb.Admin.Edit.Validate.Label')?></td>
<td class="gb"><input class="gb" name="validate" value="1" type="checkbox" <? if ($eg_sir[8] == 1) echo "checked" ?>></td>
</tr>
<tr class="gb">
<td class="gb"></td>
<td class="gb"><input type=submit value="<?=$GLOBALS['nof_resources']->get('gb.Admin.EditForm.Submit.Button.Label')?>"> <input type="button" value="<?=$GLOBALS['nof_resources']->get('gb.Admin.EditForm.Cancel.Button.Label')?>" onClick="document.location='<?=GetServerVariable('PHP_SELF')?>';"></td>
</tr>
</table>
</form>
gb_smtp.php:
<?
////////////////////////////////////////////////////
// PHPMailer - PHP email class
//
// Class for sending email using either
// sendmail, PHP mail(), or SMTP. Methods are
// based upon the standard AspEmail(tm) classes.
//
// Copyright (C) 2001 - 2003 Brent R. Matzelle
//
// License: LGPL, see LICENSE
////////////////////////////////////////////////////
/**
* PHPMailer - PHP email transport class
* @package PHPMailer
* @author Brent R. Matzelle
* @copyright 2001 - 2003 Brent R. Matzelle
*/
class PHPMailer
{
/////////////////////////////////////////////////
// PUBLIC VARIABLES
/////////////////////////////////////////////////
/**
* Email priority (1 = High, 3 = Normal, 5 = low).
* @var int
*/
var $Priority = 3;
/**
* Sets the CharSet of the message.
* @var string
*/
var $CharSet = "iso-8859-1";
/**
* Sets the Content-type of the message.
* @var string
*/
var $ContentType = "text/plain";
/**
* Sets the Encoding of the message. Options for this are "8bit",
* "7bit", "binary", "base64", and "quoted-printable".
* @var string
*/
var $Encoding = "8bit";
/**
* Holds the most recent mailer error message.
* @var string
*/
var $ErrorInfo = "";
/**
* Sets the From email address for the message.
* @var string
*/
var $From = "root@localhost";
/**
* Sets the From name of the message.
* @var string
*/
var $FromName = "Root User";
/**
* Sets the Sender email (Return-Path) of the message. If not empty,
* will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
* @var string
*/
var $Sender = "";
/**
* Sets the Subject of the message.
* @var string
*/
var $Subject = "";
/**
* Sets the Body of the message. This can be either an HTML or text body.
* If HTML then run IsHTML(true).
* @var string
*/
var $Body = "";
/**
* Sets the text-only body of the message. This automatically sets the
* email to multipart/alternative. This body can be read by mail
* clients that do not have HTML email capability such as mutt. Clients
* that can read HTML will view the normal Body.
* @var string
*/
var $AltBody = "";
/**
* Sets word wrapping on the body of the message to a given number of
* characters.
* @var int
*/
var $WordWrap = 0;
/**
* Method to send mail: ("mail", "sendmail", or "smtp").
* @var string
*/
var $Mailer = "mail";
/**
* Sets the path of the sendmail program.
* @var string
*/
var $Sendmail = "/usr/sbin/sendmail";
/**
* Path to PHPMailer plugins. This is now only useful if the SMTP class
* is in a different directory than the PHP include path.
* @var string
*/
var $PluginDir = "";
/**
* Holds PHPMailer version.
* @var string
*/
var $Version = "1.73";
/**
* Sets the email address that a reading confirmation will be sent.
* @var string
*/
var $ConfirmReadingTo = "";
/**
* Sets the hostname to use in Message-Id and Received headers
* and as default HELO string. If empty, the value returned
* by SERVER_NAME is used or 'localhost.localdomain'.
* @var string
*/
var $Hostname = "";
/////////////////////////////////////////////////
// SMTP VARIABLES
/////////////////////////////////////////////////
/**
* Sets the SMTP hosts. All hosts must be separated by a
* semicolon. You can also specify a different port
* for each host by using this format: [hostname:port]
* (e.g. "smtp1.example.com:25;smtp2.example.com").
* Hosts will be tried in order.
* @var string
*/
var $Host = "localhost";
/**
* Sets the default SMTP server port.
* @var int
*/
var $Port = 25;
/**
* Sets the SMTP HELO of the message (Default is $Hostname).
* @var string
*/
var $Helo = "";
/**
* Sets SMTP authentication. Utilizes the Username and Password variables.
* @var bool
*/
var $SMTPAuth = false;
/**
* Sets SMTP username.
* @var string
*/
var $Username = "";
/**
* Sets SMTP password.
* @var string
*/
var $Password = "";
/**
* Sets the SMTP server timeout in seconds. This function will not
* work with the win32 version.
* @var int
*/
var $Timeout = 10;
/**
* Sets SMTP class debugging on or off.
* @var bool
*/
var $SMTPDebug = false;
/**
* Prevents the SMTP connection from being closed after each mail
* sending. If this is set to true then to close the connection
* requires an explicit call to SmtpClose().
* @var bool
*/
var $SMTPKeepAlive = false;
/**#@+
* @access private
*/
var $smtp = NULL;
var $to = array();
var $cc = array();
var $bcc = array();
var $ReplyTo = array();
var $attachment = array();
var $CustomHeader = array();
var $message_type = "";
var $boundary = array();
var $language = array();
var $error_count = 0;
var $LE = "\n";
/**#@-*/
/////////////////////////////////////////////////
// VARIABLE METHODS
/////////////////////////////////////////////////
/**
* Sets message type to HTML.
* @param bool $bool
* @return void
*/
function IsHTML($bool) {
if($bool == true)
$this->ContentType = "text/html";
else
$this->ContentType = "text/plain";
}
/**
* Sets Mailer to send message using SMTP.
* @return void
*/
function IsSMTP() {
$this->Mailer = "smtp";
}
/**
* Sets Mailer to send message using PHP mail() function.
* @return void
*/
function IsMail() {
$this->Mailer = "mail";
}
/**
* Sets Mailer to send message using the $Sendmail program.
* @return void
*/
function IsSendmail() {
$this->Mailer = "sendmail";
}
/**
* Sets Mailer to send message using the qmail MTA.
* @return void
*/
function IsQmail() {
$this->Sendmail = "/var/qmail/bin/sendmail";
$this->Mailer = "sendmail";
}
/////////////////////////////////////////////////
// RECIPIENT METHODS
/////////////////////////////////////////////////
/**
* Adds a "To" address.
* @param string $address
* @param string $name
* @return void
*/
function AddAddress($address, $name = "") {
$cur = count($this->to);
$this->to[$cur][0] = trim($address);
$this->to[$cur][1] = $name;
}
/**
* Adds a "Cc" address. Note: this function works
* with the SMTP mailer on win32, not with the "mail"
* mailer.
* @param string $address
* @param string $name
* @return void
*/
function AddCC($address, $name = "") {
$cur = count($this->cc);
$this->cc[$cur][0] = trim($address);
$this->cc[$cur][1] = $name;
}
/**
* Adds a "Bcc" address. Note: this function works
* with the SMTP mailer on win32, not with the "mail"
* mailer.
* @param string $address
* @param string $name
* @return void
*/
function AddBCC($address, $name = "") {
$cur = count($this->bcc);
$this->bcc[$cur][0] = trim($address);
$this->bcc[$cur][1] = $name;
}
/**
* Adds a "Reply-to" address.
* @param string $address
* @param string $name
* @return void
*/
function AddReplyTo($address, $name = "") {
$cur = count($this->ReplyTo);
$this->ReplyTo[$cur][0] = trim($address);
$this->ReplyTo[$cur][1] = $name;
}
/////////////////////////////////////////////////
// MAIL SENDING METHODS
/////////////////////////////////////////////////
/**
* Creates message and assigns Mailer. If the message is
* not sent successfully then it returns false. Use the ErrorInfo
* variable to view description of the error.
* @return bool
*/
function Send() {
$header = "";
$body = "";
$result = true;
if((count($this->to) + count($this->cc) + count($this->bcc)) < 1)
{
$this->SetError($this->Lang("provide_address"));
return false;
}
// Set whether the message is multipart/alternative
if(!empty($this->AltBody))
$this->ContentType = "multipart/alternative";
$this->error_count = 0; // reset errors
$this->SetMessageType();
$header .= $this->CreateHeader();
$body = $this->CreateBody();
if($body == "") { return false; }
// Choose the mailer
switch($this->Mailer)
{
case "sendmail":
$result = $this->SendmailSend($header, $body);
break;
case "mail":
$result = $this->MailSend($header, $body);
break;
case "smtp":
$result = $this->SmtpSend($header, $body);
break;
default:
$this->SetError($this->Mailer . $this->Lang("mailer_not_supported"));
$result = false;
break;
}
return $result;
}
/**
* Sends mail using the $Sendmail program.
* @access private
* @return bool
*/
function SendmailSend($header, $body) {
if ($this->Sender != "")
$sendmail = sprintf("%s -oi -f %s -t", $this->Sendmail, $this->Sender);
else
$sendmail = sprintf("%s -oi -t", $this->Sendmail);
if(!@$mail = popen($sendmail, "w"))
{
$this->SetError($this->Lang("execute") . $this->Sendmail);
return false;
}
fputs($mail, $header);
fputs($mail, $body);
$result = pclose($mail) >> 8 & 0xFF;
if($result != 0)
{
$this->SetError($this->Lang("execute") . $this->Sendmail);
return false;
}
return true;
}
/**
* Sends mail using the PHP mail() function.
* @access private
* @return bool
*/
function MailSend($header, $body) {
$to = "";
for($i = 0; $i < count($this->to); $i++)
{
if($i != 0) { $to .= ", "; }
$to .= $this->to[$i][0];
}
if ($this->Sender != "" && strlen(ini_get("safe_mode"))< 1)
{
$old_from = ini_get("sendmail_from");
ini_set("sendmail_from", $this->Sender);
$params = sprintf("-oi -f %s", $this->Sender);
$rt = @mail($to, $this->EncodeHeader($this->Subject), $body,
$header, $params);
}
else
$rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header);
if (isset($old_from))
ini_set("sendmail_from", $old_from);
if(!$rt)
{
$this->SetError($this->Lang("instantiate"));
return false;
}
return true;
}
/**
* Sends mail via SMTP using PhpSMTP (Author:
* Chris Ryan). Returns bool. Returns false if there is a
* bad MAIL FROM, RCPT, or DATA input.
* @access private
* @return bool
*/
function SmtpSend($header, $body) {
//include_once($this->PluginDir . "class.smtp.php");
$error = "";
$bad_rcpt = array();
if(!$this->SmtpConnect())
return false;
$smtp_from = ($this->Sender == "") ? $this->From : $this->Sender;
if(!$this->smtp->Mail($smtp_from))
{
$error = $this->Lang("from_failed") . $smtp_from;
$this->SetError($error);
$this->smtp->Reset();
return false;
}
// Attempt to send attach all recipients
for($i = 0; $i < count($this->to); $i++)
{
if(!$this->smtp->Recipient($this->to[$i][0]))
$bad_rcpt[] = $this->to[$i][0];
}
for($i = 0; $i < count($this->cc); $i++)
{
if(!$this->smtp->Recipient($this->cc[$i][0]))
$bad_rcpt[] = $this->cc[$i][0];
}
for($i = 0; $i < count($this->bcc); $i++)
{
if(!$this->smtp->Recipient($this->bcc[$i][0]))
$bad_rcpt[] = $this->bcc[$i][0];
}
if(count($bad_rcpt) > 0) // Create error message
{
for($i = 0; $i < count($bad_rcpt); $i++)
{
if($i != 0) { $error .= ", "; }
$error .= $bad_rcpt[$i];
}
$error = $this->Lang("recipients_failed") . $error;
$this->SetError($error);
$this->smtp->Reset();
return false;
}
if(!$this->smtp->Data($header . $body))
{
$this->SetError($this->Lang("data_not_accepted"));
$this->smtp->Reset();
return false;
}
if($this->SMTPKeepAlive == true)
$this->smtp->Reset();
else
$this->SmtpClose();
return true;
}
/**
* Initiates a connection to an SMTP server. Returns false if the
* operation failed.
* @access private
* @return bool
*/
function SmtpConnect() {
if($this->smtp == NULL) { $this->smtp = new SMTP(); }
$this->smtp->do_debug = $this->SMTPDebug;
$hosts = explode(";", $this->Host);
$index = 0;
$connection = ($this->smtp->Connected());
// Retry while there is no connection
while($index < count($hosts) && $connection == false)
{
if(strstr($hosts[$index], ":"))
list($host, $port) = explode(":", $hosts[$index]);
else
{
$host = $hosts[$index];
$port = $this->Port;
}
if($this->smtp->Connect($host, $port, $this->Timeout))
{
if ($this->Helo != '')
$this->smtp->Hello($this->Helo);
else
$this->smtp->Hello($this->ServerHostname());
if($this->SMTPAuth)
{
if(!$this->smtp->Authenticate($this->Username,
$this->Password))
{
$this->SetError($this->Lang("authenticate"));
$this->smtp->Reset();
$connection = false;
}
}
$connection = true;
}
$index++;
}
if(!$connection)
$this->SetError($this->Lang("connect_host"));
return $connection;
}
/**
* Closes the active SMTP session if one exists.
* @return void
*/
function SmtpClose() {
if($this->smtp != NULL)
{
if($this->smtp->Connected())
{
$this->smtp->Quit();
$this->smtp->Close();
}
}
}
/**
* Sets the language for all class error messages. Returns false
* if it cannot load the language file. The default language type
* is English.
* @param string $lang_type Type of language (e.g. Portuguese: "br")
* @param string $lang_path Path to the language file directory
* @access public
* @return bool
*/
function SetLanguage($lang_type, $lang_path = "language/") {
if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php'))
include($lang_path.'phpmailer.lang-'.$lang_type.'.php');
else if(file_exists($lang_path.'phpmailer.lang-en.php'))
include($lang_path.'phpmailer.lang-en.php');
else
{
$this->SetError("Could not load language file");
return false;
}
$this->language = $PHPMAILER_LANG;
return true;
}
/////////////////////////////////////////////////
// MESSAGE CREATION METHODS
/////////////////////////////////////////////////
/**
* Creates recipient headers.
* @access private
* @return string
*/
function AddrAppend($type, $addr) {
$addr_str = $type . ": ";
$addr_str .= $this->AddrFormat($addr[0]);
if(count($addr) > 1)
{
for($i = 1; $i < count($addr); $i++)
$addr_str .= ", " . $this->AddrFormat($addr[$i]);
}
$addr_str .= $this->LE;
return $addr_str;
}
/**
* Formats an address cor
