Ankündigung

Einklappen
Keine Ankündigung bisher.

Reguläre Ausdrücke und Affenformular

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Reguläre Ausdrücke und Affenformular

    Ich bin am Verzweifeln. Ich bekomme es einfach nicht hin, dass ein reguläre Ausdruck ausgewertet wird. Dabei sieht das so leicht aus. Kurz: $um und der Text PASST wird nicht ausgegeben. Gematcht soll einfach eine fünfstellige Nummer, Ich habe schon jede Menge reguläre Ausdrücke probiert, z.B. '/^[0-9]{5}+/' - Null....

    PHP-Code:
    <?php
    session_start
    ();

    require 
    "lib/constants.php";

    if(isset(
    $_POST['submit']) AND $_POST['submit']=='ok') { // Schon mal gesendet
    $message[] = "";
    // Variablen auslesen
    $persNr = isset($_POST['persNr']) ? trim($_POST['persNr']) : "";
    $orderNr = isset($_POST['orderNr']) ? trim($_POST['orderNr']) : "";
    $artNr = isset($_POST['artNr']) ? trim($_POST['artNr']) : "";

    // Reguläre Ausdrücke
    if (isset($persNr)) $um preg_match('/[0-9]{5}+/',$persNr,$user);
    if (isset(
    $orderNr)) $om preg_match($orderNr,$ORDERNO,$order);
    if (isset(
    $artNr)) $am preg_match($artNr,$ARTICLENO,$article);

    // Variablen zur Übergabe an START oder STOP
    $_SESSION['persNr'] = $_POST['persNr'];
    $_SESSION['orderNr'] = $_POST['orderNr'];
    $_SESSION['artNr'] = $_POST['artNr'];
    }
    else {
    ?>

    <!DOCTYPE html>
    <html lang="de">
    <head>
    <meta charset="utf-8" />
    <title>LOGIN-SCREEN</title>
    <link href="zeiterfassung.css" rel="stylesheet" type="text/css">
    </head>
    <body class="login">
    <div class="header">
    <div class="title">
    LOGIN-SCREEN
    </div>
    <div class="logo">
    <img src="image/Signet-mit-Gustav-Transparent.png" alt="" width="400" height="" id="gustavLogo" title="Gustav-Logo"/>
    </div>
    </div>
    <form action="login.php" method="post">
    <label style="grid-row: 1" for="persNr">MITARBEITER:</label>
    <input name="persNr" type="number" class="inputField inputpersNr">
    <label style="grid-row: 2" for="orderNr">AUFTRAGS-NR.:</label>
    <input name="orderNr" type="number" class="inputField inputorderNr">
    <label style="grid-row: 3" for="artNr">ARTIKEL-NR.:</label>
    <input name="artNr" class="inputField inputArtNr" type="text">
    <div class="buttonContainer" >
    <input class="startPause button button1" name="startPause" type="submit" value="PAUSE START" />
    <input class="okButton button button2" name= "ok" type="submit" value="OK" />
    <input class="stopPause button button3" name="stopPause" type="submit" value="PAUSE STOP" />
    </div>
    </form>
    <div class="status">

    <?php
    if ($um) {
    echo 
    'PASST';
    }
    }
    ?>

    </div>
    </body>
    </html>
    BG TWR

  • #2
    PHP-Code:
    $pattern '^\d{5}$'
    hier kannst du es testen.

    Was aber willst du genau erreichen?
    Du könntest ja auch filter_input verwenden.
    PHP-Code:
    $options=array('options'=>array('default'=>0'min_range'=>10000'max_range'=>99999));

    $filteredNumber filter_input(INPUT_POST'persNR'FILTER_VALIDATE_INT$options); 

    Kommentar


    • #3
      Danke, geht natürlich für die numerischen Werte. Aber ich will auch den Artikel überprüfen, und der ist NNN.NNNN.NN. Mittlerweile denke ich, es handelt sich um den Geltungsbereich der Variablen...

      Kommentar


      • #4
        if (isset($persNr))
        ist immer true, da du vorher den Wert auf "" (empty string) setzt, wenn der Parameter nicht existiert.

        Kommentar


        • #5
          Zitat von twr Beitrag anzeigen
          Danke, geht natürlich für die numerischen Werte. Aber ich will auch den Artikel überprüfen, und der ist NNN.NNNN.NN.
          Das kann ja keiner Wissen(s. #1) wenn du nicht alles Preis gibst und für dich behältst.

          PHP-Code:
          $pattern '^\d{3}\.\d{4}\.\d{2}$'
          Das Pattern kannst auch schon auf dein Input Element anwenden, dann hast du schon mal eine Eingabevalidierung.

          Kommentar


          • #6
            Zitat von protestix Beitrag anzeigen

            Das kann ja keiner Wissen(s. #1) wenn du nicht alles Preis gibst und für dich behältst.

            PHP-Code:
            $pattern '^\d{3}\.\d{4}\.\d{2}$'
            Das Pattern kannst auch schon auf dein Input Element anwenden, dann hast du schon mal eine Eingabevalidierung.
            Das funktioniert leider nicht. Matcht nicht

            Kommentar


            • #7
              "funktioniert nicht" ist keine brauchbare Fehlerbeschreibung. Hier kann man es direkt ausprobieren und da funktioniert es einwandfrei:

              https://www.phpliveregex.com/

              Also das Pattern ist korrekt.

              Außerdem solltest du beim Programmieren das Error-Reporting in der PHP-Konfiguration aufdrehen und immer ins Errer-Log schauen, dann würdest du sofort sehen, dass die Varaible $um im else-Zweig gar nicht existiert.

              Kommentar


              • #8
                Zeige auch immer deinen Code dazu, damit man sieht was du schon umgesetzt hast, sonst ist das nur ein Ratespiel.

                Kommentar

                Lädt...
                X