Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 13
Seite [1]
Marckrele


Try to beat me




Herkunft: H-U
Beiträge: 180
# Thema - 09.05.2007 um 01:01 Uhr
Hi,
ich hoffe mal daß ich hier im richtigen Forum bin, gefunden hab ich auch nix via SuFu zu meinem Problem.

"Vorwort":

Es geht darum, daß ich in einem Post hier, etwas gelesen hatte bzgl. Entfernen des "Registrierung"-Link im Login, damit, ich glaube, "Join Us" genutzt wird. Dort war der Person geschrieben worden, wo sie was zu löschen hat, damit es weg ist.
Nun ja, zuerst wollte ich das auch machen, hatte mich dann aber entschieden zu testen, ob ich den link nicht lösche, sondern ihn auf "Join Us" umzuleiten. Klappt auch wunderbar.
Der Grund ist einfach ein wenig mehr Kontrolle zu haben und die Leute eigenständig zu aktivieren. Hinzu kommt, daß ich "Benutzer" für andere Zwecke frei habe, z.B. 5 Admin, 4 Moderatoren, 3 Gildenmitglieder, 2 Bündnispartner, 1 Besucher.

Thema:

Als ich nun 2 unserer Gildenmitglieder, die sich die Tage via "Join Us" registriert hatten, konvertiert hatte und ihnen die Daten per email zusenden wollte kam:
Warning: mail() has been disabled for security reasons in /var/www/users/rpggamer/VisMentis/system/core/tools.php on line 278

Erstmal dachte ich "Sch..e, was hab ich nun verkehrt gemacht?" und wollte hier schon nachfragen.
Bin dann aber irgendwie bei meinem Hoster kilu2.de im Forum gelandet und auf ein Thema gestossen, wo berichtet wurde, daß die mail()-Funktion aus Sicherheitsgründen ausgeschaltet wurde.
Wie dies zu lösen sei stehe nachfolgend:

Link zum Thema:Wie sende ich eine E-Mail ohne mail()?

2. Man hat seine Homepage selbst gecodet und verwendete zuvor mail()
Füge folgendes Script einfach in jede Seite, die Mails verschicken soll ein, oder in ein config-File, das überall includet wird:

http://killerfaultier.kilu.de/smtp_mailer.txt

ändere die variablen: $smtp_host, $smtp_username, $smtp_password und $adsender
Nun kannst du Mails über die Funktion smtpmail() verschicken

P.S. Die smtpmail() Funktion stammt von einem phpbb und wurde leicht modifiziert.


Das ist das genannte Script
... +-
function server_parse($socket, $response, $line = __LINE__)
{
$server_response = '';
while (substr($server_response, 3, 1) != ' ')
{
if (!($server_response = fgets($socket, 256)))
{
echo 'Couldn\'t get mail server response codes<br />';
}
}

if (!(substr($server_response, 0, 3) == $response))
{
echo "Ran into problems sending Mail. Response: $server_response<br />";
}
}

