Ankündigung

Einklappen
Keine Ankündigung bisher.

$_GET verfügbare Felder abfragen

Einklappen

Neue Werbung 2019

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

  • $_GET verfügbare Felder abfragen

    Hi,

    also ich habe bis jetzt einfach immer mit
    PHP-Code:
    if(!$_GET['Feld']) 
    geprüft ob was drin ist aber dann habe ich festgestellt, das wen vormals bei einem Abruf nichts drin war, dass sie sich auch danach noch so verhält, obwohl nun inzwischen in dem HTML Formular bezüglich des Feldes was in eine Inputbox eingegeben wurde.

    Aber ich kann ja nicht voraus ahnen ob der User was in das Feld eingeben hat oder nicht. Gibt es eine Möglichkeit ein Feld einfach auf Existenz in dem $_GET zu überprüfen?

  • #2
    [MAN]isset[/MAN], [MAN]array_key_exists[/MAN], [MAN]empty[/MAN]

    Kommentar


    • #3
      Und warum verhält sich das nun so? Weil, wenn in dem Inputfeld nichts drin steht, dass das Feld bzw. die Variable in dem $_GET Array erst gar nicht erstellt wird aber wenn man ein Feld, was nicht existiert, aus dem $_GET zum operieren aufruft, erst dann erstellt wird und dann aber auch das HTML Formular nichts mehr in dieses Feld schreiben kann?

      Kommentar


      • #4
        Sorry ich versteh nicht was du meinst?

        Wenn du im Formular ein Feld hast und das Formular abgeschickt wird dann erscheint dieses Feld auch in $_GET/$_POST, egal ob in dem Feld was steht oder nicht.

        Wenn das Formular nicht abgeschickt wird existieren die Werte natürlich auch nicht in $_GET oder $_POST.

        Kommentar


        • #5
          Zitat von Flor1an Beitrag anzeigen
          Sorry ich versteh nicht was du meinst?

          Wenn du im Formular ein Feld hast und das Formular abgeschickt wird dann erscheint dieses Feld auch in $_GET/$_POST, egal ob in dem Feld was steht oder nicht.

          Wenn das Formular nicht abgeschickt wird existieren die Werte natürlich auch nicht in $_GET oder $_POST.
          Nach dem ein Feld abgefragt wurde, was gar nicht existierte, existierte es auch später nicht, obwohl da was in das Inputfeld eingegeben wurde.

          Kommentar


          • #6
            Hä? Also ENTWEDER ist ein Formular abgesendet, dann existieren die Werte in $_GET/$_POST ODER das Formular wurde NICHT abgesendet dann existieren die Werte NICHT in den Arrays. So was wie am Anfang existiert es nicht und später schon gibt es nicht.

            Kommentar


            • #7
              Zitat von Flor1an Beitrag anzeigen
              Hä? Also ENTWEDER ist ein Formular abgesendet, dann existieren die Werte in $_GET/$_POST ODER das Formular wurde NICHT abgesendet dann existieren die Werte NICHT in den Arrays. So was wie am Anfang existiert es nicht und später schon gibt es nicht.
              warum sollte es später nicht existieren können das Feld? Wenn später das Formular abgeschickt wurde? Ich meinte ja, das HTML Formular ist erstellt. Es enhält ein Inputfeld das einen Namen hat und später bei Verschickung unter einem Feld mit diesem Namen bei $_GET abfragbar ist.

              Du sagtest auch wenn nichts in dem Inputfeld steht wird das Feld in der $_GET erstellt. OK Aber warum war das Feld aus der $_GET leer? obwohl was drin stand und es neu verschickt wurde? Dieses phänomen trat bei mir immer dann auf wenn zuvor das Formular mit leerem Inputfeld verschickt wurde.

              Kommentar


              • #8
                Hast du vielleicht mal entsprechenden Code? Denn ich denke dein Fehler liegt irgendwo anders.

                Kommentar


                • #9
                  Hmm, ich verstehe auch nicht, was du meinst. Kannst du uns ein Online-Beispiel zeigen und daran erklären?
                  [URL]http://hallophp.de[/URL]

                  Kommentar


                  • #10
                    Zitat von Flor1an Beitrag anzeigen
                    Hast du vielleicht mal entsprechenden Code? Denn ich denke dein Fehler liegt irgendwo anders.
                    Erste Seite(index.php):
                    PHP-Code:
                    <form action="formMessageToAdmin.php" target="_blank" method="GET">
                                            <
                    input type="text" name="Usernick" value="Usernick">
                                            <
                    input type="password" name="Passwort" value="Passwort">
                                            <
                    textarea  cols="25" rows="10" name="Nachricht">Nachricht</textarea>
                                            <
                    input type="submit" value="Nachricht an den Administrator">
                                        </
                    form
                    Zweite und Verarbeitungsseite(formMessageToAdmin.php):
                    PHP-Code:
                    <html>
                    <head>
                    <title></title>
                    </head>
                    <body>

                    <?php
                        $Versenden 
                    true;

                        if(!
                    $_GET['Usernick'] or $_GET['Usernick'] == 'Usernick')
                        {
                            echo 
                    'Du hast im Feld "Usernick" nichts eingegeben. Solltest du deinen Usernick auch nicht im Feld
                                "Nachricht" genant haben, kannst Du bzw. dein Benutzerprofil nicht identifiziert werden. Im
                                Falle des Wunsches, dass dein Benutzerprofil gel&ouml;scht werden soll, muss dein Benutzerprofil identifiziert
                                werden k&ouml;nnen. Ansonsten wird diese Nachricht einfach ignoriert.<br><br>'
                    ;
                        }
                        if(!
                    $_GET['Passwort'] or $_GET['Passwort'] == 'Passwort')
                        {
                            echo 
                    'Du hast im Feld "Passwort" nichts eingegeben. Im Falle des Wunsch, dass dein Benutzerprofil gel&ouml;scht
                                werden soll, musst Du zur Sicherheit dein Passwort nennen. Ansonsten wird diese Nachricht einfach
                                ignoriert. Das Passwort bitte nur in das vorgesehene verschl&uuml;sselte Feld "Passwort eingeben!<br><br>'
                    ;
                        }
                        if(!
                    $_GET['Nachricht'] or $_GET['Nachricht'] == 'Nachricht')
                        {
                            echo 
                    'Du hast im Feld "Nachricht" nichts eingegeben. Im Falle des Wunsch, dass dein Benutzerprofil gel&ouml;scht
                                werden soll, musst Du dies Ausdr&uuml;cklich in diesem Feld sagen. Ansonsten wird nicht von dem Wunsch der
                                Benutzerprofill&ouml;schung ausgegangen.'
                    ;
                            if(!
                    $_GET['Usernick'] or $_GET['Nachricht'] == 'Nachricht')
                            {
                                
                    $Versenden false;
                                echo 
                    'Da Du auch nichts in das Feld "Usernick" geschrieben hast, ist deine Nachricht unzureichend. Die
                                    Nachricht wird nicht verschickt!<br><br>'
                    ;
                            }
                            else
                            {
                                echo 
                    'Sollte f&auml;lschlich in dem Feld "Usernick" ebenfalls keine Nachricht sein, wird diese Nachricht
                                    einfach ignoriert<br><br>'
                    ;
                            }
                        }

                        if(
                    $Versenden)
                        {
                            if(
                    mail('xxx@xxx.xx''PHP-Mail(formMessageToAdmin.php) von outside.ligerwood.com',
                                    
                    'Usernick: ' $_GET['Usernick'] . '<br><br>
                                    Passwort: ' 
                    $_GET['Passwort'] . '<br><br>
                                    Nachricht: ' 
                    $_GET['Nachricht']))
                            {
                                echo 
                    'Nachricht wurde verschickt!';
                            }
                            else
                            {
                                echo 
                    'Nachricht wurde aufgrund eines Fehlers nicht verschickt. Bitte versuche es später noch einmal
                                    oder teile diesen Fehler einem Administrator im Chat mit.'
                    ;
                            }
                        }
                        else
                        {
                            echo 
                    'Nachricht wurde nicht verschickt!';
                        }
                    ?>

                    <br><br>
                    Neue Nachricht:<br>
                    <form action="formMessageToAdmin.php" method="GET">
                    <input type="text" name="Usernick" value="Usernick"><br>
                    <input type="password" name="Passwort" value="Passwort"><br>
                    <textarea  cols="25" rows="10" name="Nachricht">Nachricht</textarea><br>
                    <input type="submit" value="Nachricht an den Administrator">
                    </form>
                    </body>
                    </html>

                    Kommentar


                    • #11
                      Und was passiert jetzt genau bei deinem Programm? Was läuft falsch? Hast du schon mal var_dump($_GET) ausprobiert um dir anzeigen zu lassen was in den Werten steht?

                      Kommentar


                      • #12
                        Zitat von Flor1an Beitrag anzeigen
                        Und was passiert jetzt genau bei deinem Programm? Was läuft falsch? Hast du schon mal var_dump($_GET) ausprobiert um dir anzeigen zu lassen was in den Werten steht?
                        a) Also, wenn ich alle Felder belasse und das Formular abschicke, sind alle drei Felder in dem $_GET vorhanden.

                        b) Lösche ich alle Zeichen z.B. aus Inputfeld Nickname und schicke das Formular ab, geht die entsprechende if(...) zu else. Soweit klar.

                        c) Schicke ich jetzt aber das Formular noch einmal ab und gebe aber diesmal was in Inputfeld Nickname ein, geht er trotzdem zu der else der if(...), als wenn das Feld in der $_GET für das Inputfeld Nickname nach Aktion b) geschlossen wurde.

                        Kommentar


                        • #13
                          Sowas gibts nicht. Das Skript merkt sich keinen Zustand oder ähnliches! Jeder Request ist komplett unabhängig vom vorigen. Lass dir mal die Werte im $_GET Array mit var_dump ausgeben. Dann siehst du ja was drin steht und warum welche IF Abfrage ausgeführt wird.

                          Ich versteh immer noch nicht ganz genau was passiert, du musst etwas konkreter werden "irgendeine IF" dann "else" mit "irgendwelchen Zeichen" dass kann ich absolut nicht nachvollziehen!

                          Kommentar


                          • #14
                            Zitat von Flor1an Beitrag anzeigen
                            [...]

                            Ich versteh immer noch nicht ganz genau was passiert, du musst etwas konkreter werden "irgendeine IF" dann "else" mit "irgendwelchen Zeichen" dass kann ich absolut nicht nachvollziehen!
                            In den ifs kommt doch der Name des Feldes vor, sowohl als auch in dem HTML Formular bei den Inputfeldern beim atribut Name. Das muss man aber wirklich von so sehen!

                            Kommentar


                            • #15
                              DU hast sicher Fehler in den Abfragen!
                              Willst nicht mal ein bischen Code zeigen?
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                              Kommentar

                              Lädt...
                              X