PHP - Globale Variable verändert sich selber
Guten Morgen,
ich habe gerade einen Administrationsbereich kontrolliert. Dieser ist in PHP geschrieben. Soweit geht auch alles. Bloß bei der Benutzerverwaltung sah ich was außergewöhliches. Wir arbeiten hier mit globalen Variablen (betrifft nur Intranet!!).
Ich habe eine normale Seite. Dort habe ich einen Link.
Der Benutzername wird vorher aus einer Tabelle (MySQL) herausgeholt. Der Benutzername ist gleich dem Windowslogonname(z.B. DOMÄNE\BENUTZERNAME ->sollte nur einen Backslash sein). Wenn ich nun den IE oder Firefox öffne und nur über den Link fahre, steht unten in der Statusleiste alles korrekt drinne:
Klicke ich nun auf den Link, komme ich auf eine neue Seite. Dort gebe nur die Variable $user aus:
Ergebnis:
Jetzt stellt sich bei mir die Frage, wo her der 2. Backslash kommt. Ich ändere ja nichts an der Variable. Kann mir von euch jemand sagen woher das kommt und wie das Problem beseitigen kann.
Gruß
Dani
ich habe gerade einen Administrationsbereich kontrolliert. Dieser ist in PHP geschrieben. Soweit geht auch alles. Bloß bei der Benutzerverwaltung sah ich was außergewöhliches. Wir arbeiten hier mit globalen Variablen (betrifft nur Intranet!!).
Ich habe eine normale Seite. Dort habe ich einen Link.
echo "<a href='modules.php?modul=test&user=$row->benutzer>TEST'</a>";
Der Benutzername wird vorher aus einer Tabelle (MySQL) herausgeholt. Der Benutzername ist gleich dem Windowslogonname(z.B. DOMÄNE\BENUTZERNAME ->sollte nur einen Backslash sein). Wenn ich nun den IE oder Firefox öffne und nur über den Link fahre, steht unten in der Statusleiste alles korrekt drinne:
http://www.www.de/modules.php?modul=test&user=TEST\geht.nicht //<b>(hier auch nur 1 Backslash!!!)</b>
Klicke ich nun auf den Link, komme ich auf eine neue Seite. Dort gebe nur die Variable $user aus:
echo $user;
Ergebnis:
TEST\\geht.nicht //<b>Hier sind es 2 Backslashe!!</b>
Jetzt stellt sich bei mir die Frage, wo her der 2. Backslash kommt. Ich ändere ja nichts an der Variable. Kann mir von euch jemand sagen woher das kommt und wie das Problem beseitigen kann.
Gruß
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 29834
Url: https://administrator.de/forum/php-globale-variable-veraendert-sich-selber-29834.html
Ausgedruckt am: 16.02.2025 um 21:02 Uhr
4 Kommentare
Neuester Kommentar
in PHP wird der \ dafür sorgen das gesonderte Befehle ausgeführt werden aber auch um andere auserkraft zu setzten so bewirkt \$test das nicht der Inhalt von $test ausgegeben wird sonder der name $test. So musst du ja auch für " in einem echo-Satzt ja auch mit einem \ beginnen.
Worauf ich aber hinaus will ist, dass die verdopplung des \ als schutzfunktion gilt, da ja normalerweise das \ vor einem Sonderbefehl steht.
ICh hoffe man kein mein wirsches Zeug lesen. Ist halt noch früh *g*
Wie du das Problem jetzt lösen kannst weis ich nicht. Das einzige was mir spontaneinfält, was abernicht astrein ist, ändere das \ durch einanderes Sonderzeichen oder besser 2 und ersetzte sie auf der nächsten seite, vor dem weiterverarbeiten, durch ein \
Schrottie
Worauf ich aber hinaus will ist, dass die verdopplung des \ als schutzfunktion gilt, da ja normalerweise das \ vor einem Sonderbefehl steht.
ICh hoffe man kein mein wirsches Zeug lesen. Ist halt noch früh *g*
Wie du das Problem jetzt lösen kannst weis ich nicht. Das einzige was mir spontaneinfält, was abernicht astrein ist, ändere das \ durch einanderes Sonderzeichen oder besser 2 und ersetzte sie auf der nächsten seite, vor dem weiterverarbeiten, durch ein \
Schrottie
![25768](/images/members/profile_male_48x48.png)
Hallo,
ja PHP escaped den \ durch einen weiteren \ . Danach gibt er jedoch alle 2 aus.
Aus dem Stegreif heraus, fällt mir gerade keine Lösung zum eigentlichen Problem ein.
Jedoch könntest du die PHP String Funktionen benutzen :
http://de2.php.net/manual/de/function.str-replace.php
also
str_replace("\\","\",$username);
Und danach eben ausgeben
Gruß
Andi
ja PHP escaped den \ durch einen weiteren \ . Danach gibt er jedoch alle 2 aus.
Aus dem Stegreif heraus, fällt mir gerade keine Lösung zum eigentlichen Problem ein.
Jedoch könntest du die PHP String Funktionen benutzen :
http://de2.php.net/manual/de/function.str-replace.php
also
str_replace("\\","\",$username);
Und danach eben ausgeben
Gruß
Andi