function smtpmail($mail_to, $subject, $message, $headers = '')
{
$smtp_host = 'smtp.googlemail.com';
$smtp_username = '';
$smtp_password = '';
$absender = '';

$message = preg_replace("#(?<!\r)\n#si", "\r\n", $message);
if ($headers != '')
{
if (is_array($headers))
{
if (sizeof($headers) > 1)
{
$headers = join("\n", $headers);
}
else
{
$headers = $headers[0];
}
}
$headers = chop($headers);
$headers = preg_replace('#(?<!\r)\n#si', "\r\n", $headers);
$header_array = explode("\r\n", $headers);
@reset($header_array);

$headers = '';
while(list(, $header) = each($header_array))
{
if (preg_match('#^cc:#si', $header))
{
$cc = preg_replace('#^cc:(.*)#si', '\1', $header);
}
else if (preg_match('#^bcc:#si', $header))
{
$bcc = preg_replace('#^bcc:(.*)#si', '\1', $header);
$header = '';
}
$headers .= ($header != '') ? $header . "\r\n" : '';
}

$headers = chop($headers);
$cc = explode(', ', $cc);
$bcc = explode(', ', $bcc);
}

if (trim($subject) == '')
{
echo 'No email Subject specified<br />';
}

if (trim($message) == '')
{
echo 'Email message was blank<br />';
}

if( !$socket = @fsockopen($smtp_host, 25, $errno, $errstr, 20) )
{
echo "Could not connect to smtp host : $errno : $errstr<br />";
}

server_parse($socket, "220", __LINE__);

if( !empty($smtp_username) && !empty($smtp_password) )
{
fputs($socket, "HELO " . $smtp_host . "\r\n");
server_parse($socket, "250", __LINE__);

fputs($socket, "AUTH LOGIN\r\n");
server_parse($socket, "334", __LINE__);

fputs($socket, base64_encode($smtp_username) . "\r\n");
server_parse($socket, "334", __LINE__);

fputs($socket, base64_encode($smtp_password) . "\r\n");
server_parse($socket, "235", __LINE__);
}
else
{
fputs($socket, "EHLO " . $smtp_host . "\r\n");
server_parse($socket, "250", __LINE__);
}

fputs($socket, "MAIL FROM: <" . $absender . ">\r\n");
server_parse($socket, "250", __LINE__);

$to_header = '';

$mail_to = (trim($mail_to) == '') ? 'Undisclosed-recipients:;' : trim($mail_to);
if (preg_match('#[^ ]+\@[^ ]+#', $mail_to))
{
fputs($socket, "RCPT TO: <$mail_to>\r\n");
server_parse($socket, "250", __LINE__);
}

@reset($bcc);
if (isset($bcc))
{
while(list(, $bcc_address) = each($bcc))
{
$bcc_address = trim($bcc_address);
if (preg_match('#[^ ]+\@[^ ]+#', $bcc_address))
{
fputs($socket, "RCPT TO: <$bcc_address>\r\n");
server_parse($socket, "250", __LINE__);
}
}
}

@reset($cc);
if (isset($cc))
{
while(list(, $cc_address) = each($cc))
{
$cc_address = trim($cc_address);
if (preg_match('#[^ ]+\@[^ ]+#', $cc_address))
{
fputs($socket, "RCPT TO: <$cc_address>\r\n");
server_parse($socket, "250", __LINE__);
}
}
}

fputs($socket, "DATA\r\n");

server_parse($socket, "354", __LINE__);

fputs($socket, "Subject: $subject\r\n");

fputs($socket, "To: $mail_to\r\n");

fputs($socket, "$headers\r\n\r\n");

fputs($socket, "$message\r\n");

fputs($socket, ".\r\n");
server_parse($socket, "250", __LINE__);

fputs($socket, "QUIT\r\n");
fclose($socket);

return true;
}


Meine Fragen sind nun:
  1. Taugt das Script was für CS 07 RC3?
  2. Wenn ja, wo muß das hin, bzw. wo muß ich was ändern?
  3. Gibt es eine andere Möglichkeit, wo ich an welchen Dateien was ändern muß?

Betroffen wäre davon ja die "Newsletter" und "Join Us"

Gruß, Marckrele


------------------
Ohne Ordnung wird jedes Universum im Chaos verglühen, und ohne Chaos wird jedes Universum in Ordnung erstarren.
Sind sie nicht aufeinander angewiesen?
Ruumaytron PR Nr. 2382



Zuletzt editiert von Marckrele am 09.05.2007 um 01:04 Uhr (1x Editiert)
Inaktiv
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 1 - 09.05.2007 um 01:14 Uhr
joah, würde eben über nen anderen host, glaube googlemail, die mails verschicken.
steht ja dort dabei.

müsstest eigentlich nur cs_mail (die funktion) überarbeiten.

gruß

duRiel


