Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden  
logo
Sie können sich hier anmelden
Dieses Thema hat 5 Antworten
und wurde 13.307 mal aufgerufen
 Fragen zu (X)HTML und CSS ?
Marek ( gelöscht )
Beiträge:

03.11.2010 12:36
RE: Formmailer als Action in Forum... antworten

Tag 1ngo,
ich bin mich nicht so sicher ob mein Problem hier gehört.. Vorsichtshalber postet ich trotzdem.

Ich habe Dein Code als Action in meinem SMF-Forum "realisiert". Das stellt sich richtig dar, allerdings verschickt nichts..
Zu sehen: http://mareli.de/forum54/index.php?action=poczta

Ich habe jetzt keine Ahnung woran das liegt und hoffe zuerst hier auf wichtige Hinweise. Ein Blick von einem Profi auf meine Templatte tut manchmal Wunder.. Hier als Code:

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
 
<?php
//vom SMF &#252;bernommen......
function template_main()
{
//echo '<div class="tborder" style="padding: 2ex; ">' , $context['message_to_show'] , '</div>';
echo '<div style="padding: 2ex; ">';
global $text ;
---------------------------------------------------------------
//Formmailer
 
echo $text['1'];
define ('MAILTO', "admin@xxxx.de"); // Empf&#228;nger hier eintragen
define ('MAILFROM', "Kontaktformular"); // ggfls. Absender hier eintragen
define ('CHARSET', "UTF-8"); // Zeichenkodierung ggfls. anpassen
$Pflichtfelder = array('Nachricht','eMail'); // ggfls. weitere Pflichtfelder angeben
 
if($Formular_abgeschickt = !empty($_POST)) {
$Formular_leer = true; set_magic_quotes_runtime(0);
$_POST = array_map('Formular_Daten', $_POST);
}
function Formular_Daten($val) {
global $Formular_leer;
if(is_array($val)) return array_map('Formular_Daten', $val);
if(get_magic_quotes_gpc()) $val = stripslashes($val);
if($val = trim($val)) $Formular_leer = false;
return $val;
}
function checkEmail($adr) {
$regEx = '^([^s@,:"<>]+)@([^s@,:"<>]+.[^s@,:"<>.d]{2,}|(d{1,3}.){3}d{1,3})$';
return (preg_match("/$regEx/",$adr,$part)) ? $part : false;
}
 
function Formular_Pflichtfelder() {
global $Pflichtfelder;
$Fehler = '';
foreach ($Pflichtfelder as $Feld) {
$key = str_replace(' ','_',$Feld);
if(!(isset($_POST[$key]) && trim($_POST[$key]))) {
if($Fehler) $Fehler .= '<br />';
$Fehler .= 'Pflichtfeld "' . $Feld . '" nicht ausgef&#252;llt.';
}
}
return $Fehler;
}
 
function Formular_neu($log='.htPOSTdata.txt') {
if(file_exists($log) && is_readable($log)
&& file_get_contents($log) == print_r($_POST,true))
return false;
if($handle=@fopen($log, 'w')) {
fwrite($handle, print_r($_POST,true)); fclose($handle);
}
return true;
}
 
function Formular_Check() {
global $Formular_leer;
if($Formular_leer) $Fehler = 'Keine Daten eingetragen.';
elseif(!$Fehler = Formular_Pflichtfelder()) {
if(!Formular_neu()) $Fehler = 'Nachricht war bereits verschickt.';
elseif(!checkEmail($_POST['eMail'])) $Fehler = 'E-Mail fehlerhaft.';
}
return $Fehler;
}
 
function Formular_Eingabe($Feldname, $def='') {
if(!empty($_POST[$Feldname])) echo htmlspecialchars($_POST[$Feldname]);
else echo $def;
}
if($Formular_abgeschickt) {
if($Formular_Fehler = Formular_Check())
echo '<p class="Meldung" id="Fehler">',$Formular_Fehler,'</p>';
elseif(@mail(MAILTO, "Nachricht", print_r($_POST,true), $AddHeader))
echo '<p class="Meldung" id="OK">Nachricht verschickt.</p>';
else echo '<p class="Meldung" id="Fehler">Server-Fehler !</p>';
}

?>
 
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post"
enctype="multipart/form-data" accept-charset="<?php echo CHARSET; ?>">
<fieldset style="width: 650px; border: 1px solid gainsboro;">
<p>
<label style="float: left; width: 110px;" for="Name">Name:</label>
<input name="Name" id="Name" size="40"
value="<?php Formular_Eingabe('Name'); ?>" />
</p>
<p>
<label style="float: left; width: 110px;" for="eMail">Ihre E-Mail:</label>
<input name="eMail" id="eMail" size="40"
value="<?php Formular_Eingabe('eMail'); ?>" />
</p>
<p>
<label style="float: left; width: 110px;" for="Nachricht">Ihre Nachricht:</label>
<textarea name="Nachricht" id="Nachricht" rows="10" cols="60">
<?php Formular_Eingabe('Nachricht'); ?>
</textarea>
</p>
<p><input type="submit" value="abschicken" /></p>
</fieldset>
</form>
<?php
}
?>
 


