Fehler im Script, wenn Variablen über $_GET[] geholt werden

Elradon

Member
Also ich hab diesen Teamspeakviewer hier:
TeamSpeak Einstieg :: Downloads

in der config.php hab ich das so geändert:

Code:
var $serverAddress = "$_GET[uip]"; // Server IP
var $serverQueryPort = $_GET[tPort]; // TCP Port
var $serverUDPPort = $_GET[port]; // UDP Port
var $serverPasswort = ""; // Serverpasswort

und die URL folglich:
Zum Beispiel:
?uip=miczone.net&port=8767&tPort=22223

Das Script spuckt mir jetzt nen
Parse error: parse error, unexpected '\"'
für
Code:
var $serverAddress = "$_GET[uip]"; // Server IP
aus.

Könnte jemand mir mal bitte auf die Sprünge helfen, was da nicht funktioniert?
 
Eigenartiger Code, den Du da fabrizierst. So ganz in Kontext bringen kann ich die Fehlermeldung gerade nicht, aber änder den Codeblock mal ab in:
PHP:
var $serverAddress = $_GET['uip']; // Server IP
var $serverQueryPort = $_GET['tPort']; // TCP Port
var $serverUDPPort = $_GET['port']; // UDP Port
var $serverPasswort = ""; // Serverpasswort
 
Naja, der größte Teil des Codes ist ja nicht von mir, sondern beim Teamspeakviewer dabei.

Parse error: parse error, unexpected T_VARIABLE in
in
Code:
var $serverAddress = $_GET['uip']; // Server IP

Bei den Fehlermeldungen stehen übrigens die Zeilen, die ich dann schon mit dem Code ersetzt habe !!!

mag das daran liegen, dass das ganze in ner class stattfindet?
 
Zuerst einmal ein Auszug aus der PHP Manual um den Sachverhalt zu der Klassentheorie zu widerlegen:
Dies ist eine 'superglobale' oder automatisch globale Variable. Das bedeutet, dass die Variable in allen Sichtbarkeitsbereichen eines Skripts verfügbar ist. Sie brauchen dieses Array nicht mit global $_GET; in Funktionen oder Methoden importieren, um darauf zuzugreifen, so wie es bei $HTTP_GET_VARS notwendig ist.

Könntest Du bitte mal den gesamten veränderten Teil posten mit der kompletten Fehlermeldung? Ich komme mir hier vor, wie bei einer Schnitzeljagd...
 
Hmm, danke mal für Eure Hilfe =)

Also hab jetz in der config.php das hier stehn:
Code:
$serverAddress = "$_GET[uip]"; // Server IP
$serverQueryPort = $_GET[tPort]; // TCP Port
$serverUDPPort = $_GET[port]; // UDP Port
$serverPasswort = ""; // Serverpasswort

und halt überall, vor jeder Variable das "var" weggenommen.

in der index.php war von "var"s nicht zu finden.

Fehlermeldung:
Parse error: parse error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /srv/www/htdocs/web21/html/testing/teamspeak/config.php on line 6
Line 6 config.php:
Code:
$serverAddress = "$_GET[uip]"; // Server IP

Ich kann auch gerne mal FTP Zugriff verteilen, wenn jemand das direkt ändern möchte.
 
So, gestern hat mich wohl doch eher die Lasagne meine Aufmerksamkeit erhalten, als das Posting.

Da es sich um eine Klasse handelt, muss natürlich var vorangestellt sein. Roger_Wilcos Tipp war also in diesem Zusammenhang IMHO falsch.

Gehe zu meinem 2. Posting. Von da an, schauen wir mal, was so geht und was nicht.
 
@daseddy die beiden " sind standardmäßig in der config.php drin gewesen (und da funktioniert auch alles, Probleme gibts ja erst, seit ich versuche über GET das die variablen aus der url zu füllen.

Die config.php ist jetz wieder ganz normal, außer:
Code:
var $serverAddress = $_GET['uip']; // Server IP
var $serverQueryPort = $_GET['tPort']; // TCP Port
var $serverUDPPort = $_GET['port']; // UDP Port
var $serverPasswort = ""; // Serverpasswort

