Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
Old-Trainee

Kontaktformular einfügen mit IP.Content

Recommended Posts

Hallo,

ich würde gerne ein Kontaktformular mit dem IP.Content einfügen aber irgendwie funktioniert dies nicht.

Wenn ich eine neue html-Seite mache und folgenden Text einfüge, wird es nicht richtig angezeigt.

<html>

<head>

<title>Kontaktformular inkl. Dateianhang mit PHP</title>

</head>

<body>

<?php


$Empfaenger = "meine@mailadresse.de";


if($_REQUEST['Send'])

{

 if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']))

 {

 echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!";

 }

 else

 {

 $Mailbetreff = "Kontakt: ";

 $Mailbetreff .= $_REQUEST['Betreff'];


 $Trenner = md5(uniqid(time()));


 $Header = "From: ".$_REQUEST['Email'];

 $Header .= "\n";

 $Header .= "MIME-Version: 1.0";

 $Header .= "\n";

 $Header .= "Content-Type: multipart/mixed; boundary=$Trenner";

 $Header .= "\n\n";

 $Header .= "This is a multi-part message in MIME format";

 $Header .= "\n";

 $Header .= "--$Trenner";

 $Header .= "\n";

 $Header .= "Content-Type: text/plain";

 $Header .= "\n";

 $Header .= "Content-Transfer-Encoding: 8bit";

 $Header .= "\n\n";

 $Header .= "Sie haben folgende Nachricht erhalten: \n\n";


 while(list($Formularfeld, $Wert) = each($_REQUEST))

 {

 if($Formularfeld != "Send" && $Formularfeld != "Anhang")

 {

 $Header .= $Formularfeld.": ".$Wert."\n";

 }

 }


 $Header .= "\nDatum/Zeit: ";

 $Header .= date("d.m.Y H:i:s");

 $Header .= "\n";

 $Header .= "--$Trenner";

 $Header .= "\n";

 $Header .= "Content-Type: ";

 $Header .= $_FILES['Anhang']['type'];

 $Header .= "; name=";

 $Header .= $_FILES['Anhang']['name'];

 $Header .= "\n";

 $Header .= "Content-Transfer-Encoding: base64";

 $Header .= "\n";

 $Header .= "Content-Disposition: attachment; filename=";

 $Header .= $_FILES['Anhang']['name'];

 $Header .= "\n\n";

 $Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);

 $Header .= chunk_split(base64_encode($Dateiinhalt));

 $Header .= "\n";

 $Header .= "--$Trenner--";


 mail($Empfaenger, $Mailbetreff, "", $Header);

 echo"Vielen Dank für Ihre eMail!";

 }

}

else

{

?>

<table border="0" cellpadding="1" cellspacing="2">

<form action="<?php echo$_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">

 <tr>

 <td>Name:</td>

 <td><input name="Name" size="20" type="text"></td>

 </tr>

 <tr>

 <td>eMail:</td>

 <td><input name="Email" size="20" type="text"></td>

 </tr>

 <tr>

 <td>Betreff:</td>

 <td><select name="Betreff" size="1"><option>Hilfe</option><option>Kritik</option><option>Werbung</option></select></td>

 </tr>

 <tr>

 <td>Nachricht:</td>

 <td><textarea cols="25" name="Nachricht" rows="5"></textarea></td>

 </tr>

 <tr>

 <td>Anhang:</td>

 <td><input name="Anhang" size="20" type="file"></td>

 </tr>

 <tr>

 <td align="center" colspan="2"><input name="Send" type="submit" value="Abschicken"> <input name="Reset" type="reset" value="Löschen"></td>

 </tr>

</form>

</table>

<?php

}


?>

</body>

</html>

Share this post


Link to post

Ausserdem bitte NIEEEEEEEEE folgendes verwenden:


$Header = "From: ".$_REQUEST['Email'];

1. Daten validieren