Inaktiv
|
Marckrele
Thread-Ersteller


Try to beat me




Herkunft: H-U
Beiträge: 180
# Antwort: 2 - 09.05.2007 um 02:36 Uhr
Was meinst du genau mit die Funktion überarbeiten?
Sorry, aber wenn man mich nicht an die Hand nimmt ( zB Anleitung wie wo was ändern), bin ich zu nix zu gebrauchen . Script-Noob-10hochUnendlich , als ich früher inner Schule mit Computer & "Programmen" zu tun hatte, eckten gewissen geometrische Formen am Bildschirmrand an und gingen in einem bestimmten Winkel zum nächsten Rand ( Bildschirmschoner lässt grüßen) und 5 1/4"-Floppy-Disk-Laufwerke und C 64 waren das NonPlusUltra

Das sind die Zeilen 267 -280 in der /system/core/tools.php:

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
1. / 2. / ... 
<?php function cs_mail($email,$title,$message,$from 0,$type 0) {

    global 
$cs_main$com_lang;
    
$subject $cs_main['def_org'] . ' - ' $title;
    
$headers "MIME-Version: 1.0\r\n";
    
$type = empty($type) ? 'text/plain' $type;
    
$headers .= "Content-type: " $type "; charset=" $com_lang['charset'] . "\r\n";
    
$from = empty($from) ? $cs_main['def_mail'] : $from;
    
$headers .= "From: " $from "\r\nReply-To: " $from "\r\n";
    
$headers .= "X-Mailer: PHP/" phpversion();

    
$result mail($email,$subject,$message,$headers) ? TRUE FALSE;
    return 
$result;
?>

Ersetzte ich die nun komplett durch o.g. Script, oder wo muß ich nun was ändern, was muß stehen bleiben? Oder könnte mir das jemand so umschreiben, daß es passt?

Gruß, Marckrele


------------------
Ohne Ordnung wird jedes Universum im Chaos verglühen, und ohne Chaos wird jedes Universum in Ordnung erstarren.
Sind sie nicht aufeinander angewiesen?
Ruumaytron PR Nr. 2382



Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 3 - 09.05.2007 um 17:42 Uhr
erstell am besten ne neue datei unter system/core/ mit der dateiendung .php
dort fügst du das script, den smtp mailer, ein und passt gerade die variablen an die im kilu board genannt werden.
dann schreibst du in der funktion cs_mail lediglich statt der zeile $result = mail(...) $result = smtpmail(...)
das was in der klammer steht bleibt gleich.
dann muss die datei noch eingebunden werden, das machst du in der index.php.

gruß

duRiel


Inaktiv
|
Marckrele
Thread-Ersteller


Try to beat me




Herkunft: H-U
Beiträge: 180
# Antwort: 4 - 09.05.2007 um 20:38 Uhr
"duRiel" : dann muss die datei noch eingebunden werden, das machst du in der index.php


index.php:
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
1. / 2. / ... 
<?php
// ClanSphere 2007 - www.clansphere.net
// $Id: index.php 101 2006-07-12 09:36:29Z hajo $

@error_reporting(E_ALL);

@
ini_set('arg_separator.output','&');
@
ini_set('register_globals','off');
@
ini_set('session.use_trans_sid','0');
@
ini_set('session.use_cookies','1');
@
ini_set('session.use_only_cookies','1');
@
ini_set('display_errors','off');
@
ini_set('magic_quotes_runtime','off');

$cs_micro explode(' 'microtime()); # starting parsetime
$cs_logs = array('errors' => '''sql' => '''queries' => 0);

require(
'system/core/functions.php');

if(
file_exists('setup.php')) {
    require(
'setup.php');
    require(
'system/database/' $cs_db['type'] . '.php');
    
$cs_db['con'] = cs_sql_connect($cs_db);

    
$cs_main cs_sql_option(__FILE__,'clansphere');

    require(
'system/output/xhtml_10.php');
    require(
'system/core/templates.php');
    require(
'system/core/content.php');
    require(
'system/core/tools.php');
    require(
'system/core/account.php');
    require(
'system/core/abcode.php');

    
cs_tasks('system/extensions'1); # load extensions
    
cs_tasks('system/runstartup'); # load startup files

    
echo cs_template($cs_micro,$cs_main,$account);
}
else {
    echo 
'<a href="install.php">Installation required</a> or missing setup.php';
}

?>


Einbinden indem ich wie bei Zeile 29- 34
 
1.
1. / 2. / ... 
<?php      require('system/core/smtpmail.php'); ?>
einfüge oder wie meinst du das?

Gruß, Marckrele


------------------
Ohne Ordnung wird jedes Universum im Chaos verglühen, und ohne Chaos wird jedes Universum in Ordnung erstarren.
Sind sie nicht aufeinander angewiesen?
Ruumaytron PR Nr. 2382



Inaktiv
|
Denni


Specialist




Herkunft: Ilsfeld
Beiträge: 1972
# Antwort: 5 - 09.05.2007 um 20:39 Uhr
ja genau


------------------
Gruß
Denni

ClanSphere - Makes your website a playmate, just dress her

Inaktiv
|
Marckrele
Thread-Ersteller


Try to beat me




Herkunft: H-U
Beiträge: 180
# Antwort: 6 - 09.05.2007 um 22:07 Uhr
ty für die Antwort.
Hatte es auch vorher schon mal so probiert, aber als ich die Fehlermeldung gesehen hatte, die nun oben steht, dachte ich mir, ich frage lieber nach

Da ich ähnlich Fehlermeldungen bei anderen im Thema des Kilu-Forums gesehen habe, habe ich da jetzt mal nach Hilfe geschriehen, es liegt ja nicht an dem CMS sondern an "wasweißdennich".


Edit: argh, "wasweißdennich" müßte ich eher in "wasweißdennichnicht" umbenennen. Hatte <?php am anfang und ?> am Ende der neuen smtpmail.php vergessen . Gibts für PHP und Co eigentlich VHS-Kurse ?

Naja nun funktioniert alles soweit einwandfrei, Emails klappen!
Ein großes DANKE für eure Hilfe!


Ach ja, wer es sich selbst ansehen will:
Wäre das denn nicht eigentlich eine wünschenswerte Option, wenn man in den Admin-Optionen von ClanSphere wählen könnte, wie der Email-Verkehr abgewickelt wird?
Oder bin ich da zu blauäugig und es wäre ein s...ugroßer Aufwand?

Gruß, Marckrele


------------------
Ohne Ordnung wird jedes Universum im Chaos verglühen, und ohne Chaos wird jedes Universum in Ordnung erstarren.
Sind sie nicht aufeinander angewiesen?
Ruumaytron PR Nr. 2382



Zuletzt editiert von Marckrele am 11.05.2007 um 01:49 Uhr (1x Editiert)
Inaktiv
|
winnetou1977


Try to beat me




Beiträge: 142
# Antwort: 7 - 04.04.2009 um 11:22 Uhr
Hallo, habe mal ne Frage dazu,

ich habe es jetzt auch versucht, aber leider wenn ich die index.php hochlade erscheint bei mir nur noch ein weißer bildschirm, woran liegt das ?


Inaktiv
|
fay-pain


Specialist




Beiträge: 2006
# Antwort: 8 - 04.04.2009 um 11:27 Uhr
ClanSphere 2009 RC1?


------------------
Manchmal hast du fay und machmal pain.
- hajo

Inaktiv
|
SCHIRI ClanSphere Team


Weltmeister



Herkunft: Hamburg
Beiträge: 5299
# Antwort: 9 - 04.04.2009 um 11:28 Uhr
daran, dass du bei den Änderungen wohl irgendein Zeichen vergessen oder zu viel geschrieben hast, oder dir sonst irgendein Fehler unterlaufen ist. Lässt sich aber nicht so genau sagen, ohne das selbst zu sehen.


------------------
www.laszlokorte.de

Inaktiv
|
fay-pain


Specialist




Beiträge: 2006
# Antwort: 10 - 04.04.2009 um 11:37 Uhr
ne ne^^
die index.php kann in 2009 RC1 nicht mehr so übernommen werden. ist ja jetzt in der core/functions.php in der init funktion umgebaut


------------------
Manchmal hast du fay und machmal pain.
- hajo

Inaktiv
|
winnetou1977


Try to beat me




Beiträge: 142
# Antwort: 11 - 04.04.2009 um 12:10 Uhr
nein benutzen tue ich Clansphere 2008.2.1

hier die geänderte index.php

habe hier die Zeile 34 hinzugefügt.

die smtpmail.php in system/core sieht wie folgt aus

mehr... +-
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
1. / 2. / ... 
<?php
// ********************************************************************************************************************************
// smtp mail Funktion for kilu user, modifiziert by das Ass 22.03.2008 http://dasass.kilu.de/smtp.txt
// ********************************************************************************************************************************
$name "Absendername"// optional
$email "xxx@web.de";
$smtphost 'smtp.web.de'
$smtpuser 'xxx'
$smtppass 'xxx'
$mailfrom 'xxx@web.de';

if(
strtoupper(substr(PHP_OS,0,3)=='WIN')) {  
$eol="\r\n";  

elseif (
strtoupper(substr(PHP_OS,0,3)=='MAC')) {  
$eol="\r";  

else {  
$eol="\n";  
}

function 
mailserverparse$socket$response ) {
$server_response null;
  while( 
substr$server_response3) != ' ' 
    if( !( 
$server_response fgets$socket256 ) ) )
      
trigger_error(  'can not get mail server response codes' );
    if( !( 
substr$server_response0) == $response ) )
      
trigger_error'ran into problems sending mail. response: '.$server_response );
return 
true;
}

