MyBB.de Forum

Normale Version: Kontaktformular erweitern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Community,

das Problem ist doch nicht beseitigt. Folgendes möchte ich machen:

Ich habe das Kontaktformular soweit bearbeitet, dass ich den Betreff gelöscht habe und zwei Kategorien mit den Namen: Ingame Name und GUID hinzugefügt hab. Die PHP Datei habe ich auch soweit erfolgreich bearbeitet und in der MySQL Datenbank die beiden hinzugefügt, allerdings kommt bei der Email immer noch nicht das gewünschte Ergebnis.

Hier mal die beiden Dateien:


Code:
<html>
<head>
<title>{$mybb->settings['bbname']} - {$lang->contact}</title>
{$headerinclude}
</head>
<body>
{$header}
<form action="contact.php" method="post">
    <input type="hidden" name="my_post_key" value="{$mybb->post_code}" />
    {$errors}
    <table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
        <tr>
        <td class="thead" colspan="2"><strong>{$lang->contact}</strong></td>
        </tr>
       <tr>
        <td class="trow1" valign="top"><strong>Ingame Name:</strong><br /><span class="smalltext">Wie lautet dein Ingame Name.</span></td>
        <td class="trow1"><input type="text" name="ingame" class="textbox" size="49" value="{$mybb->input['ingame']}" /></td>
        </tr>
       <tr>
        <td class="trow2" valign="top"><strong>GUID:</strong><br /><span class="smalltext">Deine GUID muss genau 32 Stellen betragen.</span></td>
        <td class="trow2"><input type="text" name="guid" class="textbox" size="49" value="{$mybb->input['guid']}" /></td>
        </tr>
        <tr>
        <td class="trow1" valign="top"><strong>Bewerbung:</strong><br /><span class="smalltext">Schreibe uns eine kleine Bewerbung warum wir genau dich Whitelisten sollen.</span></td>
        <td class="trow1"><textarea cols="50" rows="10" name="message" class="textarea" >{$mybb->input['message']}</textarea></td>
        </tr>
        <tr>
        <td class="trow2" valign="top"><strong>{$lang->contact_email}:</strong><br /><span class="smalltext">{$lang->contact_email_desc}</span></td>
        <td class="trow2"><input type="text" name="email" class="textbox" size="49" value="{$mybb->input['email']}" /></td>
        </tr>
        {$captcha}
    </table>
    <br />
    <div align="center">
        <input type="submit" class="button" name="submit" value="{$lang->contact_send}" />
    </div>
</form>
{$footer}
</body>
</html>

PHP-Code:
<?php
/**
 * MyBB 1.8
 * Copyright 2014 MyBB Group, All Rights Reserved
 *
 * Website: http://www.mybb.com
 * License: http://www.mybb.com/about/license
 *
 */

define("IN_MYBB"1);
define('THIS_SCRIPT''contact.php');

$templatelist "contact,post_captcha";

require_once 
"./global.php";
require_once 
MYBB_ROOT.'inc/class_captcha.php';

// Load global language phrases
$lang->load("contact");

$plugins->run_hooks('contact_start');

// Make navigation
add_breadcrumb($lang->contact"contact.php");

if(
$mybb->settings['contact'] != || (!$mybb->user['uid'] && $mybb->settings['contact_guests'] == 1))
{
    
error_no_permission();
}

// Check group limits
if($mybb->usergroup['maxemails'] > 0)
{
    if(
$mybb->user['uid'] > 0)
    {
        
$user_check "fromuid='{$mybb->user['uid']}'";
    }
    else
    {
        
$user_check "ipaddress=".$db->escape_binary($session->packedip);
    }

    
$query $db->simple_select("maillogs""COUNT(*) AS sent_count""{$user_check} AND dateline >= '".(TIME_NOW - (60*60*24))."'");
    
$sent_count $db->fetch_field($query"sent_count");
    if(
$sent_count >= $mybb->usergroup['maxemails'])
    {
        
$lang->error_max_emails_day $lang->sprintf($lang->error_max_emails_day$mybb->usergroup['maxemails']);
        
error($lang->error_max_emails_day);
    }
}

