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, 3703 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
Batch & Shell
gelöst Echo Ausgabe ohne Variablenauflösung (9)

Frage von bartek76 zum Thema Batch & Shell ...

Batch & Shell
gelöst Warum funktioniert das echo in meiner for-Schleife auch mit Sonderzeichen? (9)

Frage von Pedant zum Thema Batch & Shell ...

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

Frage von twiceface zum Thema Batch & Shell ...

Batch & Shell
gelöst Variable aus Registrie mit varriabler Länger (4)

Frage von QandAt zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Tools

Zeit für Energiesparmodus, Bildschirmabschaltung etc. schnell anpassen

Anleitung von hannsgmaulwurf zum Thema Windows Tools ...

Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(4)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Heiß diskutierte Inhalte
Firewall
Richtige Grundeinstellungen der Pfsense für mein Netzwerk (14)

Frage von Spitzbube zum Thema Firewall ...

Switche und Hubs
gelöst Cisco 2960x Stacking über mehrere Etagen (12)

Frage von b3scher zum Thema Switche und Hubs ...