Übergabe, das leidige Thema

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

  • Übergabe, das leidige Thema

    Ausgangslage ist wie folgt:

    Es gibt die Dateien index.php, view_image.php und read_image.php

    In der Datei index.php steht <img src="view_image.php?name=xyz">,
    und dies wird widerum in der read_image.php Datei verarbeitet.

    Worum es mir geht:
    In der view_image.php Datei möchte ich das Bild $name aufrufen,
    dass in der read_image.php Datei generiert wird,
    jedoch kann ich weder $_GET noch $_POST benutzen, da im
    HEADER einzig und allein index.php stehen bleibt und in
    dem Sinne keine Variablen übergben werden.

    Setze ich $name in der Datei view_image.php gleich einem
    Namen eines Bildes, das vorhanden ist, so funktioniert alles
    einwandfrei. Nur eben wenn ich <img src="view_image.php?name=xyz">
    in die index.php Datei integriere kopmmt es zu einem Anzeigefehler:
    Die Ausgabe ist leer. Kann mir bitte jemand mithelfen,
    das Problem zu beseitigen ??

  • #2
    jedoch kann ich weder $_GET noch $_POST benutzen, da im
    HEADER einzig und allein index.php stehen bleibt und in
    dem Sinne keine Variablen übergben werden.
    Warum?

    Kommentar


    • #3
      Naja, $_GET kann ich schon benutzen, aber woher weiß
      die Datei view_image.php, dass sie einen Befehl mittel $_GET
      bekommt, wenn in der URL index.php steht?
      Bis jetzt funktioniert es so leider nicht bei mir.

      Kommentar


      • #4
        Hä?

        da im
        HEADER einzig und allein index.php stehen bleibt und in
        dem Sinne keine Variablen übergben werden.
        Was meinst Du hiermit? Ich verstehe nur Bahnhof. Du bindest ein Bild ein über die view_image.php, richtig? Dort wird dann mittels Include oder Require die read_image.php aufgerufen, oder? Warum sollen dort dann die GET-Variablen nicht zur Verfügung stehen?

        Bitte genauer!

        Kommentar


        • #5
          In der view_image.php Datei lese ich meine Grafik ein und
          erstelle eine Challenge-ID. In der read_image.php Datei vergleiche
          ich die Challenge-ID. Wenn sie registriert ist, zeige ich meine Grafik
          an, ansonsten ein transparentes GIF.

          Der Hintergrund für das alles:

          Meine Grafik soll als Hintergrundtextur in einer Tabelle
          dargestellt werden und darüber ein tranparentes Pixel-Bild,
          sodass beim Anklicken nicht meine Grafik, sondern das
          GIF Bild heruntergeladen wird.

          In beiden Dateien habe ich absolute Pfade, insofern verstehe
          ich nicht, warum das Bild beim direkten Aufruf angezeigt wird,
          aber nicht mittels Integration.

          Kommentar


          • #6
            Ich versteh immer noch nur Bahnhof. In welcher Datei liegen die GET-Parameter jetzt nicht vor, und warum?

            Kommentar


            • #7
              Die GET Parameter sind nur vorhanden in view_image.php,
              wenn ich die Datei direkt aufrufe.
              Schreibe ich aber <img src="view_image.php?name=xyz">
              in die index.php Datei, so scheinen
              die Parameter wie ausgelöscht und nichts wird mehr angezeigt.

              Kommentar


              • #8
                Vielleicht fällt euch etwas auf, wenn ich den kompletten
                Code poste:

                index.php
                PHP-Code:
                <?php
                  
                echo "<img src=\"view_image.php?name=xyz\" alt=\"\" border=\"\">";
                ?>
                view_image.php
                PHP-Code:
                <?php session_start();

                // Cache deaktivieren
                header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                header("Last-Modified: " gmdate("D, d M Y H:i:s") ." GMT");
                header("Pragma: no-cache");
                header("Cache-Control: no-store, no-cache,
                max-age=0, must-revalidate"
                );

                // Challenge-ID
                mt_srand((double)microtime()*1000000);

                $random mt_rand();
                $random md5(uniqid($random,TRUE));

                $sess_challenge_id $random;

                if(!
                session_is_registered("sess_challenge_id")):
                  
                session_register("sess_challenge_id");
                endif;

                // Grafik auslesen
                $pic    $name//view_image?name=xyz
                $img    = @GetImageSize
                ("/www/htdocs/vonwegen/images/".$pic);
                $width  $img[0];
                $height $img[1];

                // HTML-Tabelle anzeigen
                printf("<table border=\"0\" cellpadding=\"0\"
                cellspacing=\"0\" width=\"%s\" height=\"%s\">\n"
                ,$width,$height);
                print 
                "<tr>\n";
                printf("<td width=\"%s\" height=\"%s\"
                background=\"read_image.php?img=%s&challenge=%s\">"
                ,
                $width,$height,rawurlencode($pic),$sess_challenge_id);
                printf("<img border=\"0\" src=\"clear.gif\" width=\"%s\" height=\"%s\">",$width,$height);
                print 
                "</td>\n";
                print 
                "</tr>\n";
                print 
                "</table>\n";

                ?>
                read_image.php
                PHP-Code:
                <?php

                session_start
                ();

                // Challenge-ID OK -> Bild anzeigen
                if(session_is_registered("sess_challenge_id")
                and 
                $sess_challenge_id == $challenge):

                  
                session_unregister("sess_challenge_id");

                  
                $path "/www/htdocs/vonwegen/images/";
                  
                $img  rawurldecode($img);
                  
                $read = @GetImageSize($path.$img);
                  
                $type $read[2];

                  
                // Nun bestimmen wir den Datei-Typ, damit wir dem Browser sagen können
                  // welcher Grafik-Typ er nun vorgeschmissen bekommt
                  
                switch($type)
                    {
                    case 
                1:
                      
                $mime "image/gif";
                    break;
                    case 
                2:
                      
                $mime "image/jpeg";
                    break;
                    case 
                3:
                      
                $mime "image/png";
                    break;
                    case 
                4:
                      
                $mime "application/x-shockwave-flash";
                    break;
                    }

                  
                // Nun senden wir die Header und lesen mit readfile() unsere
                  // Grafik aus und senden diese direkt an den Browser
                  
                header("Content-Type: $mime");
                  
                header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                  
                header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
                  
                header("Pragma: no-cache");
                  
                header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
                  
                readfile($path.$img);

                // Unerlaubter Zugriff -> Transparentes GIF *ätsch*
                else:
                  
                header("Content-type: image/gif");
                  
                header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
                  
                header("Last-Modified: " gmdate("D, d M Y H:i:s") ." GMT");
                  
                header("Pragma: no-cache");
                  
                header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
                  
                readfile("clear.gif");
                endif;

                ?>

                Kommentar


                • #9
                  Äh.... Du bindest ein Skript, das eine HTML-Struktur ausgibt, als IMG ein?

                  Kommentar


                  • #10
                    Naja, ich gebe zu, dass das völliger Schwachsinn ist
                    Wenn ich es jetzt richtig probiere und in die index.php Datei

                    <?php include ("view_image.php?name=xyz") ?>

                    schreibe, so erscheint die Fehlermeldung:

                    Warning: main(view_image.php?name=xyz): failed to open
                    stream: No such file or directory in /www/htdocs/vonwegen/index.php on line 1

                    Warning: main(view_image.php?name=xyz): failed to open
                    stream: No such file or directory in /www/htdocs/vonwegen/index.php on line 1

                    Warning: main(): Failed opening 'view_image.php?name=xyz' for
                    inclusion (include_path='.:/usr/share/php:..') in /www/htdocs/vonwegen/index.php on line 1

                    Kommentar


                    • #11
                      *schwitz*, ich bin nachwievor am grübeln,
                      aber es will mir einfach nicht ins Auge springen.
                      Die EInbindungen sind meines Erachtens nun richtig,
                      als auch die Pfadangaben und Verlinkungen...

                      Kommentar


                      • #12
                        Bei Dateisystem-Aufrufen wie include kannst Du keine GET-Variablen übergeben. Totaler Denkfehler. Variable vorher definieren und dann in der inkludierten Datei auslesen.

                        Kommentar


                        • #13
                          Ich dneke nicht, dass es eine saubere Lösung ist, aber
                          funktioniert fürs erste:

                          Ich habe nun folgendes in der index.php Datei stehen, damit
                          der $_GET Wert übermittelt wird:

                          PHP-Code:
                          <?php $_GET['name'] = "xyz"; include("view_image.php"); ?>

                          Kommentar


                          • #14
                            Original geschrieben von kerbstone
                            Meine Grafik soll als Hintergrundtextur in einer Tabelle dargestellt werden und darüber ein tranparentes Pixel-Bild, sodass beim Anklicken nicht meine Grafik, sondern das GIF Bild heruntergeladen wird.
                            Man, so ein Schwachsinn ...

                            Wieso vergeudest du für sowas auch noch PHP-Rechenleistung?
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              @wahsaga
                              Hast du eine bessere Idee? Ich bin für alles offen.

                              Kommentar

                              Lädt...
                              X