// Check email flood control
if($mybb->usergroup['emailfloodtime'] > 0)
{
    if(
$mybb->user['uid'] > 0)
    {
        
$user_check "fromuid='{$mybb->user['uid']}'";
    }
    else
    {
        
$user_check "ipaddress=".$db->escape_binary($session->packedip);
    }

    
$timecut TIME_NOW-$mybb->usergroup['emailfloodtime']*60;

    
$query $db->simple_select("maillogs""mid, dateline""{$user_check} AND dateline > '{$timecut}'", array('order_by' => "dateline"'order_dir' => "DESC"));
    
$last_email $db->fetch_array($query);

    
// Users last email was within the flood time, show the error
    
if($last_email['mid'])
    {
        
$remaining_time = ($mybb->usergroup['emailfloodtime']*60)-(TIME_NOW-$last_email['dateline']);

        if(
$remaining_time == 1)
        {
            
$lang->error_emailflooding $lang->sprintf($lang->error_emailflooding_1_second$mybb->usergroup['emailfloodtime']);
        }
        elseif(
$remaining_time 60)
        {
            
$lang->error_emailflooding $lang->sprintf($lang->error_emailflooding_seconds$mybb->usergroup['emailfloodtime'], $remaining_time);
        }
        elseif(
$remaining_time 60 && $remaining_time 120)
        {
            
$lang->error_emailflooding $lang->sprintf($lang->error_emailflooding_1_minute$mybb->usergroup['emailfloodtime']);
        }
        else
        {
            
$remaining_time_minutes ceil($remaining_time/60);
            
$lang->error_emailflooding $lang->sprintf($lang->error_emailflooding_minutes$mybb->usergroup['emailfloodtime'], $remaining_time_minutes);
        }

        
error($lang->error_emailflooding);
    }
}

$errors = array();

$mybb->input['message'] = trim_blank_chrs($mybb->get_input('message'));
$mybb->input['email'] = trim_blank_chrs($mybb->get_input('email'));

if(
$mybb->request_method == "post")
{
    
// Verify incoming POST request
    
verify_post_check($mybb->get_input('my_post_key'));

    
$plugins->run_hooks('contact_do_start');

    
// Validate input
    

    
if(empty($mybb->input['message']))
    {
        
$errors[] = $lang->contact_no_message;
    }

    if(
strlen($mybb->input['message']) > $mybb->settings['contact_maxmessagelength'] && $mybb->settings['contact_maxmessagelength'] > 0)
    {
        
$errors[] = $lang->sprintf($lang->message_too_long$mybb->settings['contact_maxmessagelength'], strlen($mybb->input['message']));
    }

    if(
strlen($mybb->input['message']) < $mybb->settings['contact_minmessagelength'] && $mybb->settings['contact_minmessagelength'] > 0)
    {
        
$errors[] = $lang->sprintf($lang->message_too_short$mybb->settings['contact_minmessagelength'], strlen($mybb->input['message']));
    }

    if(empty(
$mybb->input['email']))
    {
        
$errors[] = $lang->contact_no_email;
    }
    else
    {
        
// Validate email
        
if(!validate_email_format($mybb->input['email']))
        {
            
$errors[] = $lang->contact_no_email;
        }
    }

    
// Should we have a CAPTCHA? Perhaps yes...
    
if($mybb->settings['captchaimage'])
    {
        
$captcha = new captcha;

        if(
$captcha->validate_captcha() == false)
        {
            
// CAPTCHA validation failed
            
foreach($captcha->get_errors() as $error)
            {
                
$errors[] = $error;
            }
        }
    }

    if(!
$mybb->user['uid'] && $mybb->settings['stopforumspam_on_contact'])
    {
        require_once 
MYBB_ROOT '/inc/class_stopforumspamchecker.php';

        
$stop_forum_spam_checker = new StopForumSpamChecker(
            
$plugins,
            
$mybb->settings['stopforumspam_min_weighting_before_spam'],
            
$mybb->settings['stopforumspam_check_usernames'],
            
$mybb->settings['stopforumspam_check_emails'],
            
$mybb->settings['stopforumspam_check_ips'],
            
$mybb->settings['stopforumspam_log_blocks']
        );

        try {
            if(
$stop_forum_spam_checker->is_user_a_spammer(''$mybb->input['email'], get_ip()))
            {
                
$errors[] = $lang->error_stop_forum_spam_spammer;
            }
        }
        catch (
Exception $e)
        {
            if(
$mybb->settings['stopforumspam_block_on_error'])
            {
                
$errors[] = $lang->error_stop_forum_spam_fetching;
            }
        }
    }

    if(empty(
$errors))
    {
        if(
$mybb->settings['contact_badwords'] == 1)
        {
            
// Load the post parser
            
require_once MYBB_ROOT."inc/class_parser.php";
            
$parser = new postParser;

            
$parser_options = array(
                
'filter_badwords' => 1
            
);

            
$mybb->input['subject'] = $parser->parse_message($mybb->input['subject'], $parser_options);
            
$mybb->input['ingame'] = $parser->parse_message($mybb->input['ingame'], $parser_options);
            
$mybb->input['guid'] = $parser->parse_message($mybb->input['guid'], $parser_options);
            
$mybb->input['message'] = $parser->parse_message($mybb->input['message'], $parser_options);
        }

        
$user $lang->na;
        if(
$mybb->user['uid'])
        {
            
$user $mybb->user['username'].' - '.$mybb->settings['bburl'].'/'.get_profile_link($mybb->user['uid']);
        }

        
$ingame $lang->sprintf($lang->email_contact_ingame$mybb->input['ingame']);
        
$guid $lang->sprintf($lang->email_contact_guid$mybb->input['guid']);
        
$message $lang->sprintf($lang->email_contact$user$session->ipaddress$mybb->input['message']);

        
// Email the administrator
        
my_mail($mybb->settings['adminemail'], Whitelist$message$mybb->input['email']);

        
$plugins->run_hooks('contact_do_end');

        if(
$mybb->settings['mail_logging'] > 0)
        {
            
// Log the message
            
$log_entry = array(
                
"ingame" => $db->escape_string($ingame),
                
"guid" => $db->escape_string($guid),
                
"message" => $db->escape_string($message),
                
"dateline" => TIME_NOW,
                
"fromuid" => $mybb->user['uid'],
                
"fromemail" => $db->escape_string($mybb->input['email']),
                
"touid" => 0,
                
"toemail" => $db->escape_string($mybb->settings['adminemail']),
                
"tid" => 0,
                
"ipaddress" => $db->escape_binary($session->packedip),
                
"type" => 3
            
);
            
$db->insert_query("maillogs"$log_entry);
        }

        
// Redirect
        
redirect('contact.php'$lang->contact_success_message);
    }
    else
    {
        
$errors inline_error($errors);
    }
}

