php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.08.2008, 08:58  
Neuer Benutzer
 
Registriert seit: 01.08.2008
Beiträge: 5
chicco4u befindet sich auf einem aufstrebenden Ast
Standard Kontaktformular mit Spamschutz und include Navigation?

Hallo an alle,
ich brauche noch mal eure Hilfe.
Ich habe ein "Kontaktformular mit Spamschutz" von "Meine erste Homepage" in meine Website integriert. Ich habe aber noch ein Problem. Die Navigation auf meiner Site ist so aufgebaut:
Code:
<?php if ($_GET['page']=="") $_GET['page']="index.html";?>
-
-
href="index.php?page=contact/contact.php">Kontakt
-
<?php include($_GET['page']); ?>
Also mit Tabelle; dass die Navigation in einer Zelle und die Inhalte in einer anderen Zelle sind.
Nur das Kontaktformular kommt damit nicht zurecht und öffnet beim ausführen immer die Startseite(und sendet auch keine Mail bzw. Rückgabe-Infos: OK-gesendet o.ä.).
Lasse ich das Formular auf einer separaten Seite laufen:
Code:
href="contact/contact.php">Kontakt
klappt alles einwandfrei.
Ich glaube durch den Befehl "echo" für die Ausgabe von Infos oder auch das senden der Mail, wird einfach die Hauptseite oder die oberste Seite (mal ganz laienhaft ausgedrückt)aufgerufen.
Da das optisch natürlich nicht schön aussieht auf der HP(www.dssv1956.de, keine Werbung!), würde ich das gerne im Kontaktformular ändern.
Hier noch das Script des Kontaktformulars:
Code:
<?php

// Wenn alle Felder ausgefuellt wurden und der Captcha stimmt, wird ein Cookie gesetzt

if($_GET['action'] != "" && !empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']) && ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email']))
{
setcookie("spam_protection", "spam_protection", time()+500);
}

// Erstellen einer Rechenaufgabe

$Zahl_1 = intval(rand(1, 5));
$Zahl_2 = intval(rand(1, 5));

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />

<title>Kontaktformular</title></head>

<body>

<?php

// Wenn das Formular gesendet werden soll...
if($_GET['action'] == "send")
{

// ...der Cookie gegen Spam nicht gesetzt ist...
if($_COOKIE["spam_protection"] != "spam_protection")
{

// ... und die Rechenaufgabe FALSCH geloest wurde...
if($_POST['number'] != md5($_POST['arithmetic']))
{

// ...dann eine Fehlermeldung ausgeben!
echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /> <font style=\"color:darkred; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Die Rechenaufgabe wurde falsch gel&ouml;st!</b></font></p>";

}

// Ansonsten, wenn die Rechenaufgabe RICHTIG geloest wurde stimmt...
if($_POST['number'] == md5($_POST['arithmetic']))
{

// ...und die eingegeben E-Mail Adresse in Wahrheit keine ist...
if(!ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email']))
{

// ...dann eine Fehlermeldung ausgeben!
echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /> <font style=\"color:darkred; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Die eingegebene E-Mail-Adresse ist ung&uuml;ltig!</b></font></p>";

}

// Ansonsten, wenn die eingegebene E-Mail Adresse auch wirklich eine ist...
if(ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email']))
{

// ...und kein Feld leer ist...
if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']))
{

// dann den ganzen Muell von Spambots oder auch menschlichen Spammern entfernen...
$name          = nl2br(stripslashes(htmlspecialchars($_POST['name'])));
$IP            = getenv("REMOTE_ADDR");

$absender      = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "", $_POST['email'] );
$absender      = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $absender );

$nachricht     = nl2br(stripslashes(htmlspecialchars($_POST['message'])));

// ...die Nachricht, die Sie erhalten moechten, wenn eine neue Nachricht an Sie versandt wurde, definieren...
$mailnachricht = "Hallo!\n\nEs ist eine neue Nachricht fuer Sie eingetroffen:\n\n---------------------------------------------\n\nName:\n$name\n\nIP:\n$IP\n\nE-Mail:\n$absender\n\nNachricht:\n$nachricht\n\n---------------------------------------------\n\nSie koennen dem Absender der Nachricht direkt antworten, indem Sie einfach auf diese E-Mail antworten.\n\nMfG\nBotty ;-)";

// ...an Sie verschicken...
mail("Ihre@E-Mail.de", "Neue Nachricht fuer Sie!", $mailnachricht, "From: $name <$absender>");

// ...und dem Benutzer sagen, dass alles glatt lief!
echo "<p><img src=\"ok.gif\" width=\"20\" height=\"20\" alt=\"Okay\" /> <font style=\"color:darkgreen; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Vielen Dank f&uuml;r Ihre Nachricht!</b> Wir lassen Ihnen umgehend eine Antwort zukommen.</font></p>";

}

// Wenn nicht alle Felder ausgefuellt wurden, dann...
else

{

// eine Fehlermeldung ausgeben!
echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /> <font style=\"color:darkred; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Bitte f&uuml;llen Sie alle Felder aus!</b></font></p>";

}

}

}

}

}

