Ankündigung

Einklappen
Keine Ankündigung bisher.

20,- Euro: Datei-Upload, SQL-AES-ENCRYPT-Insert, Ausgabe per HEADER/echo

Einklappen

Neue Werbung 2019

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

  • #16
    Der Vergleich der Dateien ist in meinem Beispiel-Script nur dafür gedacht zu zeigen das was da in der Datenbank passierte auch so passiert das die Datei nachher noch brauchbar ist, das "beweist" man anhand eines Inhalt-Hash der Datei(en). Das Script jetzt ist eine Neuanordnung. Der Fehler den du bekommen hast rührt daher das Heredoc und Nowdoc Notierungen speziellen Regeln unterworfen sind.

    Wenn du den Mime-Type mitspeichern willst, kannst du das tun, erweiter das $write-Query und setz den mime-type ins Parameter-Binding ( als s ). Bedenke aber das du dann Blind dem Mime-Type der geliefert wurde vertraust.

    http://php-de.github.io/jumpto/eva-prinzip/
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #17
      Besten Dank, auch für die Erklärung und Links. Den Code habe ich so übernommen. Bei Aufruf erscheint ein

      Fatal error: Call to a member function bind_param() on a non-object in /www/htdocs/.../add_file.php on line 88
      der auf

      PHP-Code:
      $stmt->bind_param('sb'$beschreibung$null); 
      verweist. Von bind_param habe ich erst vor wenigen tagen etwas gehört. Du schreibst:

      Wenn du den Mime-Type mitspeichern willst, kannst du das tun, erweiter das $write-Query und setz den mime-type ins Parameter-Binding ( als s ). Bedenke aber das du dann Blind dem Mime-Type der geliefert wurde vertraust.
      Woher kann ich den Mime-Type sonst ableiten?

      Deinen Link auf "php_s_mysqli_extension_storing" habe ich überflogen, da handelt es sich ja aber immer statisch um Images. Liege ich mit der Ausgabe so richtig?

      PHP-Code:
      $id filter_has_var(INPUT_GET'id')
          ? (int) 
      $_GET['id']                                              # type cast
          
      null                                                           # default
      ;


      $read = <<<SQL

      SELECT
          AES_DECRYPT(FROM_BASE64(text), SHA2(
      $testkey, 256)) as text,
          AES_DECRYPT(FROM_BASE64(data), SHA2(
      $testkey, 256)) as data
          AES_DECRYPT(FROM_BASE64(data), SHA2(
      $testkey, 256)) as mime
          AES_DECRYPT(FROM_BASE64(data), SHA2(
      $testkey, 256)) as created
      FROM `file`
      WHERE
          id = ?

      SQL;


      if ( 
      $id ) {

      $stmt $db->prepare($read);
          
      $stmt->bind_param('i'$id);

          
      $stmt->execute();
          
      $stmt->bind_result($text$data$mime$created);
          
      $stmt->fetch();

          
      Header("Content-Type: ".$data);
            echo 
      $data;


      Wäre da mein 1. Verusch.

      PS: Das Eva-Prinzip passt zum Film ...

      Kommentar


      • #18
        Hmm, das hab sogar ich übersehen, dein $testkey muss in Quotes.

        PHP-Code:
        <?php

        /**
         * Konfiguration
         *
         * @hook Includes hier
         * @hook Variablen hier
         *
         * @see http://php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc
         */

        // Datenbankverbindung
        require_once ('konfiguration.php');

        // Settings
        $testkey 'testtest123';
        $created time();

        // Templates
        $write = <<<SQL

        INSERT INTO `file` (
            text,
            data
        ) VALUES (
            TO_BASE64(AES_ENCRYPT(?, SHA2('
        $testkey', 256))),
            TO_BASE64(AES_ENCRYPT(?, SHA2('
        $testkey', 256)))
        );

        SQL;

        $read = <<<SQL

        SELECT
            AES_DECRYPT(FROM_BASE64(text), SHA2('
        $testkey', 256)) as text,
            AES_DECRYPT(FROM_BASE64(data), SHA2('
        $testkey', 256)) as data
        FROM `file`
        WHERE
            id = ?

        SQL;
        zu deiner Frage: Bei dem Source hier ist es egal ob du Bilder, Elephpanten, Text-Dateien oder MP3s in die Datenbank lädst. Ob das Sinnvoll ist lasse ich hier ( generell ) mal außen vor. ( Datenbanken sind keine Dateisysteme ).
        [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

        Kommentar


        • #19
          Besten Dank tr0y, es funktioniert, die Bilder und PDF´s werden einwandfrei geöffnet und ich habe was gelernt!

          Kommentar


          • #20
            Glückwunsch
            [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

            Kommentar

            Lädt...
            X