2. Vorallem bei Mailfunktionen aufpassen, da man so sehr leicht als Spamserver missbraucht werden kann;) (leider finde ich den Link nicht mehr, aber es gibt da einige schöne Beispiele wie man genau sowas für Spam verwenden kann.

Dort ging es darum, das man da einfach beliebige Empfänger im manipulierten Header mitgeben kann.....

Share this post


Link to post

...es sollte heute jedem klar sein, das ein Kontaktformular ohne Sicherheitsfunktionen (CAPTCHA) niemals im Produktiveinsatz genutzt werden darf.

Alles andere ist ja mehr als grob fahrlässig und ich wundere mich, das man immer noch solch stümperhaft programmierte Formulare im Internet downloaden kann. Traurig!

Share this post


Link to post

Captcha ist wohl kaum barrierefrei ^^

wobei auch ein Captcha nicht davor schützt das jemand wie oben mit $_REQUEST / GET / POST direkt arbeitet ohne mal geprüft zu haben was da eigentlich drin steht

Share this post


Link to post

...was wohl daran liegt, das kaum jemand für lau entsprechend komplexe Scripte anbietet.

Als Captcha/Kontaktformular kann ich dir dieses ans Herz legen. Durch das Captcha ist bei mir bisher kein einziger Bot durchgekommen. :)

(es gibt natürlich viele Wege nach Rom, aber das ist sicher der einfachste für dich, wenn auch kein Upload möglich ist, aber das kann man ggf. noch einbauen [lassen])

Share this post


Link to post

Hi Helge,

danke für den Tipp mit dem Kontaktformular.

Ich habe mir nun mal das Kontaktformular einmal herunter geladen.

Ich habe darüber geschaut und festgestellt dass es alle php Datei sind, nur wie binde ich dies nun in meine Seite ein?

Share this post


Link to post

wie jetzt ?? ich steh gerade auf der Leitung. so ein großes Problem kann das doch nicht sein odeR?

mit dem IP.Content kann ich doch php-Seiten erstellen oder?

oder muss ich die php Dateien was im Download dabei sind hochladen und via iFrame auf der Seite anzeigen lassen. (mit dem IP.Content)

Share this post


Link to post

Natürlich kannst du PHP Seiten erstellen, dann musst du dort aber alles, was HTML-Code ist entsprechend mit einem echo-Befehl ausgeben.

<? PHP und ?> sind natürlich nicht einzufügen.

Share this post


Link to post

ok ich habe es einmal versucht,

wenn ich den code der kontakt php einfüge und alle <? PHP und ?> raus lösche, lässt er mit trotzdem die Seite nicht erstellen!

Was habe ich da nun wieder Falsche gemacht?

Share this post


Link to post

Das kann ich dir nicht sagen, weil ich die Fehlermeldung nicht kenne. Das sind aber wirklich so grundlegende Basics, die man wissen sollte und wenn wirklich nötig ergoogeln kann.

Share this post


Link to post

Das kann ich dir nicht sagen, weil ich die Fehlermeldung nicht kenne. Das sind aber wirklich so grundlegende Basics, die man wissen sollte und wenn wirklich nötig ergoogeln kann.

Kein Thema, verstehe was du meinst.

Aber ich denke dafür haben wir ja ein Forum wo ich mir ERFAHRUNGEN bzw. Hilfen holen kann odeR?

Also ich habe nun alle <? entfernt und es ist auch zu speicher gegangen. Nur bekomme ich beim öffnen der seite folgenden Fehlercode.

Parse error: syntax error, unexpected '<' in /home/meinZugang/www.meineseite.com/meinordner/admin/applications_addon/IPS/ccs/sources/pages.php(137) : eval()'d code on line 1

Share this post


Link to post

Gut, dann mal ein Beispiel (kontakt.php), wie man das ganze in IP.Content einfügen kann:


// Alle Fehler und Notices anzeigen

session_start();

$CAPTCHA_TempString="";

// Zufallsfunktion für Zahlen und Buchstaben
function GetRandomChar() {

// Zufallszahl generieren
mt_srand((double)microtime()*1000000);
$CAPTCHA_RandVal = mt_rand(1,2);

// Buchstabensalat generieren jeh nachdem ob Randval 1 oder 2 ist
switch ($CAPTCHA_RandVal) {
case 1:
// Zahlen 0-9
$CAPTCHA_RandVal = mt_rand(48, 57);
break;
case 2:
// Grosse Buchstaben
$CAPTCHA_RandVal = mt_rand(65, 90);
break;
}

// Zufallscode ausgeben
return chr($CAPTCHA_RandVal);
}

// Zufallscode x-stellig ausgeben
for ($i = 1; $i <= 6; $i++) {
$CAPTCHA_TempString .= GetRandomChar();
}