?>

<form id="form" name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?action=send">

<table width="400" cellpadding="2" cellspacing="2" style="background-color:#E6E6E6; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:12px">

<tr>

<td width="162" style="background-image: url(hintergrund.jpg)">
<strong>Ihr Name</strong></td>

<td width="188">

<input name="name" type="text" id="name" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" value="<?php echo $_POST['name']; ?>"/></td>
<td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Bitte geben Sie Ihren Namen an, damit wir Sie pers&ouml;nlich ansprechen k&ouml;nnen!" /></td>
</tr>

<tr>

<td width="162" style="background-image: url(hintergrund.jpg)">
<strong>Ihre g&uuml;ltige E-Mail Adresse</strong></td>

<td width="188">

<input name="email" type="text" id="email" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" value="<?php echo $_POST['email']; ?>"/></td>
<td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Ihre aktuelle, g&uuml;ltige E-Mail Adresse, an der wir Ihnen antworten!" /></td>
</tr>

<tr>

<td width="162" style="background-image: url(hintergrund.jpg)">
<strong>Ihre Nachricht</strong></td>

<td width="188">

<textarea name="message" id="message" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px; height:100px" rows="4" cols="15"><?php echo $_POST['message']; ?></textarea></td>
<td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Bitte formulieren Sie Ihr Anliegen m&ouml;glichst detailliert!" />

</td>

</tr>

<tr>

<td width="162" style="background-image: url(hintergrund.jpg)">

<strong>Wieviel ist <?php echo $Zahl_1; ?> plus <?php echo $Zahl_2; ?>?</strong>

</td>

<td>

<input name="number" type="hidden" id="number"  value="<?php echo md5(( $Zahl_1 + $Zahl_2 )); ?>"/>
<input name="arithmetic" type="text" id="arithmetic" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" onfocus="if(this.value=='Das Ergebnis bitte hier hinein...')this.value=''" onblur="if(this.value=='')this.value='Das Ergebnis bitte hier hinein...'" value="Das Ergebnis bitte hier hinein..."/>

</td>

<td align="center" valign="middle">

<img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Spamschutz: Addieren Sie bitte <?php echo $Zahl_1; ?> und <?php echo $Zahl_2; ?> und schreiben Sie deren Summe in das Textfeld." />

</td>

</tr>

<tr>

<td style="background-image: url(hintergrund.jpg)">
<strong>M&ouml;gliche Aktionen</strong>
</td>

<td>

<?php

// Wenn KEIN Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button anklickbar sein
if($_COOKIE["spam_protection"] != "spam_protection")
{

?>

<input name="submit" type="submit" id="submit" value="Senden" /> <input name="reset" type="reset" id="reset" value="Zur&uuml;cksetzen" />

<?php

}

// Wenn aber ein Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button blockiert werden
if($_COOKIE["spam_protection"] == "spam_protection")
{

?>

<input name="submit" type="submit" id="submit" value="Senden" disabled="true" /> <input name="reset" type="reset" id="reset" value="Zur&uuml;cksetzen" />

<?php

}

?>

</td>

<td align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Sie k&ouml;nnen das Formular absenden oder zur&uuml;cksetzen!" /></td>

</tr>

<tr>