function 
sendmail$to$subject$message$headers ) {
    global 
$smtphost$smtpuser$smtppass$mailfrom$eol
        
        if( !
$socket = @fsockopen$smtphost25$errno$errstr20 ) )
            
trigger_error"Could not connect to smtp host: {$errno}:{$errstr});
        
        if( 
trim$subject ) == null )
            
trigger_error'no email Subject specified' );
        
        
$message preg_replace"#(?<!\r)\n#si""\r\n"$message );
        if( 
trim$message ) == null )
            
trigger_error'message was blank' );
        
        if( !
preg_match'#^from:#i'$headers ) && empty( $mailfrom ) )
            
trigger_error'no FROM header set' );
        
        
mailserverparse$socket'220' );
        
fputs$socket"HELO ".$smtphost.$eol );
        
mailserverparse$socket'250' );
        
        if( !empty( 
$smtpuser ) && !empty( $smtppass ) ) { 
            
fputs$socket"AUTH LOGIN".$eol );
            
mailserverparse($socket'334' );
            
fputs$socketbase64_encode$smtpuser ).$eol );
            
mailserverparse($socket'334' );
            
fputs$socketbase64_encode$smtppass ).$eol );
            
mailserverparse$socket'235' );
        }
        
        if( 
$headers != null ) {
            
$headers rtrim$headers );
            
