Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Variablen in Array speichern

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Variablen in Array speichern

    Hallo Leute,
    hätte mal eine kurze Frage. Habe schon Google, Forensuche, usw. befragt, aber leider nix gefunden.

    Wieso funktioniert folgende Anweisung nicht:

    PHP-Code:
    $arrVars = array($Unternehmen => "Unternehmen"$Firma => "Firma"$Inhaber => "Inhaber",
                    
    $Strasse => "Strasse"$Hausnummer => "Hausnummer"$PLZ => "PLZ"$Ort => "Ort"
                    
    $Telefon => "Telefon"$Fax => "Fax"$Email => "Email"$Internet => "Internet" ); 
    Er gibt mir bei print_r immer nur das Letzte Element aus.
    Wäre super, wenn mir jemand helfen könnte.

    Gruß,
    Patrick


  • #2
    Alle Variablen existieren nicht, somit wird jeweils der Leer-String als Key verwendet, welcher für jedes Element dann neu überschrieben wird.

    Würde ich zumindest vermuten.
    Solltest du hier nicht lieber die String ("Unternehmen") als Key und die Variablen ($Unternehmen) als Werte für den Array verwenden?

    error_reporting(E_ALL); hilft auch ungemein am Skript-Anfang.

    Kommentar


    • #3
      @Zergling:

      danke für deine schnelle Antwort!
      Mein Ziel war folgendes:

      Ich bekomme über ein Formular Get-Variablen. Jetzt wollte ich folgendes Konstrukt bauen:

      PHP-Code:
      <?php $arrVars = array($Unternehmen => "Unternehmen"$Firma => "Firma"$Inhaber => "Inhaber",
                      
      $Strasse => "Strasse"$Hausnummer => "Hausnummer"$PLZ => "PLZ"$Ort => "Ort",
                      
      $Telefon => "Telefon"$Fax => "Fax"$Email => "Email"$Internet => "Internet" );


      foreach(
      $arrVars as $key => $value){
         
      $key mysql_real_escape_string($_GET[$value]);

      }
      klingt sehr abenteuerlich, wäre aber super wenn es funktioniert hätte =)

      Zu error_reporting(E_ALL): hätte in diesem Fall nicht viel genutzt, da kein Fehler entstanden ist. Aber danke für den Tipp! Werd ich mir zu Herzen nehmen.

      Gruß,
      Patrick

      Kommentar


      • #4
        Etwas ähnliches ist mit
        PHP-Code:
        <?php

        $arrVars 
        = array("Unternehmen","Firma""Inhaber",
                        
        "Strasse","Hausnummer""PLZ""Ort",
                        
        "Telefon""Fax""Email""Internet" );

        // Variante #1
        foreach($arrVars as $value){
           $
        $value mysql_real_escape_string($_GET[$value]);
        }


        // Variante #2
        $sqlParameter array_map('mysql_real_escape_string'$_GET);
        ?>
        möglich.

        Kommentar


        • #5
          @Schnulli
          Deine Sicherheitsmassnahmen in allen Ehren, aber mysql_real_escape funktioniert nur mit einer bestehenden DB Verbindung.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Zitat von Patrick Schwarz
            @Zergling:

            danke für deine schnelle Antwort!
            Mein Ziel war folgendes:

            Ich bekomme über ein Formular Get-Variablen. Jetzt wollte ich folgendes Konstrukt bauen:

            PHP-Code:
            <?php $arrVars = array($Unternehmen => "Unternehmen"$Firma => "Firma"$Inhaber => "Inhaber",
                            
            $Strasse => "Strasse"$Hausnummer => "Hausnummer"$PLZ => "PLZ"$Ort => "Ort",
                            
            $Telefon => "Telefon"$Fax => "Fax"$Email => "Email"$Internet => "Internet" );


            foreach(
            $arrVars as $key => $value){
               
            $key mysql_real_escape_string($_GET[$value]);

            }
            klingt sehr abenteuerlich, wäre aber super wenn es funktioniert hätte =)

            Zu error_reporting(E_ALL): hätte in diesem Fall nicht viel genutzt, da kein Fehler entstanden ist. Aber danke für den Tipp! Werd ich mir zu Herzen nehmen.

            Gruß,
            Patrick
            Ist doch prinzipiell auch möglich, trotzdem ist es unüblich Keys variabel und Werte konstant zu halten. Der Key sollte konstant sein, damit ich verlässlich seinen Wert abfragen kann.

            Ich rate dir ein ähnliches Konstrukt:
            PHP-Code:
            <?php
            class DatabaseManager
            {
              
            // .. das übliche
              
            public function quoteValue($mValue)
              {
                if (
            is_array($mValue)) {
                  return 
            array_map(array($this'quoteValue'), $mValue);
                }
                if (
            get_magic_quotes_gpc()) {
                  
            $mValue strip_slashes($mValue);
                }
                return 
            mysql_real_escape_string($mValue$this->_connectionLink);
              }
              
            // ..
            }
            ?>
            Das Validieren ist nun eigentlich recht einfach:
            PHP-Code:
            <?php
            $oDB 
            = new DatabaseManager(..);
            $aValidatedGet $oDB->quoteValue($_GET);
            ?>
            Dann validierst du schonmal alles und vergißt keinen Eintrag.

            Kommentar


            • #7
              Zitat von nikosch77
              @Schnulli
              Deine Sicherheitsmassnahmen in allen Ehren, aber mysql_real_escape funktioniert nur mit einer bestehenden DB Verbindung.
              Wird keine übergeben, wird die zuletzt verwendete benutzt.
              Demnach
              1. mysql_connect/select_db -> mysql_real_escape_string => kein Problem
              2. Wenn es Dich stört, verpack es halt wie Zergling

              Kommentar

              Lädt...
              X