Announcement

Collapse
No announcement yet.

Zusammengesetzter String

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zusammengesetzter String

    Hallo alle zusammen!

    Mein banales Problem:

    Ich speicher in der Variable $pfad einen Pfad welcher sich u.A. aus dem Username zusammensetzt. Klappt soweit auch ganz gut, wenn ich mir mit echo "$pfad" das Ergebnis anschaue ist soweit alles richtig.

    Nun zum eigentlichen Problem:

    Code:
    <?php echo " <img src=$pfad /> " ?>
    Entweder ich bekomm eine Fehlermeldung, dass dort keine Variable erwünscht ist oder ich bekomm keine Fehlermeldung (hab schon einiges ausprobiert) aber das Bild wird auch nicht angezeigt. Wie gesagt, der Pfad stimmt, das Bild existiert dort auch.

    Hier noch die Variable

    Code:
      <?php session_start();
      $pfad =  $_SERVER ['DOCUMENT_ROOT'].'/html/user/'.$_SESSION ['username'].'/avatar.jpg' ;
        ?>
    Gruß,
    André

  • #2
    der $pfad müßte meiner Meinung nach auch in "" eingeschlossen werden
    http://de.selfhtml.org/html/grafiken/einbinden.htm
    Ich habs gleich!
    ... sagte der Programmierer.

    Comment


    • #3
      Hallo,
      das Problem ist $_SERVER['DOCUMENT_ROOT']! DOCUMENT_ROOT ist der Pfad der Datei auf dem Server (/srv/die_domain/public_html/images/bild.jpg) und stimmt in den seltensten Fällen mit der Webadresse (http://www.die_domain/images/bild.jpg) überein.

      Gruss Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        hey,

        das mit den "" Hab ich schon probiert, geht leider nicht.
        Adresse ist bei mir im mom noch localhost.
        Der Pfad den ich mir per echo ausgeben lasse ist auch genau der den ich gern hätte ( /html/user/username/avatar.jpg )
        @ falk: Ich versteh leider nicht genau was du meinst.

        An einer anderen Stelle meiner Seite lasse ich den User eine Datei hochladen, diese wird auch über einen dynamisch angelegten String genau da hingespeichert wo ich ihn hin haben will.
        Deswegen versteh ich auch nicht, wieso das hier nicht funktioniert.

        edit:
        Wenn ich
        Code:
        <?php echo " <img src="$pfad" /> " ?>
        schreib kommt:

        Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';'

        Comment


        • #5
          Guck mal, bei php gibt es für die Strings wirklich mehrere Varianten,
          u.a. single quoted und double quoted. Außerdem muss man Zeichen wie " maskieren.

          http://php.net/manual/de/language.types.string.php

          Ich mach ganz selten was in php, aber so in die Richtung ...

          Code:
          <?php echo '<img src=\"$pfad\" />' ?>
          ... und den Hinweis von Falk beachten, der Browser kennt zwar den localhost aber nicht C:\Dokumentroot_des_Servers
          Ich habs gleich!
          ... sagte der Programmierer.

          Comment


          • #6
            Originally posted by Wuselpuff View Post
            ...Der Pfad den ich mir per echo ausgeben lasse ist auch genau der den ich gern hätte ( /html/user/username/avatar.jpg )
            @ falk: Ich versteh leider nicht genau was du meinst.
            Der Pfad den du dir zusammenbaust ist der physische Pfad auf der Platte des Servers, eben "/html/user/username/avatar.jpg". Dieser Pfad hat doch aber nichts mit der URL zu tun, unter der der Browser das Bild per HTTP erreichen kann!
            Wie ruft du denn deine Seite im Browser auf? Ja sicherlich nicht mit /html/index.html!?

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Originally posted by tinof View Post
              ...Außerdem muss man Zeichen wie " maskieren.
              ...
              Code:
              <?php echo '<img src=\"$pfad\" />' ?>
              So eben gerade nicht . Die einzigen Zeichen die man innerhalb eines single quoted string maskieren muss, sind das Single Quote ' und der Backslash \.
              Ausserdem würde innerhalb des single quoted string die Variable $pfad nicht geparst werden.
              Also entweder so:
              PHP Code:
              <?php echo '<img src="'.$pfad.'" />' ?>
              oder so:
              PHP Code:
              <?php echo "<img src=\"$pfad\" />" ?>
              Gruß Falk
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment


              • #8
                Der Nutzer einer Website hat doch nicht Zugriff auf alle Dateien die irgendwo auf dem Webserver liegen. Vielmehr wird für einen Webserver ein Verzeichnis eingerichtet, ab dem die Nutzer einer Website zugreifen dürfen. Üblicherweise als DocumentRoot bezeichnet.

                Soll der Nutzer einer Website nun auf eine Grafik zugreifen, die du erzeugst, so muss du diese ab dem DocumentRoot ablegen. Dem Nutzer ist dann der Link ab dem DocumentRoot oder der Webapplikation zu generieren.

                Unabhhängig davon hast du bei der "Arbeit mit PHP" natürlich die Möglichkeit überall - also auch außerhalb des DoucmentRoot zuzugreifen (sofern das nicht durch andere Rechte beschnitten wird) und bsp. Dateien kopieren
                Christian

                Comment


                • #9
                  document.root ist also NICHT automatisch das ursprungsverzeichnis des servers sondern ein Verzeichnis das ich bestimme?
                  Meine Dateien rufe ich mit localhost/projektname/user/username/avatar.jpg auf.
                  Die User sollen Zugriffsrechte ab dem Userverzeichnis haben, am Besten jeder nur auf sein Verzeichnis... Obwohl. Dann bekomm ich bestimmt Probleme wenn jemand auf die Bildergalerie eines anderen zugreifen will.
                  Bei der Suche nach geeigneten Verzeichnisangaben bin ich auf document.root gestoßen.
                  Da war einer der Meinung das sei für Angaben das Beste weil es so keine Probleme mit dem Server gäbe. Er würde die Page dann auf dem Server ablegen und es würde genauso funktioneren.

                  Versteh ich das richtig, dass der Order 'user' in document.root umbenannt werden muss?
                  Ich dachte dass wär ein PHP Befehl und keine konkrete Verzeichnisangabe. Oder muss ich dem documentroot ein Verzeichnis zuweisen? Klärt mich bitte auf.


                  //edit:
                  Funktioniert jetzt. Ich hab das document.root einfach weggelassen und mit /projektname/...
                  das Verzeichnis angegeben. Der Slash bedeutet ja dass er ab dem ersten Verzeichnis suchen soll (dem Projektverzeichnis bzw da wo die index.php liegt).

                  Gruß,
                  André
                  Zuletzt editiert von Wuselpuff; 03.02.2011, 16:18.

                  Comment


                  • #10
                    Originally posted by Wuselpuff View Post
                    document.root ist also NICHT automatisch das ursprungsverzeichnis des servers sondern ein Verzeichnis das ich bestimme?
                    Vorsicht das du hier nichts durcheinander bringst! Dein Server hat eine bestimmte lokale Verzeichnisstruktur. So liegt dein Projekt "projektname" z.B. auf dem Server unter: '/srv/public_html/projektname/'. Dein Webserver ist jetzt so konfiguriert, dass er dein Projekt "projektname" mit 'http://localhost/projektname/' aufruft. Mit dem Aufruf von 'http://localhost/' greift der Server also intern auf das Verzeichnis '/srv/public_html/' zu. Damit ist '/srv/public_html/' dein DOCUMENT_ROOT für den Server localhost.
                    Da es sich hierbei NICHT um eine PHP-Funktion, sondern um eine Servervariable handelt, wird dies auch in der Konfiguration des Webservers festgelegt. z.B. für den Apache in der <ServerRoot>/conf/httpd.conf und dort unter DocumentRoot. (Natürlich kann man das DocumentRoot für jeden VHost separat konfigurieren, aber ich will es nicht verkomplizieren. )


                    Gruß Falk
                    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                    Comment


                    • #11
                      Ist dann die Lösung so wie ich sie gewählt habe korrekt mit dem vorgehenden Slash ?
                      Greift er da auf das richtige Verzeichnis zu oder ist das nicht servertauglich?
                      Bekomm ich die Verzeichnisstruktur vom Anbieter offengelegt um das anständig anzusprechen?
                      Bzw. darf ich die httpd.conf ändern? Da ich meine Seite im mom noch über XAMPP laufen lasse sind mir natürlich die Unterschiede noch nicht vollständig klar.

                      Comment


                      • #12
                        Bekomm ich die Verzeichnisstruktur vom Anbieter offengelegt um das anständig anzusprechen?
                        Das ist nicht erforderlich, da du

                        - mit relativen Pfaden arbeiten solltest
                        - deine Pfade ab dem DocumentRoot selbst verwaltest
                        Bzw. darf ich die httpd.conf ändern?
                        Meistens nicht, aber .htaccess Dateien in den Ordnern zur individuellen Konfiguration anlegen
                        Christian

                        Comment

                        Working...
                        X