Ankündigung

Einklappen
Keine Ankündigung bisher.

HTML, PHP, MYSQL; Formulareingaben Groß-Kleinschreibung nicht beachten.. wie?

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • HTML, PHP, MYSQL; Formulareingaben Groß-Kleinschreibung nicht beachten.. wie?

    Hallo,

    ich habe ein Login Script etwas überarbeitet, der in der Datenbank überprüft/vergleicht, ob der Benutzer (Vorname, Nachname, Geb.Datum, Straße) existiert...wenn der Benutzer existiert dann gibt echo raus; "Hallo Vorname-Nachname"
    ich suche jetzt nach eine Möglichkeit, Groß-Kleinschreibung nicht zu beachten bzw. gibt der Benutzer VoRnamE NachName, stRasse (oder straE...?) ein, soll (beim verglich in der Datenbank) nicht beachtet werden...wie mache ich das?

    (ich bin noch Anfänger...bitte nicht lachen )
    Code:
    <?php
    $vname = $_POST['vname'];
    $nname = $_POST['nname'];
    $strasse = $_POST['strasse'];
    
    $vname = trim($vname);
    $nname = trim($nname);
    
    foreach($_POST['tag'] as $tag)
    foreach($_POST['monat'] as $monat)
    foreach($_POST['jahr'] as $jahr)
    
    $geb = $jahr."-".$monat."-".$tag;
    
    if ($vname&&$nname&&$geb&&$strasse)
    {
        $verbinden = mysql_connect ("localhost","****","****") or die("Kann keine Verbindung zur Datenbank herstellen!");
        mysql_select_db("check") or die("DB nicht gefunden!");
    
        $abfrage = mysql_query("SELECT * FROM benutzer WHERE vname='$vname'");
    
        $numrows = mysql_num_rows($abfrage);
    
        if ($numrows=!'0')
        {
            while ($row = mysql_fetch_assoc($abfrage))
               {
                   $dbvname = $row['vname'];
                   $dbnname = $row['nname'];
                   $dbgeb = $row['geb'];
                   $dbstrasse = $row['strasse'];
               }
    
                            if ($vname==$dbvname&&$nname==$dbnname&&$geb==$dbgeb&&$strasse==$dbstrasse)
                                    {
                                            // $vname = strtolower($vname);
                                            // $nname = strtolower($nname);
                                            echo "Hallo <h1>$vname-$nname</h1>";
                                    }
                                    else
                                            echo "Die Eingabe stimmen nicht &uuml;berein!";
        }
        else
            die("Benutzer existiert nicht!");
    }
    else
        die ("Bitte alles ausf&uuml;llen!");
    ?>
    Danke im voraus für Antwort.

    MfG,
    Roki


  • #2
    strtolower

    Kommentar


    • #3
      Zitat von Squall Beitrag anzeigen
      Stimmt genau.

      Würde auch deinen Schönheitsfehler beheben:

      PHP-Code:
      $vname $_POST['vname'];
      $nname $_POST['nname'];
      $strasse $_POST['strasse'];

      $vname trim($vname);
      $nname trim($nname); 
      durch das

      PHP-Code:
      $vname   trim($_POST['vname']);
      $nname   trim($_POST['nname']);
      $strasse $_POST['strasse']; 
      ersetzen.

      Finde das so übersichtlicher. Nur so am Rande.

      Kommentar


      • #4
        Nicht der einzige "Schönheitsfehler":

        PHP-Code:
        foreach($_POST['tag'] as $tag)
        foreach(
        $_POST['monat'] as $monat)
        foreach(
        $_POST['jahr'] as $jahr)

        $geb $jahr."-".$monat."-".$tag
        =>

        PHP-Code:
        $geb $_POST['jahr']."-".$_POST['monat']."-".$_POST['tag']; 
        So habe ich auch noch niemanden eine foreach-Schleife einsetzen sehen.
        http://hallophp.de

        Kommentar


        • #5
          Das habe ich erst garnicht gesehen =P

          Hier nochmal ein schöner Link: PHP: foreach - Manual

          Kommentar


          • #6
            Warum machst Du nicht einfach den Vergleich direkt in der SQL-Query? Mit der passenden Collation sind Vergleiche in der DB nicht Case-sensitiv...

            Gruß Jens

            Kommentar


            • #7
              So habe ich auch noch niemanden eine foreach-Schleife einsetzen sehen.
              Gruselig.

              Nicht der einzige "Schönheitsfehler":

              Niemand garantiert, dass auch nur irgendein $_POST-Parameter existiert oder ob die Menge vollständig ist. Vor einer Zuweisung ist also eine entspr. Prüfung vorzusehen. Bspw:
              PHP-Code:
              $vname = isset ($_POST['vname']) ? trim ($_POST['vname']) : ''
              Hier
              if ($vname&&$nname&&$geb&&$strasse)
              ist das schon viel zu spät, da sind die notices schon raus..
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Danke!

                o_O sorry für so viele Fehler...

                ich habe das Script am Anfang jetzt so umgeändert:
                Code:
                <?php
                $vname = isset ($_POST['vname']) ? trim ($_POST['vname']) : '';
                $nname = isset ($_POST['nname']) ? trim ($_POST['nname']) : '';
                $strasse = isset ($_POST['strasse']) ? trim ($_POST['strasse']) : '';
                $geb = $_POST['jahr']."-".$_POST['monat']."-".$_POST['tag'];
                
                if ($vname&&$nname&&$geb&&$strasse)
                ...
                ...
                ...
                aber irgend wie klappt es nicht:

                Code:
                Die Eingabe stimmen nicht überein!
                ?

                Gruss, Roki

                Kommentar


                • #9
                  Fehlerfrei ist es immer noch nicht. Nikosch hat es geschrieben: Du musst bei jedem Parameter die Existenz überprüfen. Auch bei dieser Zeile:

                  Code:
                  $geb = $_POST['jahr']."-".$_POST['monat']."-".$_POST['tag'];
                  Sorry, für das unsaubere/unvollständige Codebeispiel von meiner Seite.

                  Zum Problem: Lass dir die Werte doch mal vor der Bedingung mit echo ausgeben und vergleiche diese mit dem Inhalt deiner Parameter.

                  Die Bedingung selbst lügt jedenfalls nicht, also muss mindestens ein Vergleich false liefern.

                  Schreibe auch bitte:
                  Code:
                  <?php
                  error_reporting(E_ALL | E_STRICT);
                  an den Anfang deiner Datei.
                  http://hallophp.de

                  Kommentar


                  • #10
                    Du musst bei jedem Parameter die Existenz überprüfen. Auch bei dieser Zeile:
                    und wie mache ich das bei $geb ?

                    sorry für dumme fragen aber jetzt bin ich total durcheinander....

                    Gruss,
                    Roki

                    Kommentar


                    • #11
                      $geb ist kein $_POST-Parameter. Jetzt mal bitte erst nachdenken!
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar


                      • #12
                        jahr, tag, monat ist array
                        und wie ich das jetzt nun mache weiß ich echt nicht..

                        Kommentar


                        • #13
                          jahr, tag, monat ist array
                          Warum?
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            hoffe ich übertreibe nicht... (sorry...)

                            siehe Formular:

                            Code:
                            <html>
                            <head>
                            <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
                            <meta http-equiv="cache-control" content="no-cache">
                            <title>Test</title>
                            </head>
                             <body>
                                <form action="check.php" method="POST">
                                    Vorname:<br>
                                    <input type="text" name="vname"> <br>
                                    Nachname:<br>
                                    <input type="text" name="nname"> <br>
                                    Stra&szlig;e:<br>
                                    <input type="text" name="strasse"><br>
                                        <p>Geburtsdatum: <br />
                                        <select name="tag[]" size="1">
                                            <option>01</option>
                                            <option>02</option>
                                            <option>03</option>
                                            <option>04</option>
                                            <option>05</option>
                                            <option>06</option>
                                            <option>07</option>
                                            <option>08</option>
                                            <option>09</option>
                                            <option>10</option>
                                            <option>11</option>
                                            <option>12</option>
                                            <option>13</option>
                                            <option>14</option>
                                            <option>15</option>
                                            <option>16</option>
                                            <option>17</option>
                                            <option>18</option>
                                             ...
                                             ...
                                        </select>
                                        <select name="monat[]" size="1">
                                            <option>01</option>
                                            <option>02</option>
                                            <option>03</option>
                                            <option>04</option>
                                            <option>05</option>
                                            <option>06</option>
                                            <option>07</option>
                                            <option>08</option>
                                            <option>09</option>
                                            <option>10</option>
                                            <option>11</option>
                                            <option>12</option>
                                        </select>
                                        <select name="jahr[]" size="1">
                                            <option>1950</option>
                                            <option>1951</option>
                                            <option>1952</option>
                                             ...
                                             ...
                                        </select>
                                        </p> <br>
                                    <input type="submit" value="OK"> <br>
                                </form>
                             </body>
                            </html>
                            deswegen die foreach Zeilen in check.php...

                            Gruss,
                            Roki

                            Kommentar


                            • #15
                              Und warum lässt du dir etwas als Array übergeben, wenn es doch nur genau einen Wert haben soll?

                              Kommentar

                              Lädt...
                              X