Antworten auf deine Fragen:
Neues Thema erstellen

Kontaktformular

Poki29

Ps-ler ;-)

Hallo,

ich will dieses Kontaktformular in meine Hp packen.



Jedoch bekomm ich nen Parse Error. Was genau hab ich falsch gemacht? In der Beschreibung steht auch: "richtig parsen", aber was ist das überhaupt?^^

mfG
 

sokie

Mod | Web

AW: Kontaktformular

WO bekommst du so eine fehlermeldung?
Wie genau lautet die Fehlermeldung?
wie ist die Adresse der Seite?
Wo ist der Quelltext?
 

Poki29

Ps-ler ;-)

AW: Kontaktformular

Der Quelltext entspricht dem des Tuts. (Email... natürlich geändert)

Hier ist ein Link zur Seite:

Code:
<?php
002./**
003. *
004. * Dieser nun folgende PHP-Teil kommt in die Datei form.php ganz oben oder an erster Stelle.
005. * Er muss lediglich im ganannten Bereich ".. ---- ab hier anpassen ---..." angepasst werden
006. *
007. * Eine Danke- oder Mailbestätigungsseite muss noch erstellt werden. Allerdings ist in der
008. * Einstellungmöglichkeit schon eine URL vorbereitet und muss lediglich per path und Dateiname
009. * angepasst werden.
010. *
011. */
012. 
013.error_reporting(E_ALL);
014. 
015./* --------------------------------------------- ab hier anpassen -------------------- */
016.// Errormitteilungen (entsprechende Texte anpassen)
017.define('ERROR_1',   'Ihre E-Mailadresse ist nicht vorhanden.');
018.define('ERROR_2',   'Ihre E-Mailadresse ist ungültig.');
019.define('ERROR_3',   'Geben Sie bitte einen Text ein.');
020.define('ERROR_4',   'Sie haben keinen Familiennamen angegeben.');
021.define('ERROR_5',   'Sie haben keinen Vornamen angegeben.');
022.define('ERROR_6',   'Bitte füllen Sie das Formular aus.');
023.define('ERROR_7',   'Die ausgewählte Datei ist zu groß.');
024.define('ERROR_8',   'Die ausgewählte Datei hat nicht den erlaubten Dateitype');
025.// Aktionpath - diese Einstellung nur verwnden, wenn der HTML-Teil unterhalb des PHP-Teil folgt
026.// wie in diesem vorhandenen Beispiel
027.define('ACTION_PATH',   'form.php');
028. 
029.// E-Mailadresse
030.define('MAIL_SENDER',   'steve2911@web.de'); # Deine E-Mail-Adresse (From)
031.//Mail Betreff-Texte
032.define('MAIL_SUBJECT_A','Kontaktmitteilung aus Formular'); # Betreff für Adminmail (Mail erhält Admin)
033. 
034.// Mail-Betreff für User
035.define('MAIL_SUBJECT_K','Ihre Kontaktmitteilung'); # Betreff für Mailkopie (Mail erhält User)
036. 
037.// Charset für E-Mailinhalt
038.define('MAILCHARSET',   'utf-8'); # oder z.B. iso-8859-1
039. 
040.// Starttext für Webmastermail
041.define('STARTTEXT',"Mitteilung vom Webformular:\n\r"); # wichtig hier die " belassen!
042.  
043.// mail Kopie an User und Aktivierung der Checkbox für Mailkopie
044.define('MAIL_KOPIE',    0); # kann mit 0 deaktiviert werden
045. 
046.// OPTIONAL - ermöglicht einen Dateiupload
047.define('FILE_UPLOAD',   0); # kann mit 0 deaktiviert werden
048. 
049.// dateigröße für Dateiupload
050.define('FILE_SIZE', 1000000); # Angabe in Bytes. Ein MB entspricht 1000000 Bytes
051. 
052.// absoluter path für das <a itxtdid="11116176" target="_blank" href="#" style="border-bottom: 0.1em solid darkgreen ! important; font-weight: normal ! important; text-decoration: underline ! important; color: darkgreen ! important; padding-bottom: 1px ! important; background-color: transparent ! important; background-image: none; padding-top: 0pt; padding-right: 0pt; padding-left: 0pt;" classname="iAs" class="iAs">speichern</a> der hochzuladenden Datei
053.// die Variable $_SERVER['DOCUMENT_ROOT'] ist das Hauptrootverzeichnis des Server
054.// ergänze nun das Verzeichnis, in welches die Dateien gespeichert werden und
055.// hänge an das Ende ein / (Beispiel: $_SERVER['DOCUMENT_ROOT'] .'/images/
056.define('FILE_SAVE_PATH', $_SERVER['DOCUMENT_ROOT'] .'/images/');
057. 
058.define('ENCTYPE', ' enctype="multipart/form-data"');
059. 
060.// Seitenangabe, auf welche Seite bei erfolgreicher Übermittlung weitergeleitet werden soll
061.define('LOCATION',  $_SERVER['HTTP_HOST'] .'/emailok.php'); # relativer path!
062. 
063.// %s stehen für einen Platzhalter und gleichzeitig als String
064.$USER_MAIL_TEXT  =  "Sehr geehrte/r %s %s %s,\n\n\r";
065.$USER_MAIL_TEXT .=  "Ihre Mitteilung hatte folgenden Inhalt:\r\n\n\tStrasse HausNr.: %s %s\r\n\n\tPlz Ort: %s %s\r\n\tTelefon: %s %s\r\n\tE-Mail: %s\r\n\n\t";
066.$USER_MAIL_TEXT .=  "Mitteilung:\r\n\t%s";
067.if(FILE_UPLOAD) { $USER_MAIL_TEXT .=  "\r\n\n\tDateiname: %s"; }
068.$USER_MAIL_TEXT .= "\r\n\nSie erhalten in den nächsten Tagen eine Rückmeldung von mir.";
069. 
070. 
071.// wenn die Liste erweitert werden muss einfach ein , und dann die nächstfolgende
072.// Zahl. Bsp: , 4 => 'irgendwas'
073.// ); muss immer vorhanden sein
074.$htmlAddress = array(0 => 'Optional', 1 => 'Frau', 2 => 'Herr', 3 => 'Firma');
075. 
076.// array mit mimeTypen für ein Dateiupload wie in diesem Beispiel mit image.
077.// das Array kann beliebig erweitert werden. Wichtig ist nur, dass die Typen entsprechend
078.// deklariert werden.
079.$fileTypes  = array('image/jpeg', 'image/jpg', 'image/png', 'image/gif');
080./* ------------------------------- ab hier nicht ändern bzw. erst wieder ab HTML-Teil -------------------- */
081. 
082. 
083./**
084. * function _gp($var)
085. *
086. * @param int/string $var
087. * @return int/string
088. */
089.function _gp($var) {
090.    if(isset($var)) {
091.         
092.        $val = isset($_POST[$var]) ? $_POST[$var] : '';
093.         
094.        return trim($val);
095.         
096.    }
097.}
098. 
099./**
100. * function _selectAddress($htmlAddress, $select)
101. *
102. * @param array $htmlAddress
103. * @param string $select
104. * @return string
105. */
106.function _selectAddress($htmlAddress, $select) {
107.     
108.    if(is_array($htmlAddress)) {
109.         
110.        $ret = '';
111.         
112.        foreach($htmlAddress AS $k => $v) {
113.             
114.            if(isset($select) && $select == $k) { $selected = ' selected="selected"'; }
115.            else { $selected = ''; }
116.             
117.            $ret .= "<option value=\"$k\"$selected>$v</option>\n";
118.        }
119.         
120.        return print $ret;
121.    } else {
122.         
123.        return print 'Es wurde keine Anrede definiert.';
124.         
125.    }
126.     
127.    return print $ret;
128.     
129.}
130. 
131./**
132. * function _E($int)
133. *
134. * @param integer $int
135. * @return string
136. */
137.function _E($int) {
138.    $array = array( 1 => ERROR_1,
139.                    2 => ERROR_2,
140.                    3 => ERROR_3,
141.                    4 => ERROR_4,
142.                    5 => ERROR_5,
143.                    6 => ERROR_6,
144.                    7 => ERROR_7,
145.                    8 => ERROR_8
146.                    );
147.             
148.    if($array[$int]) return $array[$int];
149.}
150. 
151./**
152. * function checkMail($mailAdresse)
153. *
154. * @param string $mailAdresse
155. * @return boolean
156. */
157.function checkMail($mailAdresse) {
158.    if(isset($mailAdresse)) {
159.         
160.        // Prüft auf PHP-Version
161.        if(phpversion() >= '5.2.0') {
162.            // prüft per filter_var und Parameter FILTER_VALIDATE_EMAIL
163.            if(!filter_var($mailAdresse, FILTER_VALIDATE_EMAIL)) { return 2; }
164.            return false;
165.        } else {
166.            // Prüft ob E-Mailadresse ungültig
167.            if(preg_match('/^[^\s@<>]+@[^\s@<>]+\.[a-z]{2,4}$/', $mailAdresse)) { return 2; }
168.            return false;
169.        }
170.    } else {
171.         
172.        return 1;
173.         
174.    }
175.}
176. 
177./**
178. * checkFile($file)
179. *
180. * @param array $file
181. * @param array $types
182. * @return boolean
183. */
184.function checkFile($file, $types = array()) {
185.     
186.    if( isset($file['tmp_name']) && $file['tmp_name'] != '' &&
187.        isset($file['name']) && $file['name'] != '') {
188. 
189.        $size = $file['size'];
190.        $type = $file['type'];
191. 
192. 
193.        if($size > FILE_SIZE) { return 7; }
194.        elseif(isset($types) && !in_array($type, $types)) { return 8; }
195.        else { return false; }
196.    }
197.}
198. 
199./**
200. * function fileUpload($file)
201. *
202. * @param array $file
203. * @param integer $action   wird zur prüfung auf Fehler verwendet.
204. *                          1 prüft auf Fehler
205. *                          2 erlaubt den Dateiupload
206. * @return array $array
207. */
208.function fileUpload($file = array()) {
209.     
210.    if(isset($file['tmp_name']) && isset($file['name'])) {
211. 
212.        $tmp    = $file['tmp_name'];
213.        $name   = $file['name'];
214.        $type   = $file['type'];
215. 
216.        $dateiendung = preg_replace('#[a-z+]+/#i', '', $type);
217.        $filename = date('d_m_Y').'_'. time() .'.'. $dateiendung;
218.                 
219.        if(move_uploaded_file($tmp, FILE_SAVE_PATH . $filename)) {
220.                             
221.            $array = array(0 => $filename, 1 => $name);
222.            return $array;
223.             
224.        }
225.    } else {
226.        return;
227.    }
228.}
229. 
230.$textmitteilung  = ''; // Variable indiziert
231.$error_a         = 0;
232.$checkedKopie    = '';
233.$fileName        = '';
234.$m_anrede = _gp('anrede');
235. 
236.if(intval(_gp('action')) == 1) {
237. 
238.    // Prüft, ob die E-Mail-Adresse angegeben wurde.
239.    if($m_email = _gp('email')) {
240.        $error_a = checkMail($m_email);
241.    } else {
242.        $error_a = 1;
243.    }
244. 
245.    // Prüft, ob eine Mitteilung erfolgte. Wenn nicht, gibt es eine Fehlermeldung.
246.    if(!$m_mitteilung = _gp('mitteilung')) { $error_a = 3; }
247. 
248.     
249.    // Prüft, ob der Familienname angegeben wurde. Wenn nicht erfolgt eine Fehlermeldung.
250.    if(!$m_fname = _gp('fname')) { $error_a = 4; }
251.     
252.    // Prüft, ob der Vorname angegeben wurde. Wenn nicht, erfolgt eine Fehlermeldung
253.    if(!$m_vorname = _gp('vorname')) { $error_a = 5; }
254.     
255.    // prüft ob die Uploaddatei erlaubt ist
256.    if(FILE_UPLOAD === 1 && is_array($_FILES) && checkFile($_FILES['file'], $fileTypes) == 7) { $error_a = 7; }
257.    if(FILE_UPLOAD === 1 && is_array($_FILES) && checkFile($_FILES['file'], $fileTypes) == 8) { $error_a = 8; }
258.     
259.    // prüfe ob User Mailkopie wünscht
260.    if($mailKopie = _gp('kopie') == 1) { $checkedKopie = ' checked="checked"'; }
261.     
262.    // Prüft, ob eine Anrede ausgewählt wurde, wenn nicht
263.    if(!$m_anrede = _gp('anrede')) { $m_anrede = ""; }
264.     
265.     
266.    // Prüft, ob eine Strasse angegeben wurde. Wenn nicht, bleibt die Variable leer.
267.    if(!$m_strasse = _gp('strasse')) { $m_strasse = ''; }
268.     
269.    // Prüft, ob die Hausnummer angegeben wurde. Wenn nicht, bleibt die Variable leer.
270.    if(!$m_hausnummer = _gp('hausnummer')) { $m_hausnummer = ''; }
271.     
272.    // Prüft, ob eine PLZ angegeben wurde. Wenn nicht, bleibt die Variable leer.
273.    if(!$m_plz = _gp('plz')) { $m_plz = ''; }
274.     
275.    // Prüft, ob ein Wohnort angegeben wurde. Wenn nicht, bleibt die Variable leer.
276.    if(!$m_ort = _gp('ort')) { $m_ort = ''; }
277.     
278.    // Prüft, ob eine Vorwahl angegeben wurde. Wenn nicht, bleibt die Variable leer.
279.    if(!$m_vw = _gp('vw')) { $m_vw = ''; }
280.     
281.    // Prüft, ob die Rufnummer angegeben wurde. Wenn nicht, bleibt die Variable leer.
282.    if($m_rn = _gp('rn')) { $m_rn = ' / '. $m_rn; }
283.     
284.    // Prüft, ob alle Pflichtfelder vorhanden sind.
285.    if(!$error_a) {
286.         
287.        $fileNameAdmin  = '';
288.        $fileNameUser   = '';
289.         
290.        if(FILE_UPLOAD && is_array($_FILES['file'])) {
291.             
292.            $fileName = fileUpload($_FILES['file']);
293. 
294.            $fileNameAdmin  = $fileName[0];
295.            $fileNameUser   = $fileName[1];
296.             
297.        }
298.         
299.        // Mailbedingungen in From von MIME und HTML
300.        $header  = 'MIME-Version: 1.0'."\r\n";
301.        $header .= 'Content-type: text/html; charset='. MAILCHARSET ."\r\n";
302.        $header .= 'From: <'. MAIL_SENDER .'>';
303.         
304.        if(isset($htmlAddress[$m_anrede])) { $anrede = $htmlAddress[$m_anrede]; }
305.        else { $anrede = ''; }
306.         
307.        // Mitteilungstext für den Seiteninhaber
308.        $mailTextWM = sprintf("%s\r\nAnrede: %s\n\rVorname Name: %s %s\n\rStrasse / HsNr: %s %s\n\rPLZ Wohnort: %s %s\n\rTelefon: %s %s\n\rE-Mail: %s\n\rMitteilung:\n\n\r%s\r\n\nDateiname: %s\r\n\n\nMitgeteilt am: %s",
309.                                STARTTEXT,
310.                                $anrede,
311.                                $m_vorname,
312.                                $m_fname,
313.                                $m_strasse,
314.                                $m_hausnummer,
315.                                $m_plz,
316.                                $m_ort,
317.                                $m_vw,
318.                                $m_rn,
319.                                $m_email,
320.                                $m_mitteilung,
321.                                $fileNameAdmin, 
322.                                date('d.m.Y, H:i:s'));
323.                     
324.        // E-Mail an Seiteninhaber wird gesendet.
325.        mail(MAIL_SENDER, MAIL_SUBJECT_A, $mailTextWM, $header);
326.            
327.        // Bestätigungsmail an Absender
328.        if(defined('MAIL_KOPIE') && MAIL_KOPIE == 1 && $mailKopie == 1) {
329.            
330.            // Textzusammenstellung für den Absender
331.            $msgUser = sprintf( $USER_MAIL_TEXT,
332.                                $anrede,
333.                                $m_vorname,
334.                                $m_fname,
335.                                $m_strasse,
336.                                $m_hausnummer,
337.                                $m_plz,
338.                                $m_ort,
339.                                $m_vw,
340.                                $m_rn,
341.                                $m_email,
342.                                $m_mitteilung,
343.                                $fileNameUser);
344.             
345. 
346.            // Senden der Bestätigungsmail an den Formularausfüllenden.
347.            mail($m_email, MAIL_SUBJECT_K, $msgUser, $header);
348. 
349.        }
350.         
351.        // Nun leite um auf die Empfangsbestätigungs-Seite emailok.php.
352.        header('Location: '.LOCATION);
353.        exit();
354.    }
355.}
356.?>
357.<!--
358.Dieser HTML Teil kann entweder direkt unterhalb des obigen PHP-Teil oder
359.in ein Template kopiert werden oder alternativ in eine andere PHP-Datei.
360.Es ist jedoch zwingend erforderlich, dass PHP-Code korrekt geparst wird.
361. 
362.Das Tabellelayout ist lediglich als Beispiel.
363.-->
364.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
365.        "http://www.w3.org/TR/html4/loose.dtd">
366.<html>
367.<head>
368.<title>Formular</title>
369.<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
370.<style type="text/css">
371.body {
372.    background: #fffbd7;
373.    margin: 0 0 0 0;
374.    }
375. 
376..text {
377.    font-family: verdana, arial, helvetica, sans-serif;
378.    font-style: normal;
379.    font-size: 0.8em;
380.    font-weight: normal;
381.    color: #333;
382.    }
383. 
384..error {
385.    font-family: verdana, arial, helvetica, sans-serif;
386.    font-style: normal;
387.    font-size: 0.9em;
388.    font-weight: normal;
389.   font-weight: bold;
390.    color: #CC0000;
391.    }
392. 
393.table {
394.    margin-left: auto;
395.    margin-right: auto;
396.    }
397. 
398.td {
399.    background: #edebd3;
400.    }
401.</style>
402.</head>
403.<body class="text">
404. 
405.<?php
406.// Bereich für Fehlerausgabe
407.if((int)$error_a) {
408.     
409.    echo '<p align="center" class="error">'. _E($error_a) .'</p>';
410.}
411.?>
412. 
413.<form action="<?php echo ACTION_PATH; ?>" method="post"<?php echo ENCTYPE; ?>>
414.<input type="hidden" name="action" value="1" />
415.<table width="70%" cellspacing="2" cellpadding="5" border="0">
416.<tr>
417.    <td colspan="2"><p align="center"><b>Kontakt</b></p><p align="right">* = Optional</td>
418.</tr><tr>
419.    <td>Anrede *</td>
420.    <td><select name="anrede">
421.            <?php
422.            _selectAddress($htmlAddress, $m_anrede);
423.            ?>              
424.          </select>
425.    </td>
426.</tr><tr>
427.    <td>Vorname</td>
428.    <td><input type="text" name="vorname" size="40" value="<?php if(isset($_POST['vorname'])) { echo $_POST['vorname']; } ?>" /></td>
429.</tr><tr>
430.    <td>Name</td>
431.    <td><input type="text" name="fname" size="40" value="<?php if(isset($_POST['fname'])) { echo $_POST['fname']; } ?>" /></td>
432.</tr><tr>
433.    <td>Strasse / Haus.-Nr. *</td>
434.    <td>
435.        <input type="text" name="strasse" size="40" maxlength="100" value="<?php if(isset($_POST['strasse'])) { echo $_POST['strasse']; } ?>" />
436.        <input type="text" name="hausnummer" size="5" maxlength="8" value="<?php if(isset($_POST['hausnummer'])) { echo $_POST['hausnummer']; } ?>" />
437.    </td>
438.</tr><tr>
439.    <td>PLZ / Wohnort *</td>
440.    <td>
441.        <input type="text" name="plz" size="5" maxlength="5" value="<?php if(isset($_POST['plz'])) { echo $_POST['plz']; } ?>" />
442.        <input type="text" name="ort" size="40" maxlength="100" value="<?php if(isset($_POST['ort'])) { echo $_POST['ort']; } ?>" />
443.    </td>
444.</tr><tr>
445.    <td><a itxtdid="8523390" target="_blank" href="#" style="border-bottom: 0.1em solid darkgreen ! important; font-weight: normal ! important; text-decoration: underline ! important; color: darkgreen ! important; padding-bottom: 1px ! important; background-color: transparent ! important; background-image: none; padding-top: 0pt; padding-right: 0pt; padding-left: 0pt;" classname="iAs" class="iAs">Telefon</a> *</td>
446.    <td>
447.        <input type="text" name="vw" size="10" maxlength="5" value="<?php if(isset($_POST['vw'])) { echo $_POST['vw']; } ?>" /> /
448.        <input type="text" name="rn" size="10" maxlength="15" value="<?php if(isset($_POST['rn'])) { echo $_POST['rn']; } ?>" />
449.    </td>
450.</tr><tr>
451.    <td>Ihre E-Mailadresse</td>
452.    <td>
453.        <input type="text" name="email" size="30" maxlength="50" value="<?php if(isset($_POST['email'])) { echo $_POST['email']; } ?>" />
454.    </td>
455.</tr><tr>
456.    <td valign="top">Mitteilung</td>
457.    <td>
458.        <textarea name="mitteilung" cols="60" rows="10"><?php if(isset($_POST['mitteilung'])) { echo $_POST['mitteilung']; } ?></textarea>
459.    </td>
460.</tr>
461.<?php
462.if(MAIL_KOPIE === 1) {
463.?>
464.<tr>
465.    <td>Wünschen Sie eine Kopie</td>
466.    <td><input type="checkbox" value="1" name="kopie"<?php echo $checkedKopie; ?> /></td>
467.</tr>
468.<?php
469.}
470.if(FILE_UPLOAD === 1) {        
471.?>
472.<tr>
473.    <td>Bilddatei anhängen</td>
474.    <td><input type="file" size="50" name="file" /></td>
475.</tr>
476.<?php } ?>
477.<tr>
478.    <td colspan="2">
479.        <p align="center"><input type="submit" value="Mittelung senden" /></p>
480.    </td>
481.</tr>
482.</table>
483.</form>
484. 
485.</body>
486.</html>

