Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Eigenes Kontakformular mit kleinem Fehler

Frage Entwicklung PHP

Mitglied: Haliel

Haliel (Level 1) - Jetzt verbinden

01.04.2009, aktualisiert 19:37 Uhr, 3860 Aufrufe, 3 Kommentare

Dumme Cookies

Hallo,

ich bin gerade dabei mal ein eigenes Kontakformular zu erstellen, dummerweiße klappt das mit dem Cookie setzten nicht so ganz.
Hier mal der Code

kontak.php
01.
<?php 
02.
// Wenn alle Felder ausgefuellt wurden und der Captcha stimmt, wird ein Cookie gesetzt 
03.
if($_GET['action'] != "" && !empty($_POST['name']) && $_POST['number'] != md5($_POST['arithmetic']) && !empty($_POST['message']) && ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email']) && !empty($_POST['email'])) 
04.
05.
setcookie("spam_protection", "spam_protection", time()+500); 
06.
07.
 
08.
// Erstellen einer Rechenaufgabe 
09.
$Zahl_1 = intval(rand(1, 5)); 
10.
$Zahl_2 = intval(rand(1, 5)); 
11.
?> 
12.
 
13.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
14.
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
15.
<html xmlns="http://www.w3.org/1999/xhtml"
16.
<head> 
17.
<title>Kontaktformular</title> 
18.
<link href="layout.css" rel="stylesheet" type="text/css" /> 
19.
<link href="style.css" rel="stylesheet" type="text/css" /> 
20.
</head> 
21.
<body> 
22.
<?php 
23.
 
24.
 $mailsent = 0;  
25.
 if($_GET['action'] == "send"
26.
27.
   if(empty($_POST['name']) or empty($_POST['email']) or empty($_POST['email1']) or $_POST['email'] != ($_POST['email1']) or !ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email']) or empty($_POST['message']) or $_POST['number'] != md5($_POST['arithmetic'])) 
28.
29.
    $info = 'Bitte bef&uuml;llen sie alle Felder'; 
30.
   
31.
    if(empty($_POST['name'])) 
32.
33.
     $color_name = "#FF0000"
34.
35.
    if(empty($_POST['email'])) 
36.
37.
     $color_email = "#FF0000"
38.
39.
    else 
40.
41.
     if(!ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email'])) 
42.
43.
      $info='Die eingegebene E-Mail-Adresse ist ung&uuml;ltig!'; 
44.
      $color_email = "#FF0000"
45.
     }  
46.
47.
    if(empty($_POST['email1'])) 
48.
49.
     $color_email1 = "#FF0000"
50.
51.
    else 
52.
53.
     if($_POST['email'] != ($_POST['email1'])) 
54.
55.
      $info='Die eingegebenen E-Mail-Adressen stimmen nicht &uuml;berein!'; 
56.
      $color_email = "#FF0000"
57.
      $color_email1 = "#FF0000"
58.
     }    
59.
60.
    if(empty($_POST['message'])) 
61.
62.
     $color_message = "#FF0000"
63.
64.
    if(empty($_POST['arithmetic'])) 
65.
66.
      $color_arithmetic = "#FF0000"
67.
68.
    elseif($_POST['number'] != md5($_POST['arithmetic'])) 
69.
70.
     $color_arithmetic = "#FF0000"
71.
     $info='Die Rechenaufgabe wurde falsch gel&ouml;st!'; 
72.
    }    
73.
    
74.
   }  
75.
   else 
76.
77.
    // dann den ganzen Muell von Spambots oder auch menschlichen Spammern entfernen... 
78.
    $name          = nl2br(stripslashes(htmlspecialchars($_POST['name']))); 
79.
    $IP            = getenv("REMOTE_ADDR"); 
80.
 
81.
    $absender      = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "", $_POST['email'] ); 
82.
    $absender      = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $absender ); 
83.
 
84.
    $nachricht     = nl2br(stripslashes(htmlspecialchars($_POST['message']))); 
85.
 
86.
    // ...die Nachricht, die Sie erhalten moechten, wenn eine neue Nachricht an Sie versandt wurde, definieren... 
87.
    $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\nIhr Webmaster ;-)"
88.
 
89.
    // ...an Sie verschicken... 
90.
    mail("%emailadrresse%", "Neue Nachricht fuer Sie!", $mailnachricht, "From: $name <$absender>"); 
91.
 
92.
    // ...und dem Benutzer sagen, dass alles glatt lief! 
93.
    $erfolg='Nachricht wurde erfolgreich an uns versand.<br>Wir werden ihre Nachricht umgehend beantworten.'; 
94.
    $mailsent = 1; 
95.
96.
   
97.
98.
  
99.
  
100.
?> 
101.
Sie k&ouml;nnen uns eine Nachricht &uuml;ber das Kontaktformular schreiben. 
102.
<div id="contact"
103.
 <p class="fehlermeldung"><?php echo $info; ?></p> 
104.
    <p class="erfolg"><?php echo $erfolg; ?></p> 
105.
  <form class="form" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>?action=send" accept-charset="UTF-8" method="post" id="contact-mail"
106.
    <div class="kf"
107.
      <div style="color:<?php echo $color_name; ?>">Ihr Name:</div> 
108.
      <div> 
109.
        <input name="name" type="text" id="name" maxlength="255" value="<?php echo htmlspecialchars($_POST['name']); ?>"/> 
110.
        <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!" /> </div> 
111.
    </div> 
112.
    <div class="kf"
113.
      <div style="color:<?php echo $color_email; ?>">Ihre E-Mail-Adresse:</div> 
114.
      <div> 
115.
        <input type="text" maxlength="255" name="email" id="email" value="<?php echo htmlspecialchars($_POST['email']); ?>"/> 
116.
        <img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Ihre aktuelle, g&uuml;ltige E-Mail Adresse, an der wir Ihnen antworten!" /> </div> 
117.
    </div> 
118.
    <div class="kf"
119.
      <div style="color:<?php echo $color_email1; ?>">Ihre E-Mail Adresse wiederholen:</div> 
120.
      <div> 
121.
        <input type="text" maxlength="255" name="email1" id="email1" value="<?php echo htmlspecialchars($_POST['email1']); ?>"/> 
122.
        <img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Ihre aktuelle, g&uuml;ltige E-Mail Adresse, an der wir Ihnen antworten!" /> </div> 
123.
    </div> 
124.
    <div class="kf"
125.
      <div style="color:<?php echo $color_message; ?>">Nachricht:</div> 
126.
      <div> 
127.
        <textarea name="message" id="message"><?php echo htmlspecialchars($_POST['message']); ?></textarea> 
128.
        <img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Bitte formulieren Sie Ihr Anliegen m&ouml;glichst detailliert!" /> </div> 
129.
    </div> 
130.
    <div class="kf"
131.
      <div style="color:<?php echo $color_arithmetic; ?>">Wieviel ist <?php echo $Zahl_1; ?> plus <?php echo $Zahl_2; ?>?</div> 
132.
      <div> 
133.
        <input name="number" type="hidden" id="number"  value="<?php echo md5(( $Zahl_1 + $Zahl_2 )); ?>"/> 
134.
        <input name="arithmetic" type="text" id="arithmetic"/> 
135.
        <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." /> </div> 
136.
    </div> 
137.
    <div class="kf"><strong>M&ouml;gliche Aktionen</strong> 
138.
   <?php 
139.
 // Wenn KEIN Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button anklickbar sein 
140.
 if($_COOKIE["spam_protection"] != "spam_protection"
141.
142.
?> 
143.
    <input name="submit" type="submit" id="submit" value="Senden" /> 
144.
    <?php 
145.
146.
 // Wenn aber ein Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button blockiert werden 
147.
 if($_COOKIE["spam_protection"] == "spam_protection"
148.
149.
?> 
150.
    <input name="submit" type="submit" id="submit" value="Senden" disabled="disabled" /> 
151.
    <?php 
152.
153.
?> 
154.
       
155.
      <input name="reset" type="reset" id="reset" value="Zur&uuml;cksetzen" /> 
156.
      <img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Sie k&ouml;nnen das Formular absenden oder zur&uuml;cksetzen!" /> </div> 
157.
    <div class="kf"><strong>Sie ben&ouml;tigen Hilfe? </strong> <br /> 
158.
      Mit dem Mauszeiger auf das Fragezeichen zeigen und Hilfe naht :-) </div> 
159.
  </form> 
160.
</div> 
161.
<?php 
162.
echo ("Cookie: " & $_COOKIE["spam_protection"]); 
163.
?> 
164.
</body> 
165.
</html>
Mein Problem ist folgendes.
Der Skript funktioniert so weit ganz gut. Nur die Sache mit den cookies läuft nicht. Irgendwie wird beim "Erfolgreichen" senden kein Cookie gesetzt, und ich bekomme nicht raus warum.

Weiß jemand von euch Rat?

Achja wofür ich das Cookie brauche. Das cookie soll verhindern, dass jemand mehrmals das Formular hintereinander abschicken kann. Vllt kennt ihr ja auch eine andere Lösung dafür.

Danke schon mal im Vorraus

gruß Haliel
Mitglied: filippg
01.04.2009 um 20:46 Uhr
Hallo,

PHP hat eine integrierte Session-Verwaltung. Ich würde dir empfehlen, die zu verwenden, und nicht mit Cookies etwas eigenes zu basteln.
Warum das Cookie nicht gesetzt wird? Hast du sichergestellt, dass es nicht gesetzt wird, oder liegt das Problem vielleicht nur beim Auslesen? Vor dem ersten "<?php" darf kein Leerzeichen sein.

Gruß

Filipp
Bitte warten ..
Mitglied: Top44
01.04.2009 um 22:30 Uhr
PHPSessions sind/werden deine Freunde.


Grüzi
Bitte warten ..
Mitglied: Haliel
03.04.2009 um 17:36 Uhr
Ich hoffe es, kam leider noch nicht zum Testen. Werde mal heute abend rumprobieren^^. Danke schon mal für die Hilfe.
Bitte warten ..
Ähnliche Inhalte
Windows Server
DC - Remotedesktop Zertifikat, von eigener CA - fehler auf iOS
Frage von mr.pat.batemanWindows Server6 Kommentare

Hallo, ich habe ein Problem / Frage. Ich habe eine Offline Root-CA nach dieser Anleitung erstellt. Weiterhin habe ich ...

Batch & Shell
Kleine Hilfe
gelöst Frage von MarabuntaBatch & Shell1 Kommentar

Hi, ich will die Pfade von Prozessen die mit L beginnen und ein Get-ChildItem auf deren Ordner machen. Allerdings ...

Informationsdienste
Kleines Intranet
Frage von MarsdolfInformationsdienste19 Kommentare

Hallo Ich habe vor eine Intranet Seite zu erstellen, die aber kaum etwas Können muss. Bei uns in den ...

Apple
Eigene website
gelöst Frage von MaralindApple32 Kommentare

Hallo, meine Website ist nicht erreichbar, der Server sagt es ist alles in Ordnung. Wo finde ich eine eventuelle ...

Neue Wissensbeiträge
Windows 10

Windows 10 Hello-Anmeldung per Foto ausgehebelt

Tipp von kgborn vor 3 StundenWindows 10

Windows Hello ist eine Funktion, um sich per Fingerabdruck-, Gesichts- oder Iriserkennung bei Windows 10-Geräten anzumelden (siehe), setzt aber ...

Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 10 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 11 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1012 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Heiß diskutierte Inhalte
Windows Server
SCCM 2016: PXE Boot des Clients schlägt fehl
Frage von gabeBUWindows Server23 Kommentare

Hallo Zusammen Ich habe eine Testumgebung erstellt um über SCCM 2016 einen virtuellen Client aufzusetzen. Folgende Maschinen habe ich ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen19 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Exchange Server
Exchange empfängt Emails - Kann aber keine Senden
gelöst Frage von niklasschaeferExchange Server11 Kommentare

Hallo, ich stehe gerade bei mir zuhause vor folgender Problemstellung. Gegeben sind 2x Hyper-V Host mit Windows Server 2016 ...