Für eventuelle Infos würde mich freuen..
M.

1ngo Offline




Beiträge: 429

03.11.2010 21:28
#2 RE: Formmailer als Action in Forum... antworten

Hi,
das Formular wird an /forum54/index.php gesendet, ohne zusätzlichen Parameter kann die Index-Seite damit allerdings nichts anfangen.
Möglicherweise funktioniert:

1
 
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>?action=poczta"...>
 



Gruß
Ingo

Marek ( gelöscht )
Beiträge:

04.11.2010 11:06
#3 RE: Formmailer als Action in Forum... antworten

Hi Ingo,
die benannte Funktion wird schon aufgerufen. Ich habe im index folgende arrays, und "poczta" zugefügt...

1
2
3
4
5
6
7
8
9
10
11
12
 
$actionArray = array(
...
'packages' => array('Packages.php', 'Packages'),
'permissions' => array('ManagePermissions.php', 'ModifyPermissions'),
'pgdownload' => array('PackageGet.php', 'PackageGet'),
'pm' => array('PersonalMessage.php', 'MessageMain'),
'poczta' => array('poczta.php', 'ShowKontaktformular'),
'post' => array('Post.php', 'Post'),
'post2' => array('Post.php', 'Post2'),
'postsettings' => array('ManagePosts.php', 'ManagePostSettings'),
...
 
 



Dann wurde eine poczta.php erstellt wo zusätzliche loadLanguage für Sprachauswahl aufgerufen wird..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
 
if (!defined('SMF'))
die('Hacking attempt...');
 

function ShowKontaktformular() {

global $context, $text;

loadTemplate('poczta');
loadLanguage('poczta');

$context['message_to_show']='';
}
 
?>
 


Zum schluß kommt die tempatte die ich präsentiert habe.
Merkwürdig, ich bekomme kein Fehlerprotokoll über SMF. D.h. wird abgeschickt und ich lande sofort auf der Hauptseite.
Eine Idee habe ich allerdings..
Liegt das vielleicht an Variabel die ich als "global" in der Templatte nicht interpretiert habe? Ich setzte dort nur "text" als Übersetzung ?!?
Danke Dir trotzdem für die Reaktion..
Gruß M.

Marek ( gelöscht )
Beiträge:

04.11.2010 11:46
#4 RE: Formmailer als Action in Forum... antworten

Natürlich etwas vergessen..

Dein Vorschlag ändert nichts. Aber..ein alter Script mit dieser Funktion ging:

1
 
<form action="#" method="post">
 


Hat "fast" perfekt funktioniert wobei von der Sicherung keine Rede.
M.

1ngo Offline




Beiträge: 429

04.11.2010 20:51
#5 RE: Formmailer als Action in Forum... antworten

Hi,

action="#" ist gar nicht sicherheitskritisch, sondern nur ein kleiner HTML-Fehler, da kein Anker angegeben ist. Die Browser setzen dies aber so um, dass sie die aktuelle Seite nehmen, also mein Vorschlag.

Warum der jetzt nicht funktioniert, kann ich Dir nicht sagen. Vielleicht eine interne Umschreibung von index.php auf poczta.php ohne Query_String?

Gruß
Ingo

Marek ( gelöscht )
Beiträge:

04.11.2010 23:58
#6 RE: Formmailer als Action in Forum... antworten

Ich habe mein Problem gelöst.
Danke Dir trotzdem für die Mitwirkung.
Done und Gruß
M.

 Sprung  
Xobor Forum Software von Xobor | Forum, Fotos, Chat und mehr mit Xobor