• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

GET-Variable wird von PHP in SVG-Datei nicht erkannt

fiedel

Mitglied
Hallo!

Ich habe folgendes Problem, und zwar habe ich die SVG-Datei menu.php per object-Tag in meine Seite eingebunden und möchte über die URL deutlich machen, ob und welcher Schein sichtbar gemacht wird.
Nur leider wird die Variable nicht aus der URL ausgelesen (liegt wahrscheinlich daran, das es per Object-Frame eingebunden ist). Hätte da jemand einen Lösungsvorschlag für mich?

menu.php sieht im Groben etwa so aus:
PHP:
<?php
header('Content-Type:image/svg+xml');
echo'<?xml version="1.0" encoding="utf-8"?>';
?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" x="0px" y="0px" viewBox="18.93 -4.25 636 112" xml:space="preserve">
 <defs>
  <style type="text/css"><![CDATA[
  text{font-family:'times new roman';font-size:18px}
  .verlauf{opacity:0.25;fill:url(#verlauf)}
  .glanz{opacity:0.25;fill:#fff}
  .rahmen{fill:none;stroke:#fff;stroke-width:4}
  .schein{visibility:hidden}
  a:hover .schein{visibility:visible}
  .active .schein{visibility:visible}
  .about, .media, .software, .photoshop{fill:#f2f2f2;stroke:#999;stroke-width:0.5}
  ]]></style>
 </defs>
 <?php
   function svg($m,$p){
        if($_GET['m'] == $m) {
            echo "class=\"active\"";
        } 
        if($_GET['m'] != $m){
            echo "xlink:href=\"http://www.neanias.spacequadrat.de/Design/?m=$m&amp;p=$p\"";
        }
    }

 ?>

 <!-- ===============
      About Icon 
      =============== -->

 <a <?php svg('1','about'); ?> target="_parent">
    <rect x="28.9" y="8.2" fill="#903" width="68.5" height="61.3"/>
    <rect class="verlauf" x="28.9" y="8.2" width="68.5" height="61.3" />
    <image class="schatten" width="385" height="354" xlink:href="schatten.png" transform="matrix(0.226 0 0 0.2225 19.9312 0)"></image>
    <path class="glanz" d="M27.764,34.47c0,18.167,71.06,18.702,71.06,0c0-11.22,0-19.948,0-19.948s-0.155-6.59-8.98-6.59c-8.824,0-52.14,0-55.114,0s-6.966,3.475-6.966,8.55C27.764,27.345,27.764,34.47,27.764,34.47z"/>
    <path class="rahmen" d="M99.475,63.901c0,4.196-3.82,7.598-8.533,7.598H35.503c-4.712,0-8.532-3.402-8.532-7.598v-50.01c0-4.196,3.82-7.598,8.532-7.598h55.439c4.712,0,8.533,3.402,8.533,7.598V63.901z"/>

    <image class="schein" overflow="visible" width="518" height="377" xlink:href="data:image/png;base64,iVBORw0KGgoAAAA[...]AAAAAElFTkSuQmCC" transform="matrix(0.24 0 0 0.24 0 48.4)"> </image>

    <text transform="matrix(1 0 0 1 39.3 98.8)">Über...</text>
    <path class="about" d="M54.169,37.262c-6.364,5.584-6.94,13.192-6.94,18.484s32.548,4.659,32.426-0.748c-0.123-5.408-4.378-16.565-8.074-18.12C67.764,35.667,55.105,36.44,54.169,37.262z"/>
    <path class="about" d="M52.93,31.641c-1.186,1.896,1.839,11.046,10.666,10.24c8.827-0.805,9.983-10.224,9.834-11.095C73.281,29.915,59.55,21.056,52.93,31.641z"/>
    <path class="about" style="fill:#ddd" d="M51.949,31.641c0-1.841,0.123-11.851,11.279-11.506c11.156,0.346,10.911,8.86,10.911,10.356c0,1.496-2.697-1.496-4.291-1.611c-1.593-0.115-6.988,2.186-10.175-0.115c-3.187-2.301-3.923,1.15-5.026,1.956C53.543,31.526,51.949,31.641,51.949,31.641z"/>
    <ellipse fill="#999" cx="63.024" cy="45.218" rx="1.43" ry="1.802"/>
 </a>
Hier ist die Seite: Über... - Webdesign Testgebiet
 
Schön, dass du SVG benutzt. Aber am Verständnis von PHP hapert es noch ein wenig. Die GET-Variablen 'm' und 'p' sind der SVG-Datei (die vorher von PHP geparst wird ) nicht bekannt. Du müsstest also folgendes machen:

PHP:
<object type="image/svg+xml" data="svg/menu.php?m=<?php echo $_GET['m'] ?>&amp;p=<?php echo $_GET['p'] ?>" id="svg">
Du solltest auch prüfen, ob die Variablen überhaupt gesetzt sind.

Irgendwie überlege ich gerade zwanghaft, wie man der SVG diese Dynamik nehmen könnte, damit sie besser gecached wird. vll. sind ja mehrere "statische" SVG, mit jeweils anderem class="active" effektiver?
 
Ah, na klar! Danke schön! ;-)

Irgendwie überlege ich gerade zwanghaft, wie man der SVG diese Dynamik nehmen könnte, damit sie besser gecached wird. vll. sind ja mehrere "statische" SVG, mit jeweils anderem class="active" effektiver?
Dass das Cachen bei meiner Navigation rein gar nicht funktioniert, ist mir auch bereits aufgefallen, und ich finde das ziemlich nervig, doch leider verstehe ich nicht ganz, wie du das mit "statischen" SVG meinst, denn als ich noch gar nichts mit PHP "generiert" habe, wurde sie auch schon ständig neu geladen...

Gruß
fiedel
 
Evtl. musst du deinen Webserver so konfigurieren, dass er passende Expire-Header oder Cache-Control-Header sendet. Apache wird wohl alles mit +xml, wie HTML-Dokumente behandeln und diese werden üblicherweise nicht gecached.
 
Zurück
Oben