1. Gerne. Hab momentan nix zu schreiben, nur am lesen =)
2. Daher lesen lesen lesen =)
3. Die echo sind eigtl erstmal nur zur Testausgabe gedacht. Im eigtl Einsatz wirst Du sicherlich nicht alle Eingaben des Benutzers noch einmal anzeigen lassen.
Die Funktion valOrErr sollte nur zeigen, dass man die Prüfung vieler gleicher Abläufe in einer Funktion auslagern kann.
Ich habs mal umgestaltet. Ist halt wichtig, dass Du verstehst was da passiert.
Ach ja - Dir fehlt ein name="senden" beim Senden Button.
4. hab mir das mal angesehen. Ich denke ich habs verstanden =)
5. durch if gefixt
6. welche Weiterleitung?
hier also mal die geänderte Version:
(Prüfung immer vor der Ausgabe des Formulars)
<?php
error_reporting(E_ALL); /*testphase alle fehler/warnings ect ausgeben*/
function isPost($offset){
if(isset($_POST[$offset])){ /*wenn $_POST['xyz'] gesetzt ist*/
return $_POST[$offset]; /*dann gibt $_POST['xyz'] zurück*/
}
return ''; /*sonst gibt leeren string zurück*/
}
//Variablen deklarieren um gesendete Objekte einfacher zu packen
$geschlecht = isPost('geschlecht');
$alter = isPost('altersgruppe');
$fund = isPost('fund');
$gekegelt = isPost('gekegelt');
$meinung = isPost('meinung');
$meinung = (is_array($meinung))?implode(', ',$meinung):$meinung;
$gastwar = isPost('gastwar');
$gastsein = isPost('gastsein');
$nachricht = isPost('nachricht');
if(isset($_POST['senden'])){ /*wenn button senden*/
/*bestimmen was nicht akzeptiert wird*/
$leeres_dropdown_menu = 'Bitte wählen';
$leeres_textfeld = '';
/*die function zum prüfen*/
function isErr($val,$not=array(),$err){
if(in_array($val,$not)){ /*wenn im array $not $val enthalten ist (siehe in_array() @php.net)*/
return $err.'<br>'; /*dann gib den error $err zurück*/
}
return ''; /*sonst gibt leeren string zurück*/
}
/*verwendung:
echo isErr(
$dasZuPrüfende,
array($dasSollNichtVorkommen, $undDasAuchNich),
'derAusgegebeneStringFallsEinesDavonVorkommt'
);
Bsp:
echo isErr($alter,array($leeres_textfeld,$leeres_dropdown_menu),'Bitte geben Sie Ihre Altersgruppe an!');
- es wird entweder die fehlermeldung 'Bitte geben Sie Ihre Altersgruppe an!', oder nichts (also '') ausgegeben
- $alter wird geprüft
- array($leeres_textfeld,$leeres_dropdown_menu) -> wir wollen kein leeres textfeld und auch kein 'Bitte wählen'
natürlich kannst du auch das ergebnis in einer var packen:
$fehler_soundso = isErr($alter,array($leeres_textfeld,$leeres_dropdown_menu),'Bitte geben Sie Ihre Altersgruppe an!');
*/
echo isErr($geschlecht,array($leeres_textfeld),'Sie haben kein Geschlecht gewählt!');
echo isErr($alter,array($leeres_textfeld,$leeres_dropdown_menu),'Bitte geben Sie Ihre Altersgruppe an!');
echo isErr($fund,array($leeres_textfeld,$leeres_dropdown_menu),'Bitte geben Sie an, wie Sie uns gefunden haben!');
echo isErr($gekegelt,array($leeres_textfeld),'Sie haben nicht gewählt, ob Sie schon einmal bei uns gekegelt haben!');
echo isErr($meinung,array($leeres_textfeld),'Bitte sagen Sie uns Ihre Meinung!');
echo isErr($gastwar,array($leeres_textfeld),'Bitte sagen Sie uns, ob Sie einmal Gastkegler gewesen sind!');
echo isErr($gastsein,array($leeres_textfeld),'Bitte sagen Sie uns, ob Sie einmal Gastkegler sein wollen!');
}
/*rechenaufgabe checken
$_POST['zip'] ist die benutzer eingabe -- seine lösung (eingabefeld name="zip")
$_POST['zip2'] ist der md5 hash der richtigen lösung (hiddefield name="zip2")
es muss nun also die benutzereingabe (des benutzers lösung)
in einen md5 hash gewandelt werden um zu prüfen, ob beide hashes gleich sind.
*/
if(md5($_POST['zip']) != $_POST['zip2']){
echo 'Die Rechenaufgabe ist leider falsch!';
}
/*für erneute verwendung des rechenaufgabe neue zahlen ect generieren*/
$Z0 = array(mt_rand(1, 9), mt_rand(1, 9)); /*ein array mit zufälligen zahlen von 1-9*/
$Z1 = max($Z0); /*aus dem array den max wert holen (größte zahl)*/
$Z2 = min($Z0); /*aus dem array den min wert holen (kleinstee zahl)*/
$Spam = $Z1 . " + &#" . (48 + $Z2) . ";"; /*der string (die rechenaufgabe) erstellen*/
$Schutz = md5($Z1 + $Z2); /*den md5 hash erstellen (hash wert der richtigen lösung)*/
?>
<form action="" method="post">
<table class="mitgliedsantrag" cellspacing="5">
<tr>
<th colspan="4">Wir bitten Sie um Ihre Meinung</th>
</tr>
<tr>
<td class="erklaerung" colspan="4">Bitte füllen Sie alle mit <span class="pflichtfeld1">*</span> gekennzeichneten Felder aus (Pflichtfelder)</td>
</tr>
<tr>
<td><span class="pflichtfeld1">*</span> Welches Geschlecht haben Sie?</td>
<td> </td>
<td><input type="radio" name="geschlecht" value="männlich" /> männlich</td>
<td><input type="radio" name="geschlecht" value="weiblich" /> weiblich</td>
</tr>
<tr>
<td><span class="pflichtfeld1">*</span> Welcher Altersgruppe gehören Sie an?</td>
<td> </td>
<td colspan="2">
<select name="altersgruppe">
<option value="Bitte wählen">Bitte wählen</option>
<option value="12-16">12-16</option>
<option value="17-21">17-21</option>
<option value="22-26">22-26</option>
<option value="27-31">27-31</option>
<option value="32-45">32-45</option>
<option value="46-72">46-72</option>
</select>
<br>
<span class="pflichtfeld"></span>
</td>
</tr>
<tr>
<td><span class="pflichtfeld1">*</span> Wie haben Sie uns gefunden?</td>
<td> </td>
<td colspan="2">
<select name="fund">
<option value="Bitte wählen">Bitte wählen</option>
<option value="Google">Google</option>
<option value="Facebook">Facebook</option>
<option value="Werbung">Werbung</option>
<option value="Bekannte/Verwandte">Bekannte/Verwandte</option>
<option value="Mitglieder">Mitglieder</option>
</select>
<br>
<span class="pflichtfeld"></span>
</td>
</tr>
<tr>
<td><span class="pflichtfeld1">*</span> Haben Sie schon einmal gekegelt?</td>
<td> </td>
<td><input type="radio" name="gekegelt" value="ja" /> ja</td>
<td><input type="radio" name="gekegelt" value="nein" /> nein</td>
</tr>
<tr>
<td><span class="pflichtfeld1">*</span> Wie finden Sie unsere Website?
<br>
<span class="hilfetext">(Mehrfachnennung mit STRG möglich)</span></td>
<td> </td>
<td colspan="2">
<select name="meinung[]" multiple="multiple">
<option value="interessant">Interessant</option>
<option value="informativ">Informativ</option>
<option value="zu wenig Info's">Zu wenig Informationen</option>
<option value="mehr Bilder/Impressionen">Mehr Bilder/Impressionen</option>
<option value="der HAMMER">Der HAMMER</option>
<option value="verbesserungswürdig">Verbesserungswürdig</option>
</select>
<br>
<span class="pflichtfeld">Bitte sagen Sie uns Ihre Meinung! </td>
</tr>
<tr>
<td><span class="pflichtfeld1">*</span> Waren Sie schon einmal bei uns Gastkegler?</td>
<td> </td>
<td><input type="radio" name="gastwar" value="ja" /> ja</td>
<td><input type="radio" name="gastwar" value="nein" /> nein</td>
</tr>
<tr>
<td><span class="pflichtfeld1">*</span> Könnten Sie sich vorstellen, bei uns Gastkegler zu sein?</td>
<td> </td>
<td colspan="2">
<select name="gastsein">
<option value="Bitte wählen">Bitte wählen</option>
<option value="ja">ja</option>
<option value="nein">nein</option>
<option value="vielleicht">vielleicht</option>
<option value="war schon">war schon</option>
</select>
<br>
<span class="pflichtfeld"> </td>
</tr>
<tr>
<td> Anregungen/Wünsche/Sonstiges<br>
<span class="hilfetext">(Optional)</span>
</td>
<td><!--<span class="nachrichtlength">min. 10 Zeichen</span>--></td>
<td colspan="2"><textarea rows="5" name="nachricht" class="nachricht"></textarea></td>
</tr>
<tr>
<td><span class="pflichtfeld1">*</span> Spam-Schutz</td>
<td colspan="3">
<?php echo $Spam;?>
<input type='number' name='zip' size='4' autocomplete='off'>
<input type='hidden' name='zip2' value='<?php echo $Schutz;?>'> <br>
<span class="pflichtfeld">Bitte lösen Sie die Rechenaufgabe richtig!</span>
</td>
</tr>
<tr>
<td colspan="2" class="right"><input type="submit" id="login" name="senden" value="Senden" /></td>
<td colspan="2" class="left"><input type="reset" id="zuruecksetzen" value="Zurücksetzen" /></td>
</tr>
</table>
</form>
Alles anzeigen