2017-06-17 4 views
-2

Ich habe eine Website mit PHP und mit einer MySQL-Datenbank verbunden. Ich habe auch ein Admindashboard zur Kontrolle der Benutzer mit einigen Funktionen in PHP-Skript, das ich codiert habe.Browser URL Problem wegen Sonderzeichen wie "&"

<a href="../loginUser2.php?userName=<?php echo $SQLRow["userid"];?>" target="_blank" class="a">Records</a> 

Dieser Code macht einen Login-URL-Link wie diese, wenn Sie fertig mit Benutzername

mydomain.com/loginUser2.php?userName=abc&xyz 

In mysql aus Tabelle & xyz oder jeden Benutzer Benutzername abc nehmen. Alles ist in Ordnung, nur im Web-Browser, wenn ich für einen Benutzer auf den Link klicke, wird der Benutzer automatisch mit Hilfe von PHP eingeloggt. Aber wenn in irgendeinem Benutzernamen Symbol oder Sonderzeichen LIKE verwenden, habe ich Ausgabe in "&" Symbol. Wenn ich die URL mit mir selbst und im Web-Browser bearbeite, wenn ich manuell Link mit Ersetzen von & mit% 26 Link Arbeit und Benutzeranmeldung erfolgreich. Ich möchte nur, wenn jeder wie Benutzer in MySQL-Datenbank registriert ist mit jedem Sonderzeichen Symbol wie & oder etc so wie kann ich Web-Browser Arbeit automatisch behandeln diese Art von Symbolen und Zeichen.

Ich versuchte eine blöde Sache in phpMyAdmin Benutzernamen Spalte bearbeiten und Benutzernamen wie diese aktualisieren abc% 26xyz Ich dachte, wenn ich dann aktualisieren wird funktioniert wie & =% 26 aber ich bin scheitern.

+2

Blick auf [ 'urlencode'] (http://php.net/manual/en/function.urlencode.php). – sjdaws

+0

Unabhängig von der Frage, aber * "wenn ich für irgendeinen Benutzer auf den Link klicke, meldet sich der Benutzer automatisch mit Hilfe von PHP an" * schlägt eine schwerwiegende Sicherheitslücke vor, es sei denn, der nachfolgende Code verifiziert, dass der "admin user" tatsächlich berechtigt ist, sich einzuloggen Benutzer ... aber in dieser Anwendung scheint die Weitergabe des Benutzernamens eine schlechte Design-Wahl zu sein - Ihre Benutzer haben vermutlich einen ganzzahligen ID-Primärschlüssel, und das wäre die vernünftigere Sache, die es zu bestehen gilt. –

Antwort

-1

können Sie urlencode() verwenden, um Sonderzeichen und urldecode() senden, um kodierten Wert zu erhalten.

<a href="../loginUser2.php?userName=<?php echo urlencode($SQLRow["userid"]);?>" target="_blank" class="a">Records</a> 

urldecode($_GET['userName']); 
+0

Es gibt keinen Grund, 'urldecode()' zu verwenden, dies wird automatisch durchgeführt. – Brad

-1

Wenn Sie URL im Browser drücken, wird der Browser URL-Codierung. Welche Umwandlung '&' zu '% 26'. Also leg einfach in deine loginUser2.php 'urldecode()', wo du deine get Parameterwerte akzeptierst. Es wird wieder Ihren Wert von 'abc% 26xyz' zu 'abc & xyz' dekodieren.

versuchen, diesen:

urldecode($_GET['userName']); 
+0

'$ _GET ['userName']' wird automatisch dekodiert. Das Problem ist, dass es von Anfang an richtig codiert werden muss. – Brad