tomas: Probleme bei IP Wechsel

Hallo,

ich habe folgendes Problem:

Ich habe ein PHP Script das Daten aus einen Formular mit dennen aus einer Datenbank vergleicht. Das Script funktioniert auch soweit ganz gut. Wenn man es aufruft gibt es ein Formular aus das per Post übermittel wird. Wenn ich es übermittel überprüft das gleiche Script die Daten un gibt ggf eine Fehlermeldung aus. Aber ich arbeite mit einer Internetverbindung die sich na 10 sekunden inaktivität abschaltet. Wenn ich das Script aufrufe, dann die Verbindung trenne, die Felder ausfülle und dann die Verbindung wieder starte (also eine neue IP beomme) absende, reagiert das Script so als würde es das erste mal Aufgerufen ohne den Inhalt der Felder des Formulars zu beachten.

Hat jemand vielleicht eine Idee was da falsch laufen könnte?

Vielen Dank schonmal im Voraus

Tomas

  1. Hallo,

    Wenn ich das Script aufrufe, dann die Verbindung trenne, die Felder ausfülle und dann die Verbindung wieder starte (also eine neue IP beomme) absende, reagiert das Script so als würde es das erste mal Aufgerufen ohne den Inhalt der Felder des Formulars zu beachten.

    Hat jemand vielleicht eine Idee was da falsch laufen könnte?

    Der Fehler liegt darin, dass das Skript versucht, eine "Person"
    ueber die IP-Adresse zu definieren, anstatt Sessions oder
    aehnliches zu verwenden.

    Das kann nur schiefgehen, weil
    a) wie Du selbst feststellst eine Person auch kurz nacheinander
    zwei verschiedene "IP-Adressen" haben kann (z.T. sogar ohne
    "auszuloggen", z.B. bei unsichtbaren Zwangs-Proxies)
    b) hinter einer IP-Adresse (Proxy) sehr viele "Personen"
    stehen koennen.

    Das Konzept des Skripts ist also Scheisse.

    Dass die IP-Adresse zu solchen Zwecken nicht gebraucht
    werden soll, steht uebrigens 1000fach im </archiv/>

    mfg,
    Thomas

    1. Hallo,

      Wenn ich das Script aufrufe, dann die Verbindung trenne, die Felder ausfülle und dann die Verbindung wieder starte (also eine neue IP beomme) absende, reagiert das Script so als würde es das erste mal Aufgerufen ohne den Inhalt der Felder des Formulars zu beachten.

      Hat jemand vielleicht eine Idee was da falsch laufen könnte?

      Der Fehler liegt darin, dass das Skript versucht, eine "Person"
      ueber die IP-Adresse zu definieren, anstatt Sessions oder
      aehnliches zu verwenden.

      Das kann nur schiefgehen, weil
      a) wie Du selbst feststellst eine Person auch kurz nacheinander
      zwei verschiedene "IP-Adressen" haben kann (z.T. sogar ohne
      "auszuloggen", z.B. bei unsichtbaren Zwangs-Proxies)
      b) hinter einer IP-Adresse (Proxy) sehr viele "Personen"
      stehen koennen.

      Das Konzept des Skripts ist also Scheisse.

      Dass die IP-Adresse zu solchen Zwecken nicht gebraucht
      werden soll, steht uebrigens 1000fach im </archiv/>

      mfg,
      Thomas

      Hallo,

      das Script gibt ein Formular aus wenn eine Variable nicht existiert (diese wird über ein unsichtbares Formularfeld gesetzt). Wenn das Formular ausgeben wurde, wird das Script durch das Formular wieder aufgerufen (damit ist die Variable vorhanden da sie im Formular über ein unsichtbares Formularfeld gesetzt wurde) und das Script überprüft die Eingaben. Ich sehe keinen Grud warum ich bei so einen Vorgang eine Session oder ähnliches nutzen sollte, aber aus irgendeinen Grund kommt die Variable nach den Ip wechsel nicht mehr an, die das Script veranlasst, die Formlardaten zu überprüfen anstatt das Formular auszugeben.

      1. Hallo,

        aber aus irgendeinen Grund kommt die Variable nach den Ip wechsel nicht mehr an, die das Script veranlasst, die Formlardaten zu überprüfen anstatt das Formular auszugeben.

        Zu "irgendeinem Grund" solltest Du eigentlich selbst die Antwort finden,
        denn es ist ja Dein Skript...

        Glaskugeln sind nicht unbedingt das wahre.
        Also, wenn Du willst, dass man Dir bei _Deinem_ Skript hilft,
        dann zeig den Quelltext her.
        Am besten, indem Du die Datei als *.txt oder *.phps speicherst
        und dann hier den Link postest. (</faq/#Q-19>)
        Oder, indem Du den abgekuerzten, relevanten Quellcode
        hier postest.

        Zu "kommt die Variable [...] nicht mehr an":
        Hast Du das geprueft?

        1. Steht das Hidden-Field wirklich im Formular?
        2. Was uebermittelt der Browser?

        print("<pre>";
        print_r($_POST); // wenn Du <form method="post" ...> verwendest, sonst $_GET
        print("<pre>";

        Gruesse,

        Thomas

        --
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
        Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
        1. phpteil:
          if(isset($_POST['action'])){
            überprüfe eingaben (denke ist unwichtig was da geschiet weul es    nicht ausgeführt wird)
          }
          else{
          gebe formular aus (reiner Html Code siehe unten)
          }

          htmlteil der ausgeben wurde:
          <form enctype="text/plain" action="login.php" method="post"   name="login" style="display:inline;">
          <input type="password" class="post" style="width:200px"  size="25" maxlength="32" name="passwort" value="%passwort%">
          <input type="hidden" name="action" value="login">
          input type="reset" name="rest" class="knopf"> <input type="Submit" name="submit" value="Absenden" class="knopf">
          </form>

          rufe script aus ->formularausgabe
          drücke absenden im formular -> formular wird abgearbeitet
          aber:
          rufe script aus ->formularausgabe
          wechselte ip und drücke absenden im formular ->formularausgabe

          1. Hallo,

            Der Quellcode sieht eigentlich OK aus (bis auf den Fehler beim Reset-Knopf).

            Das hast Du uebrigens sauber gepostet, Bravo!

            rufe script aus ->formularausgabe
            wechselte ip und drücke absenden im formular ->formularausgabe

            Lass Dir mal _in_jedem_Fall_ als erstes im Skript (also _vor_ dem IF)
            jeweils den vollstaendigen Inhalt von $_POST anzeigen, damit Du weisst,
            ob der Parameter nach dem IP-Wechsel
            a) vom Browser nicht abgeschickt wird
            b) vom Skript "verschluckt" wird.

            Hast Du es schon mit verschiedenen Browsern probiert?

            Gruesse,

            Thomas

            --
            Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
            Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
            Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
            1. Hallo,

              so die Variable scheint nach den wechsel der IP nicht zu existiren (bekomme entsprechende warnung wenn ich sie ausgeben möchte). Das Problem tritt mit dem Internetexplorer auf, auch mit einen Konqueror Browser aber mit einen Morzilla Browser nciht (was micht nur mehr verwirrt)

              mfg

              Tomas