Fehler:
Parse error: parse error, unexpected T_VARIABLE in /srv/www/htdocs/web21/html/testing/teamspeak/config.php on line 6
und in Zeile 6 sind wa bei:
var $serverAddress = $_GET['uip']; // Server IP
 
Parse error: parse error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /srv/www/htdocs/web21/html/testing/teamspeak/config.php

und zwar hier:
$serverAddress = $_GET['uip']; // Server IP
:(
 
Die config.php ist jetz wieder ganz normal, außer:
Code:
var $serverAddress = $_GET['uip']; // Server IP
var $serverQueryPort = $_GET['tPort']; // TCP Port
var $serverUDPPort = $_GET['port']; // UDP Port
var $serverPasswort = ""; // Serverpasswort

Probiere es mal so:
Code:
$serverAddress = $_GET['uip']; // Server IP
$serverQueryPort = $_GET['tPort']; // TCP Port
$serverUDPPort = $_GET['port']; // UDP Port
$serverPasswort = ""; // Serverpasswort
 
Darauf war das hier bezogen:
Parse error: parse error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /srv/www/htdocs/web21/html/testing/teamspeak/config.php

und zwar hier:
$serverAddress = $_GET['uip']; // Server IP
:(
 
Och die config.php ist noch um einiges länger. mit <?php am Anfang und ?> am Ende.
Hab dir mal Zugangsdaten geschickt, denke, damit ist es einfacher?
 
In deinem obrigen Posting stand aber was von "var $variable = irgendwas"

Ist der gepostete Code alles was in der Datei steht oder steht da auch "<?php" und "?>" drin?
Wenn nicht probiere es mal hiermit.

PHP:
<?php
$serverAddress = $_GET['uip']; // Server IP
$serverQueryPort = $_GET['tPort']; // TCP Port
$serverUDPPort = $_GET['port']; // UDP Port
$serverPasswort = ""; // Serverpasswort
?>
 
irgendwie werden meine Posts weiter oben angezeigt, obwohl se da garnicht hingehören. Also mein Post über diesem hier müsste unter den Post, der über mir ist -.- omg
 
Poste mal bitte die Zeile die über/vor:
PHP:
$serverAddress = $_GET['uip']; // Server IP
Vielleicht liegt der Hase ja hier begraben.
 
Also die config sieht so aus:
Code:
<?php
class tss2info {

// START OF CONFIG -------------------------------
/*
var $serverAddress = $_GET['uip']; // Server IP
var $serverQueryPort = $_GET['tPort']; // TCP Port
var $serverUDPPort = $_GET['port']; // UDP Port
var $serverPasswort = ""; // Serverpasswort  
*/
$serverAddress = $_GET['uip']; // Server IP
$serverQueryPort = $_GET['tPort']; // TCP Port
$serverUDPPort = $_GET['port']; // UDP Port
$serverPasswort = ""; // Serverpasswort

// END OF CONFIG ---------------------------------

var $refreshtime = 30;
var $tabellenbreite = 300;
var $sitetitle = "Teamspeak Viewer";

//internal
var $socket;
var $userdata;

// external
var $serverStatus = "offline";
var $playerList = array();
var $channelList = array();


// strips the quotes around a string
function stripQuotes($evalString) {
  if(strpos($evalString, '"') == 0) $evalString = substr($evalString, 1, strlen($evalString) - 1);
  if(strrpos($evalString, '"') == strlen($evalString) - 1) $evalString = substr($evalString, 0, strlen($evalString) - 1);

  return $evalString;
}// end function stripQuotes($evalString)

// returns the codec name
function getVerboseCodec($codec) {
  if($codec == 0) {
    $codec = "CELP 5.1 Kbit";
  } elseif($codec == 1) {
    $codec = "CELP 6.3 Kbit";
  } elseif($codec == 2) {
    $codec = "GSM 14.8 Kbit";
  } elseif($codec == 3) {
    $codec = "GSM 16.4 Kbit";
  } elseif($codec == 4) {
    $codec = "CELP Windows 5.2 Kbit";
  } elseif($codec == 5) {
    $codec = "Speex 3.4 Kbit";
  } elseif($codec == 6) {
    $codec = "Speex 5.2 Kbit";
  } elseif($codec == 7) {
    $codec = "Speex 7.2 Kbit";
  } elseif($codec == 8) {
    $codec = "Speex 9.3 Kbit";
  } elseif($codec == 9) {
    $codec = "Speex 12.3 Kbit";
  } elseif($codec == 10) {
    $codec = "Speex 16.3 Kbit";
  } elseif($codec == 11) {
    $codec = "Speex 19.5 Kbit";
  } elseif($codec == 12) {
    $codec = "Speex 25.9 Kbit";
  } else {
    $codec = "unknown (".$codec.")";
  }// end if
  return $codec;
}// end function getVerboseCodec($codec);

  function getInfo() {
	$this->playerList = $this->getUserInfo($this->serverAddress, $this->serverQueryPort, $this->serverUDPPort);
	$this->channelList = $this->getChannelInfo($this->serverAddress, $this->serverQueryPort, $this->serverUDPPort);
  } // end getInfo()

  function getChannelInfo($server_ip, $server_query, $server_port) {
	$channelList = array();
    $cmd = "cl $server_port\nquit\n";

    $connection = fsockopen ("$server_ip", $server_query, &$errno, &$errstr, 1);
    if (!$connection) {
      echo "Cannot connect: ($errno)-$errstr<br>";
    } else {
	  $error = fputs($connection,$cmd, strlen($cmd));
	  if (!$error) {
	  	echo "Cannot read Data!<br>";
	  } else {
	  
		  while($channeldata = fgets($connection, 4096)) {
			$channeldata = explode("	", $channeldata);
			$channeldata0 = trim($channeldata[0]);  // number
			$channeldata1 = trim($channeldata[1]);  // codec
			$channeldata2 = trim($channeldata[2]);  // parent
			$channeldata3 = trim($channeldata[3]);  // order
			$channeldata4 = trim($channeldata[4]);  // maxuser
	
			$channeldata5 = trim("$channeldata[5]");
			$channeldata5 = substr("$channeldata5", 1);
			$channeldata5 = substr("$channeldata5", 0, -1);
			$channeldata5 = addslashes("$channeldata5"); // name
			$channeldata5 = htmlentities("$channeldata5");
			 // $channeldata5 = addslashes(trim($channeldata[5]));  // name
	
			$channeldata6 = trim($channeldata[6]);  // channel flags
			$channeldata7 = trim($channeldata[7]);  // priv/pub
			
			$channeldata8 = trim("$channeldata[8]");
			$channeldata8 = substr("$channeldata8", 1);
			$channeldata8 = substr("$channeldata8", 0, -1);
			$channeldata8 = addslashes(htmlspecialchars("$channeldata8")); // topic
			 // $channeldata8 = addslashes(htmlspecialchars(trim($channeldata[8])));  // topic
			
			$channelid = $channeldata0;
			if ($channelid > 0) {
				$channelList[$channelid] = array(
				  "channelid" => $channelid,
				  "codec" => $channeldata1,
				  "parent" => $channeldata2,
				  "order" => $channeldata3,
				  "maxplayers" => $channeldata4,
				  "channelname" => $channeldata5,
				  "attribute" => $this->get_channel_flags($channeldata6),
				  "isdefault" => 0,
				  "topic" => $channeldata8);
			}
		  }
	  }
      fclose($connection);
    }
	
	
	function cmp ($a, $b) {
	  if ($a["order"] == $b["order"]) {
	  	return ($a["channelid"] < $b["channelid"]) ? -1 : 1;
	  }//return 0;
      return ($a["order"] < $b["order"]) ? -1 : 1;
	}
	usort($channelList, "cmp");
	
	
	return $channelList;
  }

  function getUserInfo($server_ip, $server_query, $server_port) {
	$playerList = array();
    $cmd = "pl $server_port\nquit\n";

    $connection = fsockopen ("$server_ip", $server_query, &$errno, &$errstr, 1);
    if (!$connection) {
      echo "Cannot connect: ($errno)-$errstr<br>";
    } else {
      fputs($connection,$cmd, strlen($cmd));
      while($userdata = fgets($connection, 4096)) {
        $userdata = explode("	", $userdata);
        $userdata0 = trim($userdata[0]);  // pl_id
        $userdata1 = trim($userdata[1]);  // pl_channelid
        $userdata2 = trim($userdata[2]);  // pl_pktssend
        $userdata3 = trim($userdata[3]);  // pl_bytessend
        $userdata4 = trim($userdata[4]);  // pl_pktsrecv
        $userdata5 = trim($userdata[5]);  // pl_bytesrecv
        $userdata6 = trim($userdata[6]);  // pl_pktloss
        $userdata7 = trim($userdata[7]);  // pl_ping
        $userdata8 = trim($userdata[8]);  // pl_logintime
        $userdata9 = trim($userdata[9]);  // pl_idletime
        $userdata10 = trim($userdata[10]);  // pl_channelprivileges
        $userdata11 = trim($userdata[11]);  // pl_playerprivileges
        $userdata12 = trim($userdata[12]);  // pl_playerflags
        $userdata13 = trim($userdata[13]);  // pl_ipaddress

        $userdata14 = trim("$userdata[14]");
        $userdata14 = substr("$userdata14", 1);
        $userdata14 = substr("$userdata14", 0, -1);
        $userdata14 = addslashes("$userdata14");
		$userdata14 = htmlentities("$userdata14"); // pl_nickname
		  // $userdata14 = addslashes(trim($userdata[14]));  // pl_nickname

        $userdata15 = trim("$userdata[15]");
        $userdata15 = substr("$userdata15", 1);
        $userdata15 = substr("$userdata15", 0, -1);
        $userdata15 = addslashes("$userdata15"); // pl_loginname
          // $userdata15 = addslashes(trim($userdata[15]));  // pl_loginname

		$playerid = $userdata0;
		
		$playerList[$playerid] = array(
		  "playerid" => $playerid,
		  "channelid" => $userdata1,
		  "receivedpackets" => $userdata4,
		  "receivedbytes" => $userdata5,
		  "sentpackets" => $userdata2,
		  "sentbytes" => $userdata3,
		  "paketlost" => $userdata6 / 100,
		  "pingtime" => $userdata7,
		  "totaltime" => $this->setTimeString($userdata8),
		  "idletime" => $this->setTimeString($userdata9),
		  "privileg" => $userdata10,
		  "userstatus" => $userdata11,
		  "attribute" => $this->getUserStatusBild($userdata12),
		  "flags" => $this->get_player_flags($userdata11,$userdata10),
		  "s" => $userdata13,
		  "playername" => $userdata14);
      }
      fclose($connection);
    }
	return $playerList;
  }
  
  function get_player_flags($num1,$num2) {
      if ($num1 == '13') {
        $plpriv = "(R <b>SA</b>";
      } else if ($num1 == '5') {
        $plpriv = "(R <b>SA</b>";
      } else if ($num1 == '4') {
        $plpriv = "(R";
      } else if ($num1 < '4') {
        $plpriv = "(U";
      }
      if ($num2 == '1') {
        $clpriv = " CA)";
      } else {
        $clpriv = ")";
      }
	  return $plpriv.$clpriv;
  }
  
  function get_channel_flags($num) {
	 // (RMPSD) (0 2 4 6 8 16)
      if ($num == '30') {
        $clflag = "(RMPSD)";
      } else if ($num == '28') {
        $clflag = "(RPSD)";
      } else if ($num == '26') {
        $clflag = "(RMSD)";
      } else if ($num == '24') {
        $clflag = "(RSD)";
      } else if ($num == '22') {
        $clflag = "(RMPD)";
      } else if ($num == '20') {
        $clflag = "(RPD)";
      } else if ($num == '18') {
        $clflag = "(RMD)";
      } else if ($num == '16') {
        $clflag = "(RD)";
      } else if ($num == '15') {
        $clflag = "(UMPS)";
      } else if ($num == '14') {
        $clflag = "(RMPS)";
      } else if ($num == '13') {
        $clflag = "(UPS)";
      } else if ($num == '12') {
        $clflag = "(RPS)";
      } else if ($cldata[9] == '11') {
        $clflag = "(UMS)";
      } else if ($num == '10') {
        $clflag = "(RMS)";
      } else if ($num == '9') {
        $clflag = "(US)";
      } else if ($num == '8') {
        $clflag = "(RS)";
      } else if ($num == '7') {
        $clflag = "(UMP)";
      } else if ($num == '6') {
        $clflag = "(RMP)";
      } else if ($num == '5') {
        $clflag = "(UP)";
      } else if ($num == '4') {
        $clflag = "(RP)";
      } else if ($num == '3') {
        $clflag = "(UM)";
      } else if ($num == '2') {
        $clflag = "(RM)";
      } else if ($num == '1') {
        $clflag = "(U)";
      } else if ($num == '0') {
        $clflag = "(R)";
      } else {
        $clflag = "";
      }
	return $clflag;
  }
  
function getUserStatusBild($attribut) {
	  //-------------------------------------------------------------------------------------------------
	//--- UserStatusBild --\\
	$playergif = "player.gif";
	if ($attribut == "0") $playergif = "player.gif";
	if (($attribut == "8") or
		($attribut == "9") or
		($attribut == "12") or
		($attribut == "13") or
		($attribut == "24") or
		($attribut == "25") or
		($attribut == "28") or
		($attribut == "29") or
		($attribut == "40") or
		($attribut == "41") or
		($attribut == "44") or
		($attribut == "45") or
		($attribut == "56") or
		($attribut == "57")) $playergif = "away.gif";
	if (($attribut == "16") or
		($attribut == "17") or
		($attribut == "20") or
		($attribut == "21")) $playergif = "mutemicro.gif";
	if (($attribut == "32") or
		($attribut == "33") or
		($attribut == "36") or
		($attribut == "37") or
		($attribut == "48") or
		($attribut == "49") or
		($attribut == "52") or
		($attribut == "53")) $playergif = "mutespeakers.gif";
	if ($attribut == "4") $playergif = "player.gif";
	if (($attribut == "1") or
		($attribut == "5")) $playergif = "channelcommander.gif";
	if  ($attribut >= "64") $playergif = "record.gif";
	//--- UserStatusBild --\\
	//-------------------------------------------------------------------------------------------------
	return $playergif;
}
function setTimeString($time) {
	$timestring = "0 Sekunden";
	if ($time < 60 ) {
	 $timestring = strftime("%S Sekunden", $time);
	} else {
	   if ($time >= 3600 ) {
	    $timestring = strftime("%H:%M:%S Stunden", $time - 3600);
	   } else {
	     $timestring = strftime("%M:%S Minuten", $time);
	   }
	}
	return htmlentities("$timestring");
}

}
$tss2info = new tss2info;
?>

mit der Fehlermeldung
Parse error: parse error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /srv/www/htdocs/web21/html/testing/teamspeak/config.php on line 11
über diese url:
/?uip=miczone.net&port=8767&tPort=22223
 
Mhh. Jetzt wird es kompliziert. Das alles ist ja in einer Klasse, also muss es doch
PHP:
var $variablenname = "wert";
heißen, allerdings bin ich mir nicht sicher ob das mit deiner Variablenzuweisen so klappt.
Wenn ich mich nicht täusche, sind Variablen in Klassen nicht vorbelegt bzw. nur statisch definiert. Was Du da versuchst wäre ja eine dynamisch Vorbelegung. Vergleiche mal hierzu: FAQ der Newsgroups de.comp.lang.php.* - Überblick
Vielleicht liegt es auch am Unterschied PHP4 und PHP5? Da gibt es ja dann auch wieder Unterschiede. :/ Ich lese mal ein wenig.
 
Last edited by a moderator:
Wenn Du diese Daten dynamisch haben willst, musst du es im Konstruktor anlegen. Das geht zB:
PHP:
class example {
	var $beispiel;

	function __construct() {
		$this->beispiel=$_GET['uip'];
	}
}

Das Skript ist wahrscheinlich für PHP4 geschrieben und du hast PHP5 laufen. Zwischen diesen beiden Versionen hat sich in diesem Bereich eine Menge getan.

Mach es lieber statisch und gebe die Daten fix ein. Wenn du es wirklich dynamisch haben willst, wirst Du die Klasse ein bißchen umschreiben müssen. Und wenn dynamisch, dann kontrolliere auch unbedingt die übernommenen Variablen, in deinem Fall zumindest ein
PHP:
$uip = intval($_GET['uip'])

lg
Paul
 
Back
Top