PHP Problem

IrocStan

Lt. Junior Grade
Registriert
März 2007
Beiträge
490
Hi!
Also, folgender Quelltext befindet sich in der PHP:

PHP:
<?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()+20);
}

// Erstellen einer Rechenaufgabe

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

?>



<?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['strasse'])&& !empty($_POST['nummer']))
{

// 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 );
$strasse       = nl2br(stripslashes(htmlspecialchars($_POST['strasse'])));
$nummer        = nl2br(stripslashes(htmlspecialchars($_POST['nummer'])));
$nachricht     = nl2br(stripslashes(htmlspecialchars($_POST['message'])));

// ...die Nachricht, die Sie erhalten moechten, wenn eine neue Nachricht an Sie versandt wurde, definieren...
$mailnachricht = "Hallo!\n\nDSL im Anmarsch! :-D:\n\n---------------------------------------------\n\nName:\n$name\n\nStrasse:\n$strasse\n $nummer\n\nIP:\n$IP\n\nE-Mail:\n$absender\n\nNachricht:\n$nachricht\n\n---------------------------------------------\n\n\n\nMfG\nStan";

// ...an Sie verschicken...
mail("test@test.com", "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></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="404" cellpadding="2" cellspacing="2" style="background-color:#E6E6E6; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:12px">

<tr>

<td width="179" style="background-image: url(hintergrund.jpg)">
<strong>Ihr Vor &amp; Nachname</strong></td>

<td width="186">

<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="19" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Bitte geben Sie Ihren Vor & Nachnamen ein!" /></td>
</tr>

<td width="186" style="background-image: url(hintergrund.jpg)">
<strong>Ihre Straße &amp; Hausnummer</strong></td>

<td width="186">

<input name="strasse" type="text" id="strasse" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:140px" value="<?php echo $_POST['strasse']; ?>"/> 
<input name="nummer" type="text" id="nummer" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:35px" value="<?php echo $_POST['nummer']; ?>"/></td>
<td width="19" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Bitte geben Sie Ihre Straße & Hausnummer ein!" /></td>

</tr>


<tr>

<td width="186" style="background-image: url(hintergrund.jpg)">
<strong>Ihre eMail Adresse (optional)</strong></td>

<td width="186">

<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="19" 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="179" style="background-image: url(hintergrund.jpg)">
<strong>Ihre Nachricht (optional)</strong></td>

<td width="186">

<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="19" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Hier ist Platz für evtl. zusätliche Bermerkungen!" />

</td>

</tr>

<tr>

<td width="179" 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

}

?>

Und zwar ist eine eMail Eingabe erforderlich, die ich aber nur optional reinbauen möchte. Was muss gelöscht bzw. verändert werden, damit dies klappt?

mfg hoppiq
 
Ohne jetzt den ganzen Code durchgelesen zu haben würde ich sagen:


- in Zeile 5 die die Abfragen für die eMail-Adresse löschen
- in Zeile 43 Die Abfrage entfernen
- das gleiche bei Zeile 52
- in Zeile 73 einen statischen Absender definieren und die eMail Adresse im Mail unterbringen.


Davon abgesehen würde ich folgendes machen:

- den ganzen auf Cookies basierendem 'Spamschutz' entfernen, und entweder etwas auf SQL Basis machen, oder den Schutz überhaupt weglassen.
- wenn du in Zeile 73 den From Header nicht vom Formular übernimmst, bist du dadurch schon mal gegen E-Mail-Injektion besser geschützt.
- den Code einrücken.
- wenn du wirklich damit arbeiten willst (es produktiv online einsetzt), musst du wissen was dein Code macht - angesichts deiner Frage gehe ich davon aus, dass du das Skript irgendwo im Netz gefunden hast.



Grüße
 
luky37 schrieb:
Ohne jetzt den ganzen Code durchgelesen zu haben würde ich sagen:


- in Zeile 5 die die Abfragen für die eMail-Adresse löschen
- in Zeile 43 Die Abfrage entfernen
- das gleiche bei Zeile 52
- in Zeile 73 einen statischen Absender definieren und die eMail Adresse im Mail unterbringen.


Davon abgesehen würde ich folgendes machen:

- den ganzen auf Cookies basierendem 'Spamschutz' entfernen, und entweder etwas auf SQL Basis machen, oder den Schutz überhaupt weglassen.
- wenn du in Zeile 73 den From Header nicht vom Formular übernimmst, bist du dadurch schon mal gegen E-Mail-Injektion besser geschützt.
- den Code einrücken.
- wenn du wirklich damit arbeiten willst (es produktiv online einsetzt), musst du wissen was dein Code macht - angesichts deiner Frage gehe ich davon aus, dass du das Skript irgendwo im Netz gefunden hast.



Grüße

Danke erstmal. Ja, hab's im Netz gefunden! An sich klappt das alles super, aber nach dem entfernen von den Zeilen wie du es meintest, bekomme ich jetzt die Fehlermeldung:

Parse error: syntax error, unexpected '}' in /mnt/web1/30/79/52006279/htdocs/pageID_7309029.php on line 152

mfg hoppiq
 
Dann musst dir eben Zeile 152 anschauen, ich kann nicht wissen, was an dieser Stelle steht.
 
Zurück
Oben