if(empty(
$errors))
{
    
$errors '';
}

// Generate CAPTCHA?
if($mybb->settings['captchaimage'])
{
    
$post_captcha = new captcha(true"post_captcha");

    if(
$post_captcha->html)
    {
        
$captcha $post_captcha->html;
    }
}
else
{
    
$captcha '';
}

$mybb->input['ingame'] = htmlspecialchars_uni($mybb->input['ingame']);
$mybb->input['guid'] = htmlspecialchars_uni($mybb->input['guid']);
$mybb->input['message'] = htmlspecialchars_uni($mybb->input['message']);

if(
$mybb->user['uid'] && !$mybb->get_input('email'))
{
    
$mybb->input['email'] = htmlspecialchars_uni($mybb->user['email']);
}
else
{
    
$mybb->input['email'] = htmlspecialchars_uni($mybb->get_input('email'));
}

$plugins->run_hooks('contact_end');

eval(
"\$page = \"".$templates->get("contact")."\";");
output_page($page); 

Würde mich über eine ziemlich schnelle Lösung sehr freuen. Smile
Als aller erstes sollte du die Änderungen in der contact.php rückgängig machen, die sind größtenteils völliger Quatsch. Ebenso sollten die Anpassungen an der Datenbank wieder entfernt werden, die Tabelle maillogs loggt einfach nur Mails, da sind keine neuen Felder nötig.

Eine E-Mail besteht auch nur aus 2 Teilen, dem Betreff und der Nachricht. Du willst wahrscheinlich die Nachricht erweitern, dazu müsste nur die Variable $message angepasst werden.
Ah ok, vielen lieben Dank! Allerdings weis ich gerade nicht wie ich die Variable korrekt bearbeite. Kannst du mir eventuell einen Tipp ggben?
z.B. so:
PHP-Code:
$mybb->input['message'] = "Ingame Name: {$mybb->input['ingame']}\nGUID: {$mybb->input['guid']}\n{$mybb->input['message']}"
vor:
PHP-Code:
$message $lang->sprintf($lang->email_contact$user$session->ipaddress$mybb->input['message']);