Andre: Type-Casting von String zu Integer funktioniert nach GET nicht.

einen schönen guten abend.
ich habe folgendes problem ich will mir aus meiner url die übergebenen parameter herausholen und diese dann weiter verarbeiten. Das funktioniert mit GET auch ohne Probleme. Bloß wollte ich im weiteren mit dem Wert ein bisschen herumrechnen doch dies führte immer zu falschen werten, da die Werte als Strings interpretiert wurden. Um das zu verhindern wollte ich sie einfach mit dem aufruf von (int)$Varible zu einem integer casten. Hieran probiere ich mich jetzt schon mindestens anderthalb stunden rum und habe auch google schon zur genüge gequält. und letztendlich sitze ich immer wieder vor genau dem quelltext den ich auch benutze, bloß dass dieser bei mir nicht funktioniert.

Meine url war :
http://localhost/Profil.php?id='8944'&key='8945'

und ich habe meine funktion die ich in php geschrieben hab jetzt schon so weit erweitert und immer wieder die ergebnisse ausgeben lassen, dass die situation hoffentlich einigermaßen nachvollziehbar ist.

  
<?php  
  
	 $string = <<< heredoc  
				<html>  
				</html>  
  
heredoc;  
  
echo $string;  
  
  
  
function GetUsersID() {  
	 $CodedUsersID = $_GET["id"];  
	 echo "CodedUsersID ohne konvertierung = ".$CodedUsersID."<br />";  
	 $Y = "8944";  
	 echo "Y ohne konvertierung = ".$Y."<br />";  
	 if (is_string($CodedUsersID) && is_string($Y) ) {  
		 echo "CodedUsersID und Y sind Strings.<br />";  
	 }  
	 if ($CodedUsersID == $Y) {  
		 echo "CodedUsersID und Y sind vom Wert her gleich.<br />";  
	 } else {  
		 echo "CodedUsersID und Y sind vom Wert her nicht gleich.<br />";  
	 }  
	 if ($CodedUsersID === $Y) {  
		 echo "CodedUsersID und Y sind identisch.<br />";  
	 } else {  
		 echo "CodedUsersID und Y sind nicht identisch.<br />";  
	 }  
	 $int_CodedUsersID = (int) $CodedUsersID;  
	 echo "CodedUsersID zu int konvertiert = ".$int_CodedUsersID."<br />";  
	 $int_Y = (int) $Y;  
	 echo "Y zu int konvertiert = ".$int_Y."<br />";  
	 if (is_int($int_CodedUsersID) && is_int($int_Y)) {  
		 echo "CodedUsersID und Y sind integer.<br />";  
	 }  
	 if ($CodedUsersID == $Y) {  
		 echo "CodedUsersID und Y sind nach der Konvertierung vom Wert her gleich.<br />";  
	 } else {  
		 echo "CodedUsersID und Y sind nach der Konvertierung vom Wert her nicht gleich.<br />";  
	 }  
	 if ($CodedUsersID === $Y) {  
		 echo "CodedUsersID und Y sind nach der Konvertierung identisch.<br />";  
	 } else {  
		 echo "CodedUsersID und Y sind nach der Konvertierung nicht identisch.<br />";  
	 }  
	  
  
}  
  
GetUsersID();  
  
?>  

nach aurufen des php-skriptes gibt der browser dann folgendes aus :

CodedUsersID ohne konvertierung = '8944'
Y ohne konvertierung = 8944
CodedUsersID und Y sind Strings.
CodedUsersID und Y sind vom Wert her nicht gleich.
CodedUsersID und Y sind nicht identisch.
CodedUsersID zu int konvertiert = 0
Y zu int konvertiert = 8944
CodedUsersID und Y sind integer.
CodedUsersID und Y sind nach der Konvertierung vom Wert her nicht gleich.
CodedUsersID und Y sind nach der Konvertierung nicht identisch.

ich hoffe irgendjemand kann mir weiterhelfen. Wahrscheinlich bin ich einfach gerade etwas blind und der Fehler ist ganz offensichtlich aber ich komme im moment einfach überhaupt nicht weiter und würde mich über jede hilfe freuen!
vielen dank im voraus
mfg

  1. Tach!

    http://localhost/Profil.php?id='8944'&key='8945'

    Was machen die Hochkommas dort? PHP erkennt zwar auch Zahlen am Stringanfang, also wenn danach Nicht-Zahlen-Zeichen folgen, aber ein Hochkomma am Anfang reicht schon, um eine Zahlenerkennung nicht mehr durchzuführen.

    $CodedUsersID = $_GET["id"];

    Das Umkopieren ist auch ohne Nutzen, zumal bei dem Variablennamen ja noch nicht mal Tippersparnis dabei rauskommt.

    dedlfix.

  2. Hallo,

    http://localhost/Profil.php?id='8944'&key='8945'

    und du meinst, ein String, der als erstes Zeichen ein einfaches Anführungszeichen enthält, kann einfach so zu einem Integer konvertiert werden? - Klar, kann er. Aber der Integer-Wert ist dann natürlich 0, weil die Umwandlung beim ersten Zeichen abbricht, das nicht als Zahl interpretiert werden kann.

    So long,
     Martin

    --
    Wenn zwei dasselbe tun, sind sie vielleicht bald zu dritt.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  3. ooohh... Erstmal vielen dank jetzt funktionierts natürlich.
    Und wenn ichs mir so angucke ist es mal wieder einer der ganzen dummen fehler, der im nachhinein echt nicht schwer zu finden war.
    naja. Danke dass es so leute wie euch gibt. denn ansonsten hätte ich wohl noch eine ganze zeit gesucht.

  4. @@Andre:

    nuqneH

     $string = <<< heredoc  
    
      		<html>  
      		</html>  
    

    heredoc;

    echo $string;
    […]
    GetUsersID();

      
    Du gibst erst ein leeres 'html'-Element aus und danach Text? Das ist kein <http://de.selfhtml.org/html/allgemein/grundgeruest.htm@title=gültiges HTML-Dokument>.  
      
      
    
    > ~~~php
    
    	 $CodedUsersID = $_GET["id"];  
    
    > 	 echo "CodedUsersID ohne konvertierung = ".$CodedUsersID."<br />";
    
    

    Du darfst niemals GET-Parameter unbearbeitet ausgeben. Du darfst niemals GET-Parameter unbearbeitet ausgeben. Du darfst niemals GET-Parameter unbearbeitet ausgeben.

    Sicherheitslücke! Informiere dich über XSS und Kontextwechsel.

    Auch wenn dein Script auf localhost läuft und nur für dich zugänglich ist, gewöhne dir gleich an, bei Ausgaben von von außen kommenden Werten immer [link:http://de3.php.net/manual/de/function.htmlspecialchars.php@title=htmlspecialchars()] zu verwenden!

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)