kekskruemel
Angesehenes Mitglied
Hallo,
ich habe ein Problem mit einer PM Funktion auf meiner Webseite. früher hat diese mal funktioniert. Seit dem Umzug auf einen anderen Server (mit u.a. PHP5) funktioniert meine alte php Datei dazu nicht mehr korrekt.
Die Datei versendet für gewöhnlich Pm Nachrichten. Die Nachrichten werden korrekt in die Datenbank eingetragen. Anschließend soll der Nutzer, insofern er dies im Profil aktiviert hat, per Email auf die PM hingewiesen werden.
CODE // Versenden von PM Nachrichten und E-mail Information
if(@$_GET['action'] == "send")
{
$msg = ""; $fehl = 0;
$_SESSION['pm_to'] = @$_POST['pm_to'];
$_SESSION['pm_head'] = @$_POST['pm_head'];
$_SESSION['pm_text'] = @$_POST['text'];
$sel = "SELECT user_login, user_id, user_email, user_pm_get, user_last_pm, user_pm_ignore, user_pm_mail FROM users WHERE user_login = '".$_POST['pm_to']."' ";
$sql = mysql_query($sel);
$ds = mysql_fetch_object($sql);
$array = explode(",",$ds->user_pm_ignore);
if(in_array($_SESSION['sess_user_id'],$array))
{
$msg .= $lang['msg_pm_ignore'];
$fehl++;
}
if(@$_POST['pm_to'] == "")
{
$msg .= $lang['msg_pm_empfae'];
$fehl++;
}
$jetzt = time();
$zeit = $jetzt - $_SESSION['sess_user_last_pm'];
if($zeit <= 60)
{
$msg .= $lang['msg_pm_anti_spam'];
$fehl++;
}
if(@$_POST['text'] == "")
{
$msg .= $lang['msg_pm_notext'];
$fehl++;
}
if($ds->user_pm_get == 0)
{
$msg .= $lang['msg_pm_nopm'];
$fehl++;
}
if(@$_POST['pm_head'] == "")
{
$_POST['pm_head'] = "[".$lang['pm_head_no']."]";
}
if($fehl >= 1)
{
$_GET['action'] = "neu";
}
elseif($fehl == 0)
{
$insert = "INSERT INTO nachrichten (pm_to, pm_from, pm_send, pm_head, pm_text) VALUES (\"".$ds->user_id."\", \"".$_SESSION['sess_user_id']."\", UNIX_TIMESTAMP( ), \"".@$_POST['pm_head']."\", \"".$_POST['text']."\") ";
$i_sql = mysql_query($insert);
if($i_sql)
{
$update = "UPDATE users SET user_last_pm = UNIX_TIMESTAMP( ) WHERE user_id = '".$_SESSION['sess_user_id']."' ";
$u_sql = mysql_query($update);
$ds->user_pm_mail;
if($ds->user_pm_mail == 1)
{
//MAIL SENDEN
// GLOBALE VARIABELN //
global $pm_mail;
////////////////////////////////////////////////
// ALLGEMEINES ZUR EMAIL - LOGO //
////////////////////////////////////////////////
$text = @$_SERVER['REQUEST_URI'];
$treffer = strrchr($text, '/');
$pfad = str_replace($treffer, '', $text);
$server = "<img src='http://".$_SERVER['HTTP_HOST'].$pfad."/img/logo.gif'>";
////////////////////////////////////////////////
$absender = "geaendert@tankcheck.de";
$get_email= $ds->user_email;
$get_name = $ds->user_login;
$tmp_file = TEMPLATE_DIR."/email/".$_SESSION['sess_lang']."_neuepm.html";
$error = $lang['msg_no_template'];
$content = "";
$file = @fopen($tmp_file, "r");
if(!$file)
{
echo $error;
}
else
{
while(!feof($file))
{
$temp = fgets($file, 4096);
$content .= $temp;
}
}
$content = str_replace("{server}", $server, $content);
$content = str_replace("{sender_name}", $_SESSION['sess_user_login'], $content);
$content = str_replace("{get_name}", $get_name, $content);
$content = str_replace("{get_email}", $get_email, $content);
$betreff_detail = $lang['pm_mail_from']." ".$user_detail->user_login." ";
$absender_name = "Tankcheck.de";
$adresse = $get_email;
$betreff = $betreff_detail;
$inhalt = $content;
// Aktueller Pfad
$pfad = get_include_path();
// Pfad erweitern
$pfad .= PATH_SEPARATOR . './phpmailer';
// Pfad setzen
set_include_path($pfad);
// Die Klasse einbinden
require_once 'class.phpmailer.php';
// Das Objekt erzeugen
$mail = new PHPMailer();
// Wenn mit der Language-Datei gearbeitet werden soll,
// dann setzten wir hier die Sprache und Pfad
$mail->SetLanguage ("de", "./phpmailer/language/");
// In den meisten Fällen benutzen wir einen SMTP-Server
$mail->IsSMTP();
// Der SMTP-Server ist der gleiche Server, wie er im Mail-Client
// (Outlook, Pegasus, etc) eingetragen ist
$mail->Host = "Tankcheck.de";
// Meistens wird eine Authentifizierung gebraucht
$mail->SMTPAuth = true;
// Der Benutzername, wie er im Mail-Client eingetragen ist
// Nicht zu verwechseln mit der Mail-Adresse, bei manchen
// Servern ist aber der Benutzername gleich der Adressse
$mail->Username = "nutzername@tankcheck.de";
// Und nun das Passwort, wie es auch im Mail-Client benutzt wird.
$mail->Password = "Password";
// Die Absenderadresse
$mail->From = $absender;
// Der Absendername, nicht zwingend erforderlich
$mail->FromName = "Tankcheck.de Benzinpreisvergleich";
// Die Empfängeradresse eintragen, der zweite Parameter ist optional
$mail->AddAddress($adresse);
// Der Betreff
$mail->Subject = $betreff;
// Wenn man eine HTML-Mail verschicken möchte
$mail->IsHTML(true);
// Der HTML-Body
$mail->Body = $inhalt;
// Also schicken wir die Mail ab
if( ! $mail->Send())
{
// echo "Mailer Error: " . $mail->ErrorInfo;
}
if($mail)
{
return TRUE;
}
elseif(!$mail)
{
return FALSE;
}
}
$_SESSION['pm_to'] = "";
$_SESSION['pm_head'] = "";
$_SESSION['pm_text'] = "";
$_GET['action'] = "eingang";
}
else
{
$_GET['action'] = "neu";
}
}
}
Ich habe bereits von der normalen mail() Funktion auf phpmailer umgestellt. Nun versendet es auch die Emails an den Nutzer. Der Eintrag in die Datenbank funktioniert wie gesagt auch. Aber anstatt am Ende wieder auf den Nachrichteneingang zurück zu gehen bei erfolgreicher Durchführung, zeigt er lediglich eine leere weiße Seite an.
Nehme ich genau den E-Mailversand heraus - so funktioniert alles, aber die Mail wird natürlich dann weggelassen, aber er wechselt korrekterweise in den Posteingang.
Findet jemand den Fehler?
ich habe ein Problem mit einer PM Funktion auf meiner Webseite. früher hat diese mal funktioniert. Seit dem Umzug auf einen anderen Server (mit u.a. PHP5) funktioniert meine alte php Datei dazu nicht mehr korrekt.
Die Datei versendet für gewöhnlich Pm Nachrichten. Die Nachrichten werden korrekt in die Datenbank eingetragen. Anschließend soll der Nutzer, insofern er dies im Profil aktiviert hat, per Email auf die PM hingewiesen werden.
CODE // Versenden von PM Nachrichten und E-mail Information
if(@$_GET['action'] == "send")
{
$msg = ""; $fehl = 0;
$_SESSION['pm_to'] = @$_POST['pm_to'];
$_SESSION['pm_head'] = @$_POST['pm_head'];
$_SESSION['pm_text'] = @$_POST['text'];
$sel = "SELECT user_login, user_id, user_email, user_pm_get, user_last_pm, user_pm_ignore, user_pm_mail FROM users WHERE user_login = '".$_POST['pm_to']."' ";
$sql = mysql_query($sel);
$ds = mysql_fetch_object($sql);
$array = explode(",",$ds->user_pm_ignore);
if(in_array($_SESSION['sess_user_id'],$array))
{
$msg .= $lang['msg_pm_ignore'];
$fehl++;
}
if(@$_POST['pm_to'] == "")
{
$msg .= $lang['msg_pm_empfae'];
$fehl++;
}
$jetzt = time();
$zeit = $jetzt - $_SESSION['sess_user_last_pm'];
if($zeit <= 60)
{
$msg .= $lang['msg_pm_anti_spam'];
$fehl++;
}
if(@$_POST['text'] == "")
{
$msg .= $lang['msg_pm_notext'];
$fehl++;
}
if($ds->user_pm_get == 0)
{
$msg .= $lang['msg_pm_nopm'];
$fehl++;
}
if(@$_POST['pm_head'] == "")
{
$_POST['pm_head'] = "[".$lang['pm_head_no']."]";
}
if($fehl >= 1)
{
$_GET['action'] = "neu";
}
elseif($fehl == 0)
{
$insert = "INSERT INTO nachrichten (pm_to, pm_from, pm_send, pm_head, pm_text) VALUES (\"".$ds->user_id."\", \"".$_SESSION['sess_user_id']."\", UNIX_TIMESTAMP( ), \"".@$_POST['pm_head']."\", \"".$_POST['text']."\") ";
$i_sql = mysql_query($insert);
if($i_sql)
{
$update = "UPDATE users SET user_last_pm = UNIX_TIMESTAMP( ) WHERE user_id = '".$_SESSION['sess_user_id']."' ";
$u_sql = mysql_query($update);
$ds->user_pm_mail;
if($ds->user_pm_mail == 1)
{
//MAIL SENDEN
// GLOBALE VARIABELN //
global $pm_mail;
////////////////////////////////////////////////
// ALLGEMEINES ZUR EMAIL - LOGO //
////////////////////////////////////////////////
$text = @$_SERVER['REQUEST_URI'];
$treffer = strrchr($text, '/');
$pfad = str_replace($treffer, '', $text);
$server = "<img src='http://".$_SERVER['HTTP_HOST'].$pfad."/img/logo.gif'>";
////////////////////////////////////////////////
$absender = "geaendert@tankcheck.de";
$get_email= $ds->user_email;
$get_name = $ds->user_login;
$tmp_file = TEMPLATE_DIR."/email/".$_SESSION['sess_lang']."_neuepm.html";
$error = $lang['msg_no_template'];
$content = "";
$file = @fopen($tmp_file, "r");
if(!$file)
{
echo $error;
}
else
{
while(!feof($file))
{
$temp = fgets($file, 4096);
$content .= $temp;
}
}
$content = str_replace("{server}", $server, $content);
$content = str_replace("{sender_name}", $_SESSION['sess_user_login'], $content);
$content = str_replace("{get_name}", $get_name, $content);
$content = str_replace("{get_email}", $get_email, $content);
$betreff_detail = $lang['pm_mail_from']." ".$user_detail->user_login." ";
$absender_name = "Tankcheck.de";
$adresse = $get_email;
$betreff = $betreff_detail;
$inhalt = $content;
// Aktueller Pfad
$pfad = get_include_path();
// Pfad erweitern
$pfad .= PATH_SEPARATOR . './phpmailer';
// Pfad setzen
set_include_path($pfad);
// Die Klasse einbinden
require_once 'class.phpmailer.php';
// Das Objekt erzeugen
$mail = new PHPMailer();
// Wenn mit der Language-Datei gearbeitet werden soll,
// dann setzten wir hier die Sprache und Pfad
$mail->SetLanguage ("de", "./phpmailer/language/");
// In den meisten Fällen benutzen wir einen SMTP-Server
$mail->IsSMTP();
// Der SMTP-Server ist der gleiche Server, wie er im Mail-Client
// (Outlook, Pegasus, etc) eingetragen ist
$mail->Host = "Tankcheck.de";
// Meistens wird eine Authentifizierung gebraucht
$mail->SMTPAuth = true;
// Der Benutzername, wie er im Mail-Client eingetragen ist
// Nicht zu verwechseln mit der Mail-Adresse, bei manchen
// Servern ist aber der Benutzername gleich der Adressse
$mail->Username = "nutzername@tankcheck.de";
// Und nun das Passwort, wie es auch im Mail-Client benutzt wird.
$mail->Password = "Password";
// Die Absenderadresse
$mail->From = $absender;
// Der Absendername, nicht zwingend erforderlich
$mail->FromName = "Tankcheck.de Benzinpreisvergleich";
// Die Empfängeradresse eintragen, der zweite Parameter ist optional
$mail->AddAddress($adresse);
// Der Betreff
$mail->Subject = $betreff;
// Wenn man eine HTML-Mail verschicken möchte
$mail->IsHTML(true);
// Der HTML-Body
$mail->Body = $inhalt;
// Also schicken wir die Mail ab
if( ! $mail->Send())
{
// echo "Mailer Error: " . $mail->ErrorInfo;
}
if($mail)
{
return TRUE;
}
elseif(!$mail)
{
return FALSE;
}
}
$_SESSION['pm_to'] = "";
$_SESSION['pm_head'] = "";
$_SESSION['pm_text'] = "";
$_GET['action'] = "eingang";
}
else
{
$_GET['action'] = "neu";
}
}
}
Ich habe bereits von der normalen mail() Funktion auf phpmailer umgestellt. Nun versendet es auch die Emails an den Nutzer. Der Eintrag in die Datenbank funktioniert wie gesagt auch. Aber anstatt am Ende wieder auf den Nachrichteneingang zurück zu gehen bei erfolgreicher Durchführung, zeigt er lediglich eine leere weiße Seite an.
Nehme ich genau den E-Mailversand heraus - so funktioniert alles, aber die Mail wird natürlich dann weggelassen, aber er wechselt korrekterweise in den Posteingang.
Findet jemand den Fehler?