Grafiken schützen

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

  • Grafiken schützen

    Liebes Forum,

    ich habe folgendes Problem.


    Ich habe eine HP auf der sich User einloggen können und bestimmte Angebote aufrufen können.
    Die User können sich auch Grafiken (png) ansehen, die speziell für sie erstellt wurden.
    Ich möchte nun verhindern, dass die User sich den Verweis merken und die Grafik auch ohne sich einzuloggen ansehen können.
    Die Grafik nach Sessionende löschen geht nicht, weil die Grafik immer erweitert wird.

    Danke für Hilfe.

  • #2
    Statt
    <img src="geheimegrafik.png" />
    einfach
    <img src="showimage.php" />
    mit
    PHP-Code:
    <?php // showimage.php
    session_start();
    if (
    $_SESSION['loggedin']) {
        
    header(/* die richtigen Header zum Bild */);
        
    readfile('geheimegrafik.png');
    }
    ?>
    und schon erfährt niemand mehr den wahren Pfad zum Bild.

    Kommentar


    • #3
      irgend was geht nicht. Ich bekomme immer das nette Zeichen da seine Grafik nicht richitg verlinkt ist.



      kann die php auch nach diesem Muster aussehen? Leider geht es auch so nicht.


      <?php
      header('localhost/home/tmp/bild.png');
      readfile('geheimegrafik.png');
      ?>

      Danke
      Zuletzt geändert von devas; 26.11.2006, 15:31.

      Kommentar


      • #4

        Das kann ja nicht gehen!
        Schau lieber mal im PHP Handbuch die Beschreibung zu header() an,
        http://ch2.php.net/manual/de/function.header.php

        Ausserdem schützt dein Script nicht vor Leuten die nicht eingeloggt sind.

        Nimm den Code von onemorenerd passe das if an, du wirst doch sicher etwas in der session haben, das sagt, das der User eingeloggt ist?
        Beim Header musst du den entsprechenden Header zum Bild Typ senden. Ausserdem musst du noch den Pfad zur Grafik bei readfile() anpassen.


        mfg Roland
        Zuletzt geändert von Rolandbar; 26.11.2006, 17:53.
        Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

        Kommentar


        • #5
          Entschuldigt meine Unwissenheit.



          <?php

          if ($_SESSION['name']) {
          header('http://localhost/home/grafik.png');
          readfile('http://localhost/geheimegrafik.png');
          }
          ?>


          Auf

          header()

          readfile()

          bin ich heute zu ersten mal getroffen.

          Kommentar


          • #6
            Beantworte folgende Fragen, wenn nötig mit Hilfe des Manuals:
            Warum soll dein Script das Bild ausliefern, wenn $_SESSION['name'] wahr ist?
            Was macht die Funktion header() und warum übergibst du ihr die URL http://localhost/home/grafik.png?
            Was macht die Funktion readfile() und warum übergibst du ihr die URL http://localhost/geheimegrafik.png?

            Kommentar


            • #7
              Ich habe es mal wieder gegeben wie ich das so verstehe, wobei mir die Funktionen header und readfile weiter hin unklar erscheinen. Das Manual versetzt mich nicht auf den Wissensstand von Euch, es liefert mir zuwenig verständliche Erklärungen.


              <?php
              if (isset($_SESSION['login']) && $_SESSION['login'] === true) { // variable vorhanden und true ist
              header('/home/bild.png'); // ist die Kopfzeile des HTTP Protokoll der informationen ueber die Datei liefern soll -- lage der Grafik wird angegeben
              readfile('grafik.png'); // laed eine Datei und gibt sie aus -- position der grafik die angegeben werden soll
              }
              ?>

              Kommentar


              • #8
                Du kommst der Sache schon näher.

                zu header():
                Falsch!
                header() wird zum Senden von HTTP Anfangsinformationen (Headern) im Rohformat benutzt. Weitere Informationen über die HTTP Header finden Sie in der HTTP/1.1 Spezifikation.
                Damit der Browser weiss, das dein PHP-Script ein Bild ist, und nicht HTML Code, musst du den Header Content-Type anpassen/senden. Wenn du ein .png Bild hast, wäre es der folgende:
                PHP-Code:
                header("Content-Type: image/png"); 
                zu readfile():
                Wenn dein Bild grafik.png im gleichen Ordner wie das PHP-Script liegt, stimmt das, sonnst musst du den Pfad zum Bild anpassen.


                mfg Roland
                Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

                Kommentar


                • #9
                  Juhu, ich habs verstanden.

                  Die php Datei übernimmt die Funktion der Grafik. Ich dachte die ganze Zeit das sie den Namen wandelt.

                  Also es geht nun wie es beschrieben ist. Leider stehe ich vor dem nächsten Poblem.

                  Ich will natürlich zuvor den Grafiklink dem User anpassen. Jeder User hat eine eigene Grafik mit anderem Inhalt.

                  In einer anderen Datei wird der Link in die Session geladen.

                  Ich habe das Skript nach dem if so geändert, leider wird der Link nicht übergeben und es wird kein Bild angezeigt.

                  $link=$_SESSION['link'];
                  header('Content-Type: image/png');
                  readfile($link);

                  und auch so gehts nicht

                  $link=$_SESSION['link'];
                  header('Content-Type: image/png'); //
                  readfile('$link');


                  Danke für die Grundlagen, ich hoffe nun den Rest auch noch mit Eurer Hilfe zu schaffen.

                  Edit:

                  Fehler lag bei mir, Problem gelöst .

                  Danke noch mal für den Wissenszuwachs.
                  Zuletzt geändert von devas; 26.11.2006, 19:22.

                  Kommentar

                  Lädt...
                  X