$headers preg_replace'#(?<!\r)\n#si'$eol$headers );
            
$header_array explode$eol$headers );
            
$headers null;
            
$cc null;
            
$bcc null;
            foreach( 
$header_array as $header ) {
                if ( 
preg_match'#^cc:#si'$header ) )
                    
$cc preg_replace('#^cc:(.*)#si''\1'$header);
                elseif( 
preg_match'#^bcc:#si'$header ) ) {
                    
$bcc preg_replace('#^bcc:(.*)#si''\1'$header);
                    
$header null;
                }
                
$headers .= ( $header != null )?$header.$eol:null;
            }
            
$headers rtrim$headers );
            
$cc explode', '$cc );
            
$bcc explode', '$bcc );
        }
        
        
fputs$socket"MAIL FROM: <".$mailfrom.">".$eol );
        
mailserverparse$socket'250' );
        
        
$to = empty( $to )?'Undisclosed-recipients:;':trim$to );
        if( 
preg_match'#[^ ]+\@[^ ]+#'$to ) ) {
            
fputs$socket"RCPT TO: ".$to.$eol );
            
mailserverparse$socket'250' );
        }
        if( 
is_array$bcc ) )
            foreach( 
$bcc as $address ) {
                
$address trim$address );
                if( 
preg_match'#[^ ]+\@[^ ]+#'$address ) ) {
                    
fputs$socket"RCPT TO: ".$address.$eol );
                    
