Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Falsche Ausgabe der Variablen oder Echo

Frage Entwicklung PHP

Mitglied: fachinformatiker

fachinformatiker (Level 1) - Jetzt verbinden

22.05.2007, aktualisiert 04.06.2007, 3696 Aufrufe, 4 Kommentare

Hallo Administratoren und erfahrene Programmierer,
Ich habe gerade ein sehr seltsames Problem:

ich möchte einfach einen String mit Variablen zurückgeben, der Source:
01.
echo "<a href='$PHP_SELF?sort=n"
02.
if (isset($who)) 
03.
{echo "&who=$who";} 
04.
if (isset($suche)) 
05.
06.
echo"&suche='$suche'"
07.
echo "&nachname='$nachname'"
08.
echo"&Vorname='$Vorname'";
Ich bekomme als Ausgabe aber zurück:
01.
<a href="/htmlneu/intranet/intern/kontakt.php?sort=n&amp;who=p&amp;suche=" 1="" &vorname=""
Zur weiteren Fehlersuche: $suche ist hier auch "1"(ohne Anführungszeichen).

Seit einigen Stunden quälen mich die Fragen:
Wo ist der Nachname ? (Ist in diesem Fall auch ein Leerstring)
Und warum gibt er mir soviel zurück, was ich nicht geschrieben habe wie &amp; ? Und warum steht vor suche kein & ?

Ich verstehe diese Rückgabewerte von PHP in diesem Fall überhaupt gar nicht, aber deswegen habe ich gerade große Probleme, kann mir hier jemand helfen ? Wäre sehr nett.

Mit freundlichen Grüßen,
fachinformatiker
Mitglied: AndreasHoster
22.05.2007 um 16:32 Uhr
Ich kann zwar kein PHP, aber wenn man HTML kennt, weiß man, daß &amp; das Kürzel für ein & (im englischen Ampersand genannt) ist.
Damit kann ich nur Schlußfolgern, daß PHP in HTML Syntax nicht erlaubte Zeichen umkodiert also & -> &amp;
Soviel zum Verstehen. Jetzt darfst Du suchen, wie man PHP von der automatischen Umkodierung abbringt.
Bitte warten ..
Mitglied: 48482
22.05.2007 um 21:30 Uhr
Hallo fachinformatiker,

das Problem sind die einfachen Anführungszeichen. Diese Zeichen ( ' ) haben, wie die doppelten Anführungszeichen, eine besondere Bedeutung in PHP.

Indem man diese Zeichen mit einem Backslash escaped, verhindert man dieses Verhalten, der Code müsste also korrekt so aussehen:

01.
echo "<a href=\'$PHP_SELF?sort=n"
02.
if (isset($who)) 
03.
{echo "&who=$who";} 
04.
if (isset($suche)) 
05.
06.
echo"&suche=\'$suche\'"
07.
echo "&nachname=\'$nachname\'"
08.
echo"&Vorname=\'$Vorname\'";
Mit freundlichen Grüßen,
Pixelwarp
Bitte warten ..
Mitglied: fachinformatiker
23.05.2007 um 11:55 Uhr
Also der neue Quelltext:
<source>
echo "<a href=\'$PHP_SELF?sort=n";
if (isset($who))
{echo "&who=$who";}
if (isset($suche))
{
echo"&suche=\'$suche\'";
echo "&nachname=\'$nachname\'";
echo"&Vorname=\'$Vorname\'";
</source>
Die neue Ausgabe:
<schnipp>
<a href="%5C%27/htmlneu/intranet/intern/kontakt.phpsort=n&amp;who=p&amp;suche=%5C%271%5C%27&amp;nachname=%5C%27%5C%27&amp;Vorname=%5C%27%5C%27&amp;
</schipp>
Die Gleichheitszeichen an den falschen Stellen sind weg, aber &amp; steht immernoch da und er scheind die ' und die \ mitsamt den Variableninhalten in einen Hexcode zu übersetzen. Das ist nicht das, was ich wollte.

Trotzdem Danke schonmal für die Hilfen an AndresHoster und Pixelwarp.


Wenn ich die ' wegmache, kommt übrigens in der Ausgabe auch das &amp; was gegen das Konvertieren meines eingegebenen Textes spricht. Aber so ist dann ansonsten die Ausgabe ganz OK (falls keiner die Variablen in der URL editiert...)

Ich finde das SEHR merkwürdig !

Hat noch jemand eine Idee ?
Bitte warten ..
Mitglied: ITApolda
04.06.2007 um 11:01 Uhr
Hallo.

Wenn du eine Variable an ein String anfügen willst so kannst du mit Punkten arbeiten.
Schau dir dazu mal folgenden Code an:

01.
$who = "wer"
02.
$suche = "1"
03.
$nachname = "nm"
04.
$Vorname = "vn"
05.
echo "<a href=\"$PHP_SELF?sort=n"
06.
if (isset($who)) 
07.
08.
	echo "&amp;who=".$who
09.
10.
if (isset($suche)) 
11.
12.
echo "&amp;suche=".$suche
13.
echo "&amp;nachname=".$nachname
14.
echo "&amp;Vorname=".$Vorname
15.
echo "\">Text</a>"
16.
}
Gruß
Bitte warten ..
Ähnliche Inhalte
Viren und Trojaner
Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Batch & Shell
gelöst Batch Datei: ECHO ist ausgeschaltet (OFF) (3)

Frage von twiceface zum Thema Batch & Shell ...

Windows Server
gelöst Falsche Login-Daten überwachen (2)

Frage von hesper zum Thema Windows Server ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (36)

Frage von Datsspeed zum Thema Exchange Server ...

Batch & Shell
gelöst ZIP-Archive nach Dateien durchsuchen und Pfade ausgeben (33)

Frage von evinben zum Thema Batch & Shell ...

Verschlüsselung & Zertifikate
Mit Veracrypt eine zweite interne (non-system) Festplatte verschlüsseln (10)

Frage von Bernulf zum Thema Verschlüsselung & Zertifikate ...

C und C++
Methode multiple return values (8)

Frage von mayho33 zum Thema C und C ...