Neuling bin ich ;-) Danke für den Link
 

cebito

undefined

AW: Kontaktformular

Kann da jetzt keinen Fehler finden, das Formular funktioniert offline unter xampp und auch im Netz. Hab da nur so nen Verdacht, da in Zeile 11 der Kommentar endet, du hast doch in der php-datei nicht die Zeilennummern davor gelassen? Geh mal zum Tutorial und kopiere mal so den Quelltext, dann sind die Zeilennummern nicht dabei...



Edit: *hust*, grad mal mit Zeilennummern getestet - genau das ist es :D
 
Zuletzt bearbeitet:

Poki29

Ps-ler ;-)

AW: Kontaktformular

Da hätte ich auch selber drauf kommen können ;-)
Aber vielen Dank.

Nur hab ich jetzt einen neuen Error:

Fatal error: Call to undefined function filter_var() in /usr/export/www/vhosts/funnetwork/hosting/steve2911/form.php on line 163

Link ist der selbe.
 
Zuletzt bearbeitet:

cebito

undefined

AW: Kontaktformular

Da hätte ich auch selber drauf kommen können ;-)
Aber vielen Dank.

Nur hab ich jetzt einen neuen Error:

Fatal error: Call to undefined function filter_var() in /usr/export/www/vhosts/funnetwork/hosting/steve2911/form.php on line 163

Link ist der selbe.
Welche php-version läuft bei dir? Mach mal eine Datei, info.php

Code:
<?PHP
  phpinfo();
?>
schieb sie auf den Server und ruf die mal auf... Wenn php<5, könnte es daran liegen...
 

Poki29

Ps-ler ;-)

AW: Kontaktformular

Also vermutest du dass es am Anbieter liegt? Der Plan ist , dass ich es später bei 1&1 hoch lade, denkst du da geht es?

Folgender Error kommt da:

ZUGRIFF NICHT ERLAUBT

Die angeforderte Seite darf nicht angezeigt werden.


Muss ich php extra aktivieren bei 1und1?
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.636
Beiträge
1.538.496
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben