<?php

/* **************************************************************************
 *
 *    Richtigkeit der Daten uberpruefen (mit Regulaeren Ausdruecken)
 *
 *  Im Manual: 
 *        http://www.geo.tu-freiberg.de/docs/php/de/ref.pcre.html
 *
 *    PHP-Kurs am Rechenzentrum der TU Freiberg
 *    (c) 11/2000, Bernhard Fuerst <fuerst@mac.com>
 *
 * **************************************************************************/


/*
 *
 *   Funktionen definieren
 *
 */


// Gibt das Formular zur Eingabe aus
function formular$formular_daten false$fehler_meldung false )
{
    global 
$PHP_SELF;
    
    
// Wenn eine Fehlermeldung anliegt, dann soll die auch ausgegeben werden
    
if( $fehler_meldung )
    {
        echo 
'<p style="color: red">' $fehler_meldung '</p>';
    }

    
// Die Werte aus $formular_daten werden im value der Form-Felder ausgegeben,
    // wenn vorhanden
?>

<form action="<?php echo basename$PHP_SELF ?>" method="get">

    <input type="hidden" name="task" value="formular_daten_validieren">
    
    Name: <input type="text" name="formular_daten[name]" maxlength="50" value="<?php echo $formular_daten["name"?>" ><br>
    email: <input type="text" name="formular_daten[email]" maxlength="50" value="<?php echo $formular_daten["email"?>" ><br>
    Telefon: <input type="text" name="formular_daten[telefon]" maxlength="25" value="<?php echo $formular_daten["telefon"?>" >
    
    <p><input type="submit" value=" OK "></p>

</form>

<?php
// function formular()
?>


<?php

// Prueft die Formulardaten an
function formular_daten_schlecht$formular_daten )
{

    
// Am Anfang ist noch alles gut
    
$fehler_meldung false;
    
    
// Sind ueberhaupt Daten da
    
if( ! $formular_daten["name"] or ! $formular_daten["email"] or ! $formular_daten["telefon"] )
    {
        return 
"Keine Formulardaten.";
    }
            
    
// Namen pruefen, wenn ein Zeichen nicht a-z, Leerzeichen oder . ist, dann Alarm
    
if( preg_match"/[^a-z \.]+/i"$formular_daten["name"] ) )
    {
        
$fehler_meldung .= "Der <b>Name</b> darf nur aus Buchstaben (keine Sonderzeichen), Leerzeichen und Punkten bestehen.<br>";
    }

    
// email pruefen
    
if( ! preg_match"/^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$/i"$formular_daten["email"] ) )
    {
        
$fehler_meldung .= "Die <b>email</b> ist ungueltig.<br>";
    }

    
// Telefon pruefen, wenn ein Zeichen nicht 0-9, Leerzeichen, - oder . ist, dann Alarm
    
if( preg_match"/[^-0-9 \.]+/"$formular_daten["telefon"] ) )
    {
        
$fehler_meldung .= "Die <b>Telefonnummer</b> darf nur aus Ziffern, -, ., und Leerzeichen bestehen.<br>";
    }
    
    
// Fehlermeldung zurueckgeben
    
return $fehler_meldung;

// formular_daten_schlecht()

?>

<?php

// Zeigt uns die Formulardaten an
function formular_daten_ansehen$formular_daten )
{

    
// Das Array $formular_daten von Anfang bis Ende auslesen
    
foreach( $formular_daten as $eingabefeld => $wert )
    {
        echo 
$eingabefeld ': ' $wert '<br>';
    }

// formular_daten_ansehen()

?>

<?php

/*
 *
 *   Hauptteil des Programmes
 *
 */

// Daten nur via GET annehmen
$formular_daten $HTTP_GET_VARS["formular_daten"];

switch ( 
$task )
{

    case 
"formular_daten_validieren":
        if( 
$fehler_meldung formular_daten_schlecht$formular_daten ) )
        {
            
// Eingabewerte nicht okay, nochmal eingeben ...
            
formular$formular_daten$fehler_meldung );
            
// ... und raus aus dem switch
            
break;
        }
        
// Eingabewerte okay, weitermachen
        
formular_daten_ansehen$formular_daten );
        break;
    default:
        
formular();
}

?>