mailserverparse$socket'250' );
                }
            }
        if( 
is_array$cc ) )
            foreach( 
$cc as $address ) {
                
$address trim$address );
                if( 
preg_match'#[^ ]+\@[^ ]+#'$address ) ) {
                    
fputs$socket"RCPT TO: ".$address.$eol );
                    
mailserverparse$socket'250' );
                }
            }
        
        
fputs$socket"DATA".$eol );
        
mailserverparse$socket'354' );
        
        
fputs$socket"Subject: ".$subject.$eol );
        
fputs$socket"To: ".$to.$eol );
        
fputs$socket$headers.$eol.$eol );
        
fputs$socket$message.$eol );
        
fputs$socket".".$eol );
        
        
mailserverparse$socket'250' );
        
        
fputs$socket"QUIT".$eol );
        
fclose$socket );
        
return 
true;
}


// Funktionsaufruf zum Senden
      
$headers ="From: ".(($name)?$name:"Absender")." <".$email.">".$eol;
      
sendmail$mailfrom$subject$comment$headers );

?>

und die geänderten Zeilen in der system/core/tools.php sieht so aus

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
1. / 2. / ... 
<?php function cs_mail($email,$title,$message,$from 0,$type 0) {

    global 
$cs_main$com_lang;
    
$subject $cs_main['def_org'] . ' - ' $title;
    
$from = empty($from) ? $cs_main['def_mail'] : $from;
    
$type = empty($type) ? 'text/plain' $type;
    
$headers "From: " $from "\r\n";
    
$headers .= "Content-type: " $type "; charset=" $com_lang['charset'];
    
$headers .= "Reply-To: " $from;
    
$headers .= "MIME-Version: 1.0";    
    
$headers .= "X-Mailer: PHP/" phpversion();

    
$result smtpmail($email,$subject,$message,$headers) ? TRUE FALSE;
    return 
$result;
?>


edit von duRiel: wir haben hier nicht umsonst bbcodes..
Dateianhänge:
php index.php (1.46 KiB - 32 mal heruntergeladen )


Zuletzt editiert von duRiel ClanSphere Team am 04.04.2009 um 14:15 Uhr (5x Editiert)
Inaktiv
|
liesmich.txt


Beginner




Beiträge: 8
# Antwort: 12 - 11.05.2009 um 15:39 Uhr
Hallo,

ich bin auch an diesem Script interessiert... jedoch habe ich schon 2009 RC2 und dort ist die index.php wieder anders.
Wo müsste dort der require Eintrag rein?


Inaktiv
|
hajo ClanSphere Team


VIP - Poster




Herkunft: Barsbüttel
Beiträge: 9411
# Antwort: 13 - 11.05.2009 um 18:04 Uhr
postet das sonst mal als trac wunsch, vll nicht schlecht wenn man das in den clansphere optionen einstellen und wechseln kann


------------------
ClanSphere - professional clan care starts here

Inaktiv
|
Antworten: 13
Seite [1]


Sie müssen sich registrieren, um zu antworten.