2017-03-14 2 views
0

Ich habe diese Funktion:können Sie mir helfen zu verstehen, warum dies die Ausgabe meiner PHP-Funktion ist?

function dec($dec) 
{ 
    $ans=""; 
    for($x=0; $x<strlen($dec);$x++) 
    { 
     $tempAscii = ord(substr($dec,$x,1)) - ($x+1)*2; //((int)dec[x] - (x+1)*2) 
     while ($tempAscii <0) $tempAscii+=256; 
     echo $tempAscii,", "; 
     $ans = $ans . chr($tempAscii); 
    } 
    return $ans; 
} 
echo "dec, ", dec($_GET['word']); 

sind beispielsweise jene Dezember Ergebnisse ganz gut:

input: as output: _o middle output: 95, 111 
input: SHA256 output: QD;*+* middle output: 81, 68, 59, 42, 43, 42 

Aber wenn ich diesen Eingang bin versucht, bekam ich etwas seltsam:

input: [email protected]*!# output: " middle output: 34, 60, 77, 64, 55, 38, 39, 38, 24, 13, 13 

Ich bin nicht sicher, ob der Grund, warum ich diese Ausgabe bekomme, weil ich einen Fehler in meiner Funktion mache, oder es gibt andere Gründe. Warum habe ich " als letztes Ergebnis? Vielen Dank.

EDIT: Ich benutze Firefox, um die Ergebnisse zu sehen. EDIT: Es scheint, dass < das Problem ist. Es scheint, dass Firefox dies als "kleiner als" ... Wie kann ich es ändern, um nur > char ohne Bedeutung zu sein?

+0

Wird diese Ausgabe von einer Konsole oder über einen Webbrowser angezeigt? 60 ist das ASCII-Zeichen für '<', daher versucht der Browser das zu interpretieren. – kyeiti

+0

http://stackoverflow.com/questions/4282151/is-it-possible-to-ping-a-server-from-javascript – Faraz

+0

@ kyeiti über Firefox-Browser. Was meinst du damit? Ich kann Moshe9362

Antwort

0

Hier ist die Lösung: als @ kyeiti erwähnen, der Browser versucht, diese Zeichenfolge als Code zu interpretieren.

nach this question löste ich dies mit dem Befehl htmlspecialchars. So, jetzt ist mein Code:

echo htmlspecialchars(enc($_GET['word'])); 

vielen Dank!

+1

danke für die Informationen. Ich versuche es fast 2 Stunden. Aber ich kann keine Lösung finden. –

Verwandte Themen