Probelm mit einer IF Anweisung

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

  • Probelm mit einer IF Anweisung

    Hallo Leute,

    ich habe eine Problem mit meiner IF Anweisung... es wird jedes mal einen Eintrag in die DB gemacht.. und es wird nicht mehr geprüft ob die IP schon vorhanden ist..
    Ansonsten funktioniert alles in dem Script..

    ich benutze diese Anweisung:
    if(Bedingung)
    { Anweisung }
    else { Anweisung }
    ?>


    das ist mein Script!


    PHP-Code:


        
    include "connect.php";  // Datei connect.php wir eingebunden,
                                // damit bekomme ich eine Verbindung zu DB!

        // Variable wird überprüft bwz. SGL Injections
        
    $_REQUEST['Name']    = mysql_real_escape_string($_REQUEST['Name']);        
        
    $_REQUEST['Titel']   = mysql_real_escape_string($_REQUEST['Titel']);
        
    $_REQUEST['Eintrag'] = mysql_real_escape_string($_REQUEST['Eintrag']);
        
            
          if    (

        
    // Das ist die SQL-Abfrage ob ein ebestimmte IP schon vorhaden ist
        
    $sql =    "SELECT IP
                
                FROM Gaestebuch 
                
                WHERE IP = '"
    .$_SERVER['REMOTE_ADDR']."' LIMIT 1")
        
        
        {    
    // Das passiert wenn die SQL-Abfrage true ist   
        
    $SQL =    "INSERT INTO Gaestebuch 
                
                (Datum, Name, Titel, Eintrag, IP) 
                
                VALUES (NOW(''),
                '"
    .$_REQUEST['Name']."',
                '"
    .$_REQUEST['Titel']."',
                '"
    .$_REQUEST['Eintrag']."',
                '"
    .$_SERVER['REMOTE_ADDR']."'
                )"
    ;
                
        
    mysql_query($SQL$DatabasePointer);
        
        if(
    mysql_affected_rows($DatabasePointer) == 1) {
        echo 
    "Es wurde"mysql_affected_rows($DatabasePointer), "Datensatz hinzugefuegt<br /><br />";
        echo 
    "Ihr IP-Adresse"$_SERVER['REMOTE_ADDR'], "wird gespeichert damit kein Missbrauch entsteht!";
        }
        
            else {
            echo (
    'Error: ' mysql_error());
            }
        }
     
     
     
     
      else  {     
    // Das passiert wenn die SQL-Abfrage falseist
             
    $result mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());

             if(
    mysql_num_rows($result)) {
                      echo 
    "<p class=\"content\">\n".
                           
    "Sie haben gerade einen Eintrag hinterlassen. Sie koennen nichts mehr eintragen.\n".
                           
    "</p>\n";
             }
      } 


    Nur so nebenbei falls jemand was in dem Script auffällt was nicht sicher ist (SQL Injections) oder so dann schreibt es bitte einfach dazu, ich kann darauf nur lernen!

    Cu Andreas
    Zuletzt geändert von Maclaim; 06.02.2009, 13:21.

  • #2
    PHP-Code:
      if    (

        
    // Das ist die SQL-Abfrage ob ein ebestimmte IP schon vorhaden ist
        
    $sql =    "SELECT IP
                
                FROM Gaestebuch 
                
                WHERE IP = '"
    .$_SERVER['REMOTE_ADDR']."' LIMIT 1"
    Ist immer TRUE obwohl die Abfrage NIE durchgeführt wird....
    Wozu wurden wohl mysql_query() usw erfunden?
    Wir werden alle sterben

    Kommentar


    • #3
      Ja ich habe mir das mal angeschaut und habs jetzt bissel umgeschrieben... also so funktionierts jetzt :-)

      Ist bestimmt nicht die beste und sicherste Lösung aber ok.. denke ich ;-)

      PHP-Code:

      <?php
          
          
      include "connect.php";  // Verbindung zu DB wird eingebunden!


          //Es wirs auf eine mögliche SGL Injection überprüft!
          
      $_REQUEST['Name']    = mysql_real_escape_string($_REQUEST['Name']);        
          
      $_REQUEST['Titel']   = mysql_real_escape_string($_REQUEST['Titel']);
          
      $_REQUEST['Eintrag'] = mysql_real_escape_string($_REQUEST['Eintrag']);


          {     
              
      //Die Funktion mysql_query sendet eine MySQL-Anweisung 
              
      $SQL mysql_query("
                       
              SELECT IP 

              FROM Gaestebuch 
              
              WHERE IP = '"
      .$_SERVER['REMOTE_ADDR']."'");
              
              
      // Mysql_num_rows gibt die Anzahl der Datensätze (Zeilen) zurück!
              
      if (mysql_num_rows($SQL) == 1
          
              
              
              
              { 
      // Die Überprüfung ist True und der Text wird mit echo ausgegben!
              
      echo "Du kannst nur 1mal einen Eintrag machen!";
              } 
          
          else  
          
              { 
      // Die Überprüfung war False und es wir ein Eintrag in GB gemacht
              
      $SQL =    "INSERT INTO 
                  
              Gaestebuch 
                  
              (Datum, Name, Titel, Eintrag, IP) 
                  
              VALUES(    NOW(''),
                      '"
      .$_REQUEST['Name']."',
                      '"
      .$_REQUEST['Titel']."',
                      '"
      .$_REQUEST['Eintrag']."',
                      '"
      .$_SERVER['REMOTE_ADDR']."'
                      )"
      ;
              
              
      //Die Funktion mysql_query sendet eine MySQL-Anweisung     
              
      mysql_query($SQL$dz);
              
              
      //Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation     
              
      if(mysql_affected_rows($dz) == 1
          
                  {    
                      echo 
      "Es wurde"mysql_affected_rows($dz), "Datensatz hinzugefuegt<br />";
                      echo 
      "Ihr IP-Adresse"$_SERVER['REMOTE_ADDR'], "wird gespeichert damit kein Missbrauch entsteht!";
                  }
          
                  else 
                  
                  {
                      echo (
      'Error: ' mysql_error());
                  }

              } 
      // Die Überprüfung war False und es wir ein Eintrag in GB gemacht BEENDET
          
      }
      ?>

      Kommentar


      • #4
        also wenn das der original-code ist, dann sollte dir der parser eigentlich eine fehlermeldung um die ohren hauen.

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

        Kommentar


        • #5
          Mmmmh ... ich fang mal an!
          Anstatt ...

          PHP-Code:
          include "connect.php"
          ... besser ...

          PHP-Code:
          require_once ("connect.php"); 


          Poste doch bitte mal Deine 'connect.php'!

          Gruß php_fussel

          Kommentar


          • #6
            So hier ist meine 'connect.php'

            PHP-Code:

            <?php
                $host 
            "aaa";
                
            $user "aaa";
                
            $pass "aaa";
                
            $database "aaa";
                
                
            $dz =     mysql_connect    ($host$user$pass)     or die(mysql_error());
                        
            mysql_select_db    ($database$dz)         or die(mysql_error());
                                    
            ?>


            Übrigens meine neue insert.php falls mir noch jemand nen tipp geben kann ich freue mich
            PHP-Code:

            <?php
               
            // Verbindung zu DB wird eingebunden!
               
            require_once ("connect.php");
               

               if (empty (
            $_POST['Name']) . empty($_POST['Titel']) . empty($_POST['Eintrag'])) {
                    echo 
            "Bitte fuellen sie alle Felder aus!";
               }
               
               else
              {   
            //Es wirs auf eine mögliche SGL Injection überprüft!
               
            $_REQUEST['Name']    = mysql_real_escape_string($_REQUEST['Name']);        
               
            $_REQUEST['Titel']   = mysql_real_escape_string($_REQUEST['Titel']);
               
            $_REQUEST['Eintrag'] = mysql_real_escape_string($_REQUEST['Eintrag']);


               { 
            //Die Funktion mysql_query sendet eine MySQL-Anweisung 
               
            $SQL mysql_query("
               SELECT IP 
               FROM Gaestebuch 
               WHERE IP = '"
            .$_SERVER['REMOTE_ADDR']."'");

               
            // Mysql_num_rows gibt die Anzahl der Datensätze (Zeilen) zurück!
               
            if (mysql_num_rows($SQL) == 1

               { 
            // Die Überprüfung ist True und der Text wird mit echo ausgegben!
               
            echo "Du kannst nur 1mal einen Eintrag machen!";
               } 
               
               else  
               
               { 
            // Die Überprüfung war False und es wir ein Eintrag in GB gemacht
               
            $SQL =    "INSERT INTO 
               Gaestebuch 
               (Datum, Name, Titel, Eintrag, IP) 
               VALUES(    NOW(''),
                            '"
            .$_REQUEST['Name']."',
                            '"
            .$_REQUEST['Titel']."',
                            '"
            .$_REQUEST['Eintrag']."',
                            '"
            .$_SERVER['REMOTE_ADDR']."'
                            )"
            ;

               
            //Die Funktion mysql_query sendet eine MySQL-Anweisung     
               
            mysql_query($SQL$dz);

               
            //Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation     
               
            if(mysql_affected_rows($dz) == 1)   {
               echo 
            "Es wurde"mysql_affected_rows($dz), "Datensatz hinzugefuegt<br />";
               echo 
            "Ihr IP-Adresse"$_SERVER['REMOTE_ADDR'], "wird gespeichert damit kein Missbrauch entsteht!";
               }
                  else 
               {echo (
            'Error: ' mysql_error());}
               
               } 
            // Die Überprüfung war False und es wir ein Eintrag in GB gemacht BEENDET
               
               
            }
            }
            ?>

            <a href="gaestebuch.php">Eintr&aumlge</a>
            Zuletzt geändert von Maclaim; 07.02.2009, 14:10.

            Kommentar


            • #7
              PHP-Code:
              if (empty ($_POST['Name']) . empty($_POST['Titel']) . empty($_POST['Eintrag'])) { 
              Ich glaube hier wäre etwas Grundlagenforschung angebracht.
              Der Punkt ist ein Verkettungsoperator und konkateniert damit mehrere Ausdrücke. Was du eigentlich suchst, ist ein Vergleichsoperator, und zwar das logische Oder.

              Grüße
              Nieder mit der Camel Case-Konvention

              Kommentar

              Lädt...
              X