Problem bei Verschieben eines Such-Skritpes

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

  • Problem bei Verschieben eines Such-Skritpes

    Hallo zusammen,

    ich habe folgendes Problem: Ich möchte eine einfache IP-Sperre für eine Bewertung realisieren. Dazu lasse ich alle verwendeten IPs in eine Spalte ("IP") eintragen. Dann lasse ich nach dieser IP suchen und falls gefunden, darf derjenige nicht mehr abstimmen. Soweit so gut. Das Script läuft auch - jedoch nur relativ weit oben in meinem Gesamtcode. Kopiere ich es weiter nach unten, funktioniert die Überprüfung der IP nicht mehr. Hat jemand eine Idee, woran das liegen könnte? Ich bin derzeit ratlos. Anbei der verkürzte Code.

    PHP-Code:
    <?
      $ip=$_SERVER['REMOTE_ADDR'];
      $aid=$comments[id];

       $voted=mysql_num_rows(mysql_query("SELECT IP FROM test WHERE IP LIKE '%".$ip."%' AND id='$aid'"));
        if(!$voted)
          {
          //darf abstimmen
          }
        else
          {
          //darf nicht abstimmen
          }

    ?>

  • #2
    „Funzt nich“ ist absolut keine brauchbare Problembeschreibung.

    http://www.php-resource.de/forum/php...uncements.html
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Pack doch noch mal den Code nach unten. Und dann gibst du dir den Query per echo aus. Ich vermute, dass du irgendwo eine Variable überschreibst.

      Peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        @wahsaga: "Funktioniert nicht" heißt, dass ich immer voten (if) kann, obwohl meine IP schon vorhanden ist.

        @Kropff: Blöde Frage, einfach "echo $voted" oder muss ich etwas beachten? Wenn ich das mache, dann kommt "oben" eine "1", unten erscheint nichts.
        Wenn ich eine Variable überschreiben sollte, dann hätte ich doch bei einem anderen Script Probleme, aber nicht bei dem, das überschreibt, oder? Da es auch fast am Ende meines Gesamtcodes steht, dürfte danach auch nix überschreiben.

        Kommentar


        • #5
          Zitat von unnamedkh Beitrag anzeigen
          "Funktioniert nicht" heißt, dass ich immer voten (if) kann, obwohl meine IP schon vorhanden ist.
          Ja, toll - hilft aber immer noch nicht weiter.

          Blöde Frage, einfach "echo $voted" oder muss ich etwas beachten? Wenn ich das mache, dann kommt "oben" eine "1", unten erscheint nichts.
          Das deutet nach wie vor darauf hin, dass die Datenbankabfrage schief gegangen ist.

          Um herauszufinden, warum, liest du jetzt erst mal die Regeln, und machst, was da drin steht.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Zitat von unnamedkh Beitrag anzeigen
            @Kropff: Blöde Frage, einfach "echo $voted" oder muss ich etwas beachten?
            Wer lesen kann, ist klar im Vorteil:
            Und dann gibst du dir den Query per echo aus
            PHP-Code:
            echo "SELECT IP FROM test WHERE IP LIKE '%".$ip."%' AND id='$aid'" 
            Außerdem ist das LIKE imho fehl am Platz. Da solltest du mit = arbeiten.

            Peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Zitat von wahsaga Beitrag anzeigen
              Ja, toll - hilft aber immer noch nicht weiter.
              Ich weiß nicht, was ich Dir noch schreiben soll. Wie geschrieben, funktioniert das Skript relativ weit oben ohne Probleme, weiter unten führt er immer else anstatt wie eigentlich gewollt if aus. Wenn ich dann else ausführen (also vote), wird alles erhöht, IP eingetragen, allerdings kann ich weiter else ausführen, sprich ist $voted immer noch nicht das, was ich will. Die Spalte IP sieht in etwa so aus "ip, ip2, ip3, ...". Mehr fällt mir beim besten Willen nicht ein.

              @Kropff: Danke. Jetzt weiß ich, dass ich vorher die Variable $ip schon einmal verwende (nach dem ersten Aufruf des Skriptes und vor dem letzten/zweiten Aufruf). Ändert aber nichts, da der Wert gleich ist.

              Nein, like stimmt meiner Meinung nach, weil ich nach einem Muster in der Spalte suche. Da in der Spalte mehrere IPs sind, suche ich nur nach einem Muster - die einzigartige IP.

              Kommentar


              • #8
                Das Problem mit LIKE ist aber, dass %$ip% mit $ip = 1.0.0.1 nicht nur auf 1.0.0.1 passt sondern auch auf 11.0.0.11 und noch viele weitere IPs. Ich hoffe du verwendest ein Trennzeichen in der IP-Spalte, z.B. ein Komma. Dann solltest du %,$ip,% verwenden.
                Noch besser wäre natürlich, wenn du deine DB normalisierst!

                Kommentar


                • #9
                  Zitat von onemorenerd Beitrag anzeigen
                  Das Problem mit LIKE ist aber, dass %$ip% mit $ip = 1.0.0.1 nicht nur auf 1.0.0.1 passt sondern auch auf 11.0.0.11 und noch viele weitere IPs. Ich hoffe du verwendest ein Trennzeichen in der IP-Spalte, z.B. ein Komma. Dann solltest du %,$ip,% verwenden.
                  Noch besser wäre natürlich, wenn du deine DB normalisierst!
                  Ah, danke, daran habe ich nicht gedacht. Werde ich die Komma-Variante verwenden, zumal ich nicht genau weiß, was Du mit "normalisieren" meinst!?

                  Kommentar


                  • #10
                    Zitat von unnamedkh Beitrag anzeigen
                    zumal ich nicht genau weiß, was Du mit "normalisieren" meinst!?
                    Normalisierung

                    Peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar

                    Lädt...
                    X