Problem mit exlode

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

  • Problem mit exlode

    Hallo Leutz!

    Und zwar habe ich ein Problem mit explode(),es wird nicht richtig ausgeführt!

    Hier mal der Code!

    PHP-Code:
    <?php
    //Katgorie wird getrennt nach Id und Kategorienamen
    //$cat1 ist id / $cat2 ist der Kategoriename
    $cat explode("|",$_POST['cat']);
    $cat1 $cat[0];
    $cat2 $cat[1];


    //Das Select Feld as dem Formular
    <select name="cat" class="admintf">
        <
    option></option>
        <?
    php
        $sqlbefehl 
    ="Select id,ncat From $tab_dlcats Where level=1";
        
    $ergebnis mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
        while(
    $row mysql_fetch_array($ergebnis)){    
            echo 
    "<option value=\"".$row['id']."|".$row['ncat']."\">".$row['ncat']."</option>";
        }
        
    ?>
    </select>
    ?>
    Ich will nun erreichen das mir an dem | Zeichen der String getrennt wird und dann die ID und Kategoriename getrennt in zwei verschiedene Felder in die DB eingetragen werden. Aber er trägt mir beim Kategorienamen nur das | Zeichen ein! Kann mir jemand verraten waron das liegt? Ich bearbeite im gleichen Script einen anderen String auf die selbe Art und da geht das ohne Probleme!

    Danke für eure Tipps mfg der Litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

  • #2
    Ich bearbeite im gleichen Script einen anderen String auf die selbe Art und da geht das ohne Probleme!
    Manno..
    Dann ist doch offensichtlich dein einer String Schrott!

    explode() für die Böcke, welche du schießt verantwortlich zu machen, ist sicherlich der falsche Ansatz.
    Wir werden alle sterben

    Kommentar


    • #3
      Stimmt der Fehler war woanders.

      Ich habe versuch dann $cat1 und $cat2 mit stripslashes und mysql_real_escape_string versucht zu bearbeiten und somit sicher zu machen! Das funktionierte nicht!
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      http://www.lit-web.de

      Kommentar


      • #4
        Hallo,

        also ich denke auch nicht, dass explode() schuld ist, sondern, dass mit dem Sting etwas nicht stimmt.

        Was gibt denn ein var_dump($_POST['cat'])???

        Du zeigst uns aber auch nicht den code, mit dem da irgendetwas eingetragen werden soll... aber wie ich das sehe validierst du $cat1 und $cat2 nicht nochmal, was den Weg für eine Mysql-Injection freilegt....
        signed oder unsigned... das ist hier die Frage

        Kommentar


        • #5
          oh da warst du aber schneller^^

          nunja, du solltest das mit dem real_escape trotzdem machen, das zerhaut dir die variablen auch eigentlich nicht...
          signed oder unsigned... das ist hier die Frage

          Kommentar


          • #6
            Ich hatte das vorher so gemacht

            PHP-Code:
            <?php
            //Katgorie wird getrennt nach Id und Kategorienamen
            //$cat1 ist id / $cat2 ist der Kategoriename
            $cat explode("|",$_POST['cat']);
            $cat1 $cat[0];
            $cat2 $cat[1];

            if(
            get_magic_quotes_gpc())
            {
                   
            $cat1 stripslashes($cat[0]);
                   
            $cat2 stripslashes($cat[1]);
            }
            else
            {
                   
            $cat1 $cat[0];
                   
            $cat2 $cat[1];
            }

            //Sichern das Kategorie ID eine Zahl ist
            $cat1 mysql_real_escape_string($cat[0]);
            if(!
            preg_match("#[0-9]#",$cat1))
            {
                 echo 
            msgBox("Die zu sendende Kategorie (id) ist unzulässig<br>".$link);
                 exit();
            }

            $cat2 mysql_real_escape_string($cat[1]);
            if(!
            preg_match#^([0-9a-zäöü _-]+)$#i",$cat1))
            {
                 echo 
            msgBox("Die zu sendende Kategorie (id) ist unzulässig<br>".$link);
                 exit();
            }

            //Hier folgt der Eintrag in die DB


            //Noch mal das Formular
            <select name="cat" class="admintf">
                <
            option></option>
                <?
            php
                $sqlbefehl 
            ="Select id,ncat From $tab_dlcats Where level=1";
                
            $ergebnis mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
                while(
            $row mysql_fetch_array($ergebnis)){    
                    echo 
            "<option value=\"".$row['id']."|".$row['ncat']."\">".$row['ncat']."</option>";
                }
                
            ?>
            </select>
            ?>
            So hatte ich es erst gemacht und da ging das nicht da wurde mir blos das | Zeichen als Kategoriename eingetragen!
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            http://www.lit-web.de

            Kommentar


            • #7
              Ok habe es grad noch mal geändert und nun klappt es auch mit mysql_real_escape_string!

              Ich musste $cat1 und $cat2 noch mal neu validieren und nun haut es hin!
              Danke trotzdem!
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              http://www.lit-web.de

              Kommentar

              Lädt...
              X