<td style="background-image: url(hintergrund.jpg)"><strong>Sie ben&ouml;tigen Hilfe? </strong></td>
<td colspan="2">Mit dem Mauszeiger auf das Fragezeichen zeigen und Hilfe naht :-)</td>

</tr>
  
</table>

</form>

</body>

</html>
Persönliche Daten für meine Site habe ich natürlich schon eingefügt im Original.
Danke für gute Tipps im voraus.
chicco4u ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.08.2008, 09:52  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Also mal abgesehen davon, dass man Tabellen definitiv nicht für das Design einer Website verwenden sollte (unbedint ändern), würde ich folgende Dinge ändern:

1. Übergib nicht den Pfad zu deinem Kontaktformular in der URL. Ich mach das immer so, dass ich alle Inhalts-Dateien in einen Ordner schmeisse, dann einfach den Namen der Datei ohne Extension (z.B. .php oder .html) übergebe, mir dann den Pfad mit PHP zusammensetze und dann überprüfe, ob die Datei existiert und das auch auf meinem Server und nicht irgendwo sonst im Internet.

2. Du solltest alles, was Doctype, <html>, <head> und <body> betrifft aus der Datei, wo das Kontaktformular drin ist, rausnehmen. Alle diese Tags gehören ausschliesslich in die Datei, die die Navigation und den Inhalt includen. In den anderen Dateien sollte/darf das nicht vorhanden sein.

3. Füge deine vielen If-Bedingungen doch alle in einer If-Bedingung zusammen. Sieht ja so, wie das momentan ist, unmöglich aus. Wenn man das alles korrekt einrücken würde, müsste man ja sehr oft die Tab-Taste drücken ^^
Z.B. die ersten 3 Ifs kannst du gleich in ein einziges reinpacken, einfach mit && verbinden. Die nächsten 2 ebenfalls und die 2 danach auch. Damit machst du aus 7 if-Bedingungen 3 draus.
Montellese ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Kontaktformular - bitte helft mir celine70 PHP Tipps 2008 3 19.05.2008 11:28
Navigation fixen Desert PHP Tipps 2008 0 12.05.2008 17:00
include isoliert ausführen – Lösungsansatz gesucht veit PHP-Fortgeschrittene 8 09.04.2008 09:26
hinter include wird eine 1 angezeigt |~Râdîant~| PHP Tipps 2008 8 19.09.2007 13:52
include Dateien wieder ausängen o.Ä. netti PHP Tipps 2007 8 17.12.2006 15:14
include problem Canni PHP Tipps 2006 26 14.11.2006 14:24
Sessiondaten in include nutzen PHP Tipps 2006 17 23.02.2006 17:18
include, nur bestimmten teil neu laden Calli PHP Tipps 2006 2 27.01.2006 15:57
Navigation snatch-ic PHP Tipps 2007 4 08.01.2006 12:11
include aus frame heraus auf anderen Frame Calli PHP Tipps 2005-2 2 08.09.2005 15:23
Auf Firmen-Server funzt kein include aus fremden Verzeichnis PHP-Fortgeschrittene 3 19.07.2005 16:49
Navigation mit variabeln / (include) PHP Tipps 2005 6 30.03.2005 19:05
[Erledigt] Problemme mit include... PHP Tipps 2004-2 6 30.11.2004 12:20
HTTP_GET_VARS + Include = Array leer PHP Tipps 2004-2 3 24.11.2004 15:12
Kontaktformular - Nachricht wurde verschickt PHP Tipps 2004 4 22.10.2004 09:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
kontaktformular mit spamschutz, spamschutz code, spamschutz php, php addition spamschutz, kontaktformular spamschutz, html code für spamschutz kontaktformular, kontaktformular mit rechenaufgabe, navigation php include, html kontaktformular mit spamschutz, php kontaktformular mit spamschutz und 12 feldern, kontaktformular für homepage spamschutz, php cookie gegn spam, kontaktformular absenden rechenaufgabe als spam schutz, php navigation include, kontaktformular html, kontaktformular php mit spam code, php include pfad ?, kontaktformular php mit spamschutz, spamschutz php cookies, setcookie(\spam_protection\, \spam_protection\, time() 500);

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum