Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 3831 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\nMit freundlichen Grüßen\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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Hyper-V
gelöst Fehler auf Hyper-V nach Tausch eines Mainboard und Raid-Controllers (17)

Frage von Henere zum Thema Hyper-V ...

Windows Server
Windows-Update für Secure-Boot-Fehler macht BIOS-Updates erforderlich (2)

Link von Penny.Cilin zum Thema Windows Server ...

Windows 7
gelöst Fehler nach Wiederherstellung aus Image (8)

Frage von zeroblue2005 zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...