// Text in Sessionvariable speichern
if (isset($CAPTCHA_TempString)) {
$_SESSION["CAPTCHA_RndText"] = str_replace('I','E',str_replace('0','3',str_replace('1','S',str_replace('B','F',str_replace('O','P',str_replace('4','A',str_replace('D','K',$CAPTCHA_TempString)))))));
} else {
die("Zufallscode konnte nicht generiert werden!");
}




echo "<h3>Kontaktformular</h3>

<form method=\"post\" action=\"NAME DER ZWEITEN SEITE INNERHALB VON [url="https://www.invisionpower.com/clients/index.php?app=nexus&module=promotion&section=referral&id=5636&direct=aHR0cDovL3d3dy5pbnZpc2lvbnBvd2VyLmNvbS9hcHBzL2NvbnRlbnQv"]IP.Content[/url]\" name=\"kontakt\">
<table>
<tr><td><p>Name: </p></td><td><p><input name=\"name\" size=\"34\" type=\"text\""; if (isset($_SESSION['name'])) { echo 'value="' . $_SESSION['name'] . '"'; } echo "/></p></td></tr>
<tr><td><p>Email: </p></td><td><p><input name=\"email\" size=\"34\" type=\"text\""; if (isset($_SESSION['email'])) { echo 'value="' . $_SESSION['email'] . '"'; } echo "/></p></td></tr>
<tr><td><p>Betreff: </p></td><td><p><input name=\"betreff\" size=\"34\" type=\"text\""; if (isset($_SESSION['betreff'])) { echo 'value="' . $_SESSION['betreff'] . '"'; } echo "/></p></td></tr>
<tr><td><p>Nachricht: </p></td><td><p><textarea name=\"nachricht\" rows=\"3\" cols=\"26\">"; if (isset($_SESSION['nachricht'])) { echo $_SESSION['nachricht'] ; } echo "</textarea></p></td></tr>

<tr><td> </td><td><img border=\"0\" src=\"captcha_img.php?PHPSESSID="; echo session_id(); echo "&ver="; echo time(); echo"\" alt=\"\" /></td></tr>
<tr><td><p>Code: </p></td><td><p><input maxlength=\"6\" name=\"txtCode\" size=\"34\" type=\"text\" /></p></td></tr>
<tr><td> </td><td><p><input class=\"button\" type=\"submit\" name=\"eintrag\" value=\"eintragen\" />&nbsp;<input class=\"button\" type=\"reset\" name=\"reset\" value=\"l&ouml;schen\" /></p></td></tr>
</table>
</form>";

ACHTUNG: Nur ein schnelles Beispiel, das natürlich noch angepasst werden muss. Hier sieht man aber schonmal die BASICS, die man wissen muss...

Share this post


Link to post

Wie gesagt: Das sind absolute BASICS!

Wenn man HTML-Code innerhalb einer PHP Seite einfügen will, dann machst du das, wie oben im Beispiel.

echo "HIER HTML CODE";

Share this post


Link to post

He Super,

soweit funktioniert alles und ich kann den captcha Code sehen!!

Jedoch komme ich mit Seite zwei nicht klar!! Hier sollte ich kontakt_ausw in einer IP.Content erstellen und bei der kontakt.php action verlinken!

Das Problem ist nur das er mir immer einen Fehler rausschreibt!!

Was muss genau in die zweite Seite rein?

Share this post


Link to post

Leider kann ich den letzten Beitrag nicht mehr ändern!

So habe mir ganz ganz wenig php angeeignet, damit ich überhaupt verstehe was da alles so drinnen steht im Code!!!

Ich gebe es zu, viel haabe ich mir nicht gemerkt, aber es funktioniert schon einmal!! *gg*

Aber bezüglich der general Box habe ich noch eine Frage, denn den normalen Text bekomme ich schön rein, jedoch wie ich dann das Kontaktformular einfüge ist mir noch ein Rätsel.

Vll. hat da ja jemand eine Rat wie das funktioniert.

HIER MEIN CODE:



echo '<div class="general_box"> 

<h3>Hier steht mein Titel</h3>

<p>

<br>

Da steht dann mein Text in der Box und darunter in der gleichen Box soll das Kontaktformular stehen.

</p>






</div>';



// Alle Fehler und Notices anzeigen


 	session_start();


 	$CAPTCHA_TempString="";


 	// Zufallsfunktion für Zahlen und Buchstaben

 	function GetRandomChar() {


 	// Zufallszahl generieren

 	mt_srand((double)microtime()*1000000);

 	$CAPTCHA_RandVal = mt_rand(1,2);


 	// Buchstabensalat generieren jeh nachdem ob Randval 1 oder 2 ist

 	switch ($CAPTCHA_RandVal) {

 	case 1:

 // Zahlen 0-9

 	$CAPTCHA_RandVal = mt_rand(48, 57);

 	break;

 	case 2:

 // Grosse Buchstaben

 	$CAPTCHA_RandVal = mt_rand(65, 90);

 	break;

 	}


 	// Zufallscode ausgeben

 	return chr($CAPTCHA_RandVal);

 	}


 	// Zufallscode x-stellig ausgeben

 	for ($i = 1; $i <= 6; $i++) {

 	$CAPTCHA_TempString .= GetRandomChar();

 	}


 	// Text in Sessionvariable speichern

 	if (isset($CAPTCHA_TempString)) {

 	$_SESSION["CAPTCHA_RndText"] = str_replace('I','E',str_replace('0','3',str_replace('1','S',str_replace('B','F',str_replace('O','P',str_replace('4','A',str_replace('D','K',$CAPTCHA_TempString)))))));

 	} else {

 	die("Zufallscode konnte nicht generiert werden!");

 	}





echo "<h3>Kontaktformular</h3>


<form method=\"post\" action=\"http://www.meineseite.com/index.php?/page/kontakt/kontakt_ausw\" name=\"kontakt\">

 	<table>

 	<tr><td><p>Name: </p></td><td><p><input name=\"name\" size=\"34\" type=\"text\""; if (isset($_SESSION['name'])) { echo 'value="' . $_SESSION['name'] . '"'; } echo "/></p></td></tr>

 	<tr><td><p>Email: </p></td><td><p><input name=\"email\" size=\"34\" type=\"text\""; if (isset($_SESSION['email'])) { echo 'value="' . $_SESSION['email'] . '"'; } echo "/></p></td></tr>

 	<tr><td><p>Betreff: </p></td><td><p><input name=\"betreff\" size=\"34\" type=\"text\""; if (isset($_SESSION['betreff'])) { echo 'value="' . $_SESSION['betreff'] . '"'; } echo "/></p></td></tr>

 	<tr><td><p>Nachricht: </p></td><td><p><textarea name=\"nachricht\" rows=\"3\" cols=\"26\">"; if (isset($_SESSION['nachricht'])) { echo $_SESSION['nachricht'] ; } echo "</textarea></p></td></tr>


 	<tr><td> </td><td><img border=\"0\" src=\"captcha_img.php?PHPSESSID="; echo session_id(); echo "&ver="; echo time(); echo"\" alt=\"\" /></td></tr>

 	<tr><td><p>Code: </p></td><td><p><input maxlength=\"6\" name=\"txtCode\" size=\"34\" type=\"text\" /></p></td></tr>

 	<tr><td> </td><td><p><input class=\"button\" type=\"submit\" name=\"eintrag\" value=\"eintragen\" /> <input class=\"button\" type=\"reset\" name=\"reset\" value=\"l&ouml;schen\" /></p></td></tr>

 </table>

</form>";


Share this post


Link to post

Wie wäre es, wenn du den abschließenden </div> Code ans Ende legst, nämlich genau dort hin, bis wo der Inhalt in dem DIV erscheinen soll?

In diesem Falle also vor </form>.

Share this post


Link to post

natürlich habe ich an das auch schon gedacht und getestet, aber ich bekomme immer folgende Fehlermeldung.

[b]Parse error[/b]: syntax error, unexpected T_STRING, expecting ',' or ';' in [b]/home/meinbenutzer/www.meineseite.com/admin/applications_addon/[url="https://www.invisionpower.com/clients/index.php?app=nexus&module=promotion&section=referral&id=5636&direct=aHR0cDovL3d3dy5pbnZpc2lvbnBvd2VyLmNvbS8%3D"]IPS[/url]/ccs/sources/pages.php(137) : eval()'d code[/b] on line [b]59[/b]

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×