zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > CSS
Seite neu laden Empfehlung für ein Kontaktformular

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 06.07.2010, 11:25
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 18.06.2010
Beiträge: 26
Sand10 befindet sich auf einem aufstrebenden Ast
Reden [VERSCHOBEN] Empfehlung für ein Kontaktformular

Hallo,

ich plane ein Kontaktformular auf meiner Homepage.
Das Design möchte ich mit css realisieren.

Soweit ich weiß wird das Kontaktformular selbst in php geschrieben.

Kennt Ihr ein kostenloses und möglichst spamfreies Kontaktformular, dass frei verwendbar ist?
Könnt Ihr eins empfehlen?

Da meine php-Kenntnisse sehr beschränkt sind, wäre es ein unendlicher Vorteil für mich, wenn ich auf bereits vorhandenen Code zurückgreifen könnte.

Danke für Eure Hilfe

Liebe Grüße
Nadine

Geändert von Sand10 (06.07.2010 um 21:54 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 06.07.2010, 11:30
Benutzerbild von heiko_rs
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 18.09.2005
Ort: Berlin
Beiträge: 9.848
heiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblick
Standard

Hier z.B. gibt's eines: http://xhtmlforum.de/45301-kontaktfo...rierefrei.html
__________________
Wer keinen Link auf seine problembehaftete Seite posten kann, weil diese noch nicht online ist: Testcase bauen, online stellen, Link posten.
Internet-Grundregel: Unbekannte Begriffe googeln! (Erspart 99% aller Nachfragen.)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 06.07.2010, 11:43
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 18.06.2010
Beiträge: 26
Sand10 befindet sich auf einem aufstrebenden Ast
Standard

Danke für den Hinweis zu fox, Heiko.

Hierbei bin ich auf diesen post gestoßen. Das müsste doch neuer sein, oder?

http://xhtmlforum.de/51007-bitte-aus...tml#post377412

Würdest du das hier empfehlen?



Lieben Gruß
Nadine

Geändert von Sand10 (06.07.2010 um 11:48 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 06.07.2010, 11:50
Benutzerbild von heiko_rs
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 18.09.2005
Ort: Berlin
Beiträge: 9.848
heiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblick
Standard

Ja, den kannst Du auch heranziehen
__________________
Wer keinen Link auf seine problembehaftete Seite posten kann, weil diese noch nicht online ist: Testcase bauen, online stellen, Link posten.
Internet-Grundregel: Unbekannte Begriffe googeln! (Erspart 99% aller Nachfragen.)
Mit Zitat antworten
  #5 (permalink)  
Alt 06.07.2010, 11:55
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 18.06.2010
Beiträge: 26
Sand10 befindet sich auf einem aufstrebenden Ast
Standard

Dann hole ich mir mal einen Kaffee und versuche das zu verstehen!
Mit Zitat antworten
  #6 (permalink)  
Alt 06.07.2010, 12:11
Benutzerbild von heiko_rs
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 18.09.2005
Ort: Berlin
Beiträge: 9.848
heiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblickheiko_rs ist ein wunderbarer Anblick
Standard

Na dann mal Prost
__________________
Wer keinen Link auf seine problembehaftete Seite posten kann, weil diese noch nicht online ist: Testcase bauen, online stellen, Link posten.
Internet-Grundregel: Unbekannte Begriffe googeln! (Erspart 99% aller Nachfragen.)
Mit Zitat antworten
  #7 (permalink)  
Alt 06.07.2010, 18:23
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 18.06.2010
Beiträge: 26
Sand10 befindet sich auf einem aufstrebenden Ast
Standard

Man, das klappt nicht!

Ich verstehe das alles nicht.
Ich habe die Datei von fox in meine index.php kopiert und schon bekomme ich eine Fehlermeldung!

Sehr Ihr meinen Fehler?

Kontaktformular mit Spamschutz


Das ist meine index.php:
PHP-Code:
<?php

require_once 'secureForm.php';

$form_sent false

// Eine neue Instanz der Klasse wird erzeugt 
$form = new SecureForm(); 

// Für jedes Formfeld wird eine zufällige (CSS-)ID erzeugt und in den Variablen gespeichert 
$id_name $form->getID('name'); 
$id_email $form->getID('email'); 
$id_nachricht $form->getID('nachricht'); 

// Der Submit-Button muss nicht zwangsweise "anonymisiert" werden 
$id_submit $form->getID('submit'); 


// Die CSS-Datei wurde vom Browser angefordert und wird abgeschickt 
if (isset ($_GET['getCSS'])) { 
    
header ("Content-Type: text/css"); 
    
$form->generateCSS(); 
    exit; 


// Es wird nun geprüft, ob der Submit-Knopf gedrückt und das Formular abgesendet wird. 
// Die Formularfelder sind mit den verschiedenen IDs als Namen gespeichert. 
if (!empty ($_POST[$id_submit])) { 
    
$form_sent true
     
    
// Zuerst überprüfen wir, ob alle gewünschten Felder ausgefüllt sind 
    
if (!empty ($_POST[$id_name]) && !empty ($_POST[$id_email]) && !empty ($_POST[$id_nachricht])) { 
         
        
// Danach wird geprüft, ob das versteckte Feld ausgefüllt wurde. 
        // Sollte das der Fall sein haben wir es höchstwahrscheinlich mit einem Spambot zu tun 
        // Hier könnten auch weitere Aktionen unternommen werden, z.B. loggen und/oder sperren der IP des Bots, o.ä. 
        
if (!empty ($_POST[$form->getSecretID()])) { 
            
session_destroy (); 
            echo 
'Spambot erkannt.'
            exit; 
        } 
         
        
// Nun können wir die E-Mail versenden 
        
$name $_POST[$id_name]; 
        
$email $_POST[$id_email]; 
        
$nachricht $_POST[$id_nachricht]; 
         
        
// E-Mail verschicken...  
         
        
session_destroy (); 
        exit; 
    } 
     
    
// Falls nicht alle Felder ausgefüllt sind sollte die Session-ID sowie die geheimen IDs erneuert werden, 
    // um mögliche Brut-Force-Angriffe von Bots aus dem Weg zu gehen. 
    // WICHTIG: Vor dem erneuern dürfen die Header noch nicht gesendet werden! 
    
$form->regenerateIDs(); 


/* Nun wird das Formular erzeugt: 
Eventuell wird es auch in Templates eingebunden o.ä. 
Vorher sollten normalerweise der HTML-Kopf, etc. kommen 
Wichtig ist, dass die Session-ID übergeben wird! 
Alternativ kann diese auch mit einem versteckten Feld und POST übergeben werden, 
PHP erkennt diese automatisch. 
Außerdem dürfen die beiden Stylesheets nicht fehlen! 

Das erste Stylesheet ist die Vorgabe für die normalen Felder. 
Da diese Angabe *vor* den anderen kommt, gilt diese. 
Bei den versteckten Feldern wird zusätzlich ein !important hingehängt, damit werden die Felder unsicht- und -hörbar.*/ 

echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Kontaktformular mit Spamschutz</title>
    <style type="text/css">
    /*<[!CDATA[*/
        body { 
            color: #555;
            font: 0.8em \'Lucida Grande\', Verdana, Tahoma, sans-serif;
        }
        fieldset {
            border: 1px dotted #A6A6A6;
            padding: 10px;
            margin: 5px;
            margin-bottom: 20px;
        }
        fieldset legend {
            font-weight: bold;
        }
        
        /* Dieser Abschnitt ist fuer das Skript wichtig */
        .form input, .form textarea { 
            position: static !important; 
            display: block !important; 
            speak: normal !important; 
        }
    /*]]>*/
    </style>
    <!-- Hier nicht die Session-ID vergessen -->
    <link rel="stylesheet" type="text/css" href="index.php?getCSS&amp;' 
SID '" media="all" /> 
</head>

<body>

<fieldset>
    <legend>Kontaktformular</legend>

    <!-- Auch hier ist die Session-ID wichtig, um die IDs spaeter wieder den Feldern zuzuordnen -->
    <form action="index.php?' 
SID '" method="POST" class="form">'

// Nun werden die einzelnen Eingabefelder ausgegeben. 
// Dabei wird gleich überprüft, ob das Formular bereits abgesendet wurde und ob Felder fehlen. 
echo '
    <label>Dein Name' 
. ((($form_sent && empty ($_POST[$id_name]))) ? ' (fehlt)' '') . ':</label> <input type="text" id="' $id_name '" name="' $id_name '" value ="' . ((!empty ($_POST[$id_name])) ? htmlspecialchars ($_POST[$id_name]) : '') . '" /><br /> 
    <label>Deine E-Mail-Adresse' 
. ((($form_sent && empty ($_POST[$id_mail]))) ? ' (fehlt)' '') . ':</label> <input type="text" id="' $id_email '" name="'  .$id_email '" value="' . ((!empty ($_POST[$id_email])) ? htmlspecialchars ($_POST[$id_email]) : '') . '" /><br /> 
    <label>Deine Nachricht' 
. ((($form_sent && empty ($_POST[$id_nachricht]))) ? ' (fehlt)' '') . ':</label><br /> 
    <textarea name="' 
$id_nachricht '" id="' $id_nachricht '">' . ((!empty ($_POST[$id_nachricht])) ? htmlspecialchars ($_POST[$id_nachricht]) : '') . '</textarea><br />
    <input type="text" name="' 
$form->getSecretID() . '" id="' $form->getSecretID() . '" value="" />' // Auch das versteckte Feld bekommt seinen Platz 
    
'
    <input type="submit" name="' 
$id_submit '" id="' $id_submit '" value="Formular absenden" />
    
    </form>

</fieldset>

</body>
</html>'


// Fertig. :) 
// Man könnte das versteckte Feld noch an zufälligen Positionen erscheinen lassen, um es den Spambots nicht zu leicht zu machen.
Das ist mein secureForm.php:
PHP-Code:
<?php

/**
 * No more SPAM: Secure your form...
 * 
 * INSTALL:
 * You *must* include a css-definition for the form fields like this:
 * input, textarea { position: static !important; display: block !important; speak: normal !important; }
 * 
 * This is very important, otherwise the user wont see ANY fields!
 * You also have to include the class-generated css-definitions in your document.
 *
 * @author Steffen Manzer, noecho.de <noecho.smanzer@gmail.com>
 * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
 * @see http://xhtmlforum.de/51007-bitte-austesten-formular-spamschutz.html
 *
 */
class SecureForm
{
    private
        
$secret        null,
        
$keys        = array (),
        
$confusing    = array ();
    
    public function 
__construct () {
        
// make sure that the session id will not be saved in cookies
        
@ini_set('session.use_cookies'0);
        @
ini_set('session.use_only_cookies'0);
        
session_start();
        
        if (!empty (
$_SESSION['secret'])) {
            
$this->secret $_SESSION['secret'];
        } else {
            
$this->secret $this->generateID();
        }
        
        if (!empty (
$_SESSION['keys'])) {
            
$this->keys $_SESSION['keys'];
        }
        
        if (!empty (
$_SESSION['confusing'])) {
            
$this->confusing $_SESSION['confusing'];
        }
        
        
// dont cache this or you'll be shot!
        
if (!headers_sent ()) {
            
header('Cache-Control: no-cache, must-revalidate');
            
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        }
    }
    
    
/**
     * Save keys in Session
     *
     */
    
public function __destruct ()
    {
        
$_SESSION['secret'] = $this->secret;
        
$_SESSION['keys'] = $this->keys;
        
$_SESSION['confusing'] = $this->confusing;
    }
    
    
/**
     * Generate a random ID
     *
     * @return string
     */
    
protected function generateID ()
    {
        return 
substr (chr (rand (97122)) . sha1 (uniqid ()), 0rand (58));
    }

    
/**
     * Add new field
     *
     * @param $label label for the field
     * @return string $key
     */
    
public function getID ($label)
    {
        if (empty (
$this->keys[$label])) {
            
$this->keys[$label] = $this->generateID();
        }
        return 
$this->keys[$label];
    }
    
    
/**
     * return the secret key
     *
     * @return unknown
     */
    
public function getSecretID ()
    {
        return 
$this->secret;
    }
    
    
/**
     * Generate new Session-ID and new keys
     * WARNING: This function must be called before any output.
     * The headers may not be sent yet!
     *
     * @return bool
     */
    
public function regenerateIDs ()
    {
        if (
headers_sent ()) return false;
        @
session_regenerate_id (true);
        
$this->secret $this->generateID();
        foreach (
$this->keys as $key => $value) {
            
$this->keys[$key] = $this->generateID();
        }
        
$this->confusing = array ();
        return 
true;
    }
    
    
/**
     * Generate the css necessary for the forms
     *
     * @param $return return the generated css or output it directly
     * @return mixed string|null
     */
    
public function generateCSS ($return false)
    {
        
$content '@media all{';
        
        
$ids array_values ($this->keys);
        if (empty (
$this->confusing)) {
            for (
$i 0$i < (rand(815)); $i++) {
                
$id $this->generateID();
                
$ids[] = $id;
                
$this->confusing[] = $id;
            }
        } else {
            
$ids $ids $this->confusing;
        }

        
sort ($ids);    
        
$num count($ids);
        
$pos array_rand ($ids);
        
        
$displayed false;
        for (
$i 0$i $num$i++) {
            
            
// hidden field
            
if (($pos == $i) && (!$displayed)) {
                
$content .= '#' $this->secret ' {';
                
$content .= "position:absolute !important;left:-99999px;speak:none !important;display:none !important;}";
                
$displayed true;
                
$i--;
            
            
// any other form field
            
} elseif (in_array ($ids[$i], $this->keys)) {
                
$content .= '#' $ids[$i] . " {";
                
$content .= "position:absolute;left:-99999px;speak:none;display:none;}";
        
            
// random, confusing field
            
} else {
                
$r = (rand (01) == 1);
                
$content .= '#' $ids[$i] . " {";
                
$content .= "position:absolute" . ($r ' !important' '') . ";left:-99999px;speak: none" . ($r ' !important' '') . ";display: none" . ($r ' !important' '') . ';}';
            }
        }
        
$content .= '}';
        if (
$return) {
            return 
$content;
        } else {
            echo 
$content;
        }
    }
}

Ich bin am verzweifeln - das ist wirklich der allererste Schritt und der geht schon schief!!!

Danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 06.07.2010, 18:32
Benutzerbild von Hasso
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 02.05.2006
Beiträge: 139
Hasso befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht hilft dir das weiter: SELFHTML Forumsarchiv / 2005 / November / Cannot send session cache limiter - headers already sent
__________________
Hasso
Mit Zitat antworten
  #9 (permalink)  
Alt 06.07.2010, 18:47
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 18.06.2010
Beiträge: 26
Sand10 befindet sich auf einem aufstrebenden Ast
Standard

Danke Hasso, aber das scheint nicht die Lösung zu sehen. ich ahbe ja keinen Output vor session_start();...
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 06.07.2010, 19:56
Benutzerbild von Hasso
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 02.05.2006
Beiträge: 139
Hasso befindet sich auf einem aufstrebenden Ast
Standard

Auf jeden Fall hast du eine Leerzeile vor require_once 'secureForm.php'. Was ist, wenn du die rausnimmst?
__________________
Hasso
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kontaktformular Fehler ... root-2k (X)HTML 3 22.11.2010 21:05
kontaktformular mit captcha fehler talkuvit Serveradministration und serverseitige Scripte 30 08.06.2010 19:52
PHP Kontaktformular und verschiedene Browser HTMLLernender (X)HTML 1 22.01.2010 12:08
PHP Kontaktformular funktioniert nicht wie es soll bodoalbstadt Serveradministration und serverseitige Scripte 9 13.09.2008 13:56
CSS-Formatierung Kontaktformular deepblue CSS 6 21.02.2007 15:51


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:39 Uhr.