aussage eines buches - php & mysql | galileo computing

  • hallo und einen guten morgen,


    ich arbeite gerade das buch, PHP 5.3 & Mysql 5.5 vom verlag galileo computing, durch.
    in kapitel 14.1 auf seite 587 stoße ich auf folgende aussage:


    Zitat

    ...Zunächst wird durch den Befehl [code] str_replace("\\", "/", __DIR__) aus dem Projektpfad ein Pfad mit korrekten Slashes erstellt. So wird aus D:/XAMPP/htdocs/Galielo ein D:\XAMPP\htdocs\Galileo....


    das machte mich stutzig ^^


    ich fragte mich was an windows oldschool backslashes korrekt sei und fand dabei heraus das die str_replace funktion nicht wie beschreiben funktioniert


    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
    Quelle


    so nun...
    str_replace für dummies :)
    nach dem ersten wird im dritten gesucht und mit dem zweiten ersetzt
    str_replace ( erstes, zweites, drittes)


    das würde ja bedeuten das die beiden pfadangaben, vertauscht wurden und die geschichte für windows ( ich bin macuser ) user ist, deren pfadangaben nicht mit ulr-pfadangaben übereinstimmen, aufgrund der backslashes.



    stimmt das jetzt?


    und falls nicht kann mir jemand mein brett vor dem kopf entfernen :)


    gruß
    peter

  • Zitat

    ...ich bezweifele das es sich bei Pfaden mit / um inkorrekte Pfade handelt.


    aber verwendet windows für seine pfade nicht den backslash?


    und wenn man davon ausgeht und annimmt das die beiden pfade im buch vertauscht wurden macht es (die funktion) durchaus sinn


    Gruß
    peter

  • Also.. Windows verwendet für seine Pfade den Backslash:

    Code
    C:\User\Dustin\Music\


    Soa.. überlegen wir aber nun mal (= Welches Betriebssystem ist auf fast jedem Server installiert? :D
    Nein, nicht Windows, sondern Linux (= Und wie sieht das Pfadsystem von Linux aus? :D

    Code
    /home/dustin/Musik

    (Übrigens komplett gültiger Pfad :D)


    Versuchen wir also nun auf einen Linuxserver mit

    Code
    \var\www\htdocs

    so erhalten wir eine Fehlermeldung.. :/

    Zitat von "Shellkonsole"

    bash: cd: varwww: No such file or directory

    .


    Demnach dürfen wir also nicht den Backslash verwenden, sondern müssen das normalen Slash verwenden :)
    Ich weiß nur nicht, wie das die Browser machen, ob die das direkt verstehen, ob man nun auf einen Linux oder einen Windows Server zugreift und das dementsprechend ändert :/


    Naja, ich hoffe ich konnte euch helfen :D
    Liebe Grüße,
    der Linux User Sarkkan :wink:

  • @Laura
    3. ausgabe aktualisiert 2010 - ein buch das von PHP 5.3 handelt und mit der magischen konstante __DIR__ arbeitet ist recht aktuell :)


    @Sarrkan

    Zitat

    oa.. überlegen wir aber nun mal (= Welches Betriebssystem ist auf fast jedem Server installiert?
    Nein, nicht Windows, sondern Linux (= Und wie sieht das Pfadsystem von Linux aus?


    geh davon aus, dass das beispiel für windows user ist die auf localhost arbeiten und dann ihre projekte auf einen linuxserver hochladen.
    sind nun in den eigens definierten konstanten, mit den pfaden, backslashes enthalten,gibts, wie du auch sagst, einen crash


    vll muss ich dazu schreiben das der funktion vorausgeht
    die definition des absoluten pfades der datei paths.php in einer konstante (PROJECT_HTTP_ROOT) mittels

    Code
    <span class="syntaxdefault"></span><span class="syntaxcomment">#Projektname<br /></span><span class="syntaxdefault">$project </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> str_replace</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'DOCUMENT_ROOT'</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> </span><span class="syntaxstring">''</span><span class="syntaxkeyword">,<br /></span><span class="syntaxdefault">                                          str_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'\\'</span><span class="syntaxkeyword">,</span><span class="syntaxstring">'/'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">__DIR__</span><span class="syntaxkeyword">));<br /><br /></span><span class="syntaxcomment">#Protokoll der Verbindung ( HTTP oder HTTPS )<br /></span><span class="syntaxkeyword">(!isset(</span><span class="syntaxdefault">$_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'HTTPS'</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> OR $_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'HTTPS'</span><span class="syntaxkeyword">]==</span><span class="syntaxstring">'off'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">?</span><span class="syntaxdefault"> <br />                                        $protocol </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'http://'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">:</span><span class="syntaxdefault"> $protocol </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'https://'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">                                        <br /></span><span class="syntaxcomment">#Projektpfad für die verwendung im Web<br /></span><span class="syntaxdefault">define</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'PROJECT_HTTP_ROOT'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $protocol</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'HTTP_HOST'</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">$project</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> </span>


    ich denke wenn ich nun in einer windows umgebung arbeite, werden, ohne austausch der slashes, die falschen (back -> win) angezeigt
    und bei weiterer verwendung gibt es problem mit den pfaden


    der mittlere absatz im code - beispiel soll dies verhindern


    wenn meine annahme richtig ist wurden 'nur' die zwei pfade (siehe erstes posting) vertauscht...
    und die aussage das backslashes nicht korrekt im urlsystem stimmt doch


    Zitat

    Ich weiß nur nicht, wie das die Browser machen, ob die das direkt verstehen,


    chrome auf meinem apple ersetzt die back- stillschweigend mit slashes



    Gruß
    peter


    ps: einige semikolons die das buch verloren hat, habe ich auch gefunden ;)

  • Zitat von &quot;Sarkkan&quot;


    Ich weiß nur nicht, wie das die Browser machen, ob die das direkt verstehen, ob man nun auf einen Linux oder einen Windows Server zugreift und das dementsprechend ändert :/


    Der Browser hat damit ja gar nichts zu tun, sondern der PHP Parser, und der handelt nach Betriebssystem.


    Jetzt überlegen wir mal, knappe 95% der Webmaster verwenden für ihre Pfade in CSS und HTML für Bilder mit normalen Slashes, und da besteht kein Unterschied zu PHP, einige PHP Parser prüfen sogar das Betriebssystem und ändern demnach Pfade ab.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!