Bonjour à toutes et tous !


Voila, une petite explication en quelques mots :
J'étais hébergé chez verygames.net
Sur mon site, j'avais un bloc qui permet de voir les infos d'un serveur de jeux (le nombre de joueurs etc...)
Voici l'adresse : http://fragandrock.verygames.net/tes....33&port=27035
J'ai changé d'hébergeur, je suis parti chez OVH.
J'ai donc tout transféré, tout mon site fonctionne à l'éxeption de ce bloc.
J'ai ce message d'erreur :
Warning: Invalid argument supplied for foreach() in /home.10.6/fragandr/www/test/indexfull.php on line 45
Voici l'adresse du nouveau bloc : http://www.fragandrock.fr/test/index....33&port=27035
J'ai du mal à trouver d'ou proviens le problème, voici le code de index full.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php 
include("cssource_class.php");
include("template_class.php");
if(isset($_GET['ip']) && isset($_GET['port'])) {
	$css = new cssource($_GET['ip'], $_GET['port'], $_GET['skin']);
	$css->setSortBy("frags"); // Sort players by Frags (supported: index, time, frags)
	$output = $css->status();
 
	$wrap_template = new temp("wrapperfull");
	$wrap_template->replace("net_protocol", $output['net_protocol']);
	$wrap_template->replace("ip", $output['ip']);
	$wrap_template->replace("port", $output['port']);
	$wrap_template->replace("skin", $output['skin']);
	$wrap_template->replace("hostname", $output['hostname']);
	$wrap_template->replace("map", strtolower($output['map']));
	$wrap_template->replace("game_dir", $output['game_dir']);
	$wrap_template->replace("game_type", $output['game_type']);
	$wrap_template->replace("appid", $output['appid']);
	$player_status = ($output['num_players'] == $output['max_players']) ? "plein" : "";
	$wrap_template->replace("player_status", $player_status);
	$wrap_template->replace("num_players", $output['num_players']);
	$wrap_template->replace("max_players", $output['max_players']);
	$wrap_template->replace("bot_players", $output['bot_players']);
	$dedicated = ($output['dedicated'] == "d") ? "Oui" : "Non";
	$wrap_template->replace("dedicated", $dedicated);
	$server_os = ($output['server_os'] == "w") ? "Windows" : "Linux";
	$wrap_template->replace("server_os", $server_os);
	$needpass = ($output['needpass'] == "1") ? "Oui" : "Non";
	$wrap_template->replace("needpass", $needpass);
	$secure = ($output['secure'] == "1") ? "Oui" : "Non";
	$wrap_template->replace("secure", $secure);
 
	$players_html = "";
	foreach($output['players'] AS $player) {
		$player_template = new temp("player");
		$player_template->replace("index", $player['index']);
		$player_template->replace("name", $player['name']);
		$player_template->replace("frags", $player['frags']);
		$player_template->replace("time", date("H:i:s", $player['time']));
		$players_html .= $player_template->show();
	}
	$wrap_template->replace("players", $players_html);
 
	$rules_html = "";
	foreach($output['rules'] AS $rule => $value) {
		$rule_template = new temp("rule");
		$rule_template->replace("rule", $rule);
		$rule_template->replace("value", $value);
		$rules_html .= $rule_template->show();
	}
	$wrap_template->replace("rules", $rules_html);
 
	echo $wrap_template->show();
}
else {
	$wrap_template = new temp("wrapper_empty");
	echo $wrap_template->show();
}
?>
Voici le cssource_class.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?php
class cssource {
	var $ip;
	var $port;
	var $skin;
	var $timeout;
	var $sock;
	var $data;
	var $output = array();
	var $sortBy;
 
	function cssource($ip, $port="",$skin, $timeout=3) {
		$this->ip = $ip;
		$this->port = (empty($port)) ? 27015 : $port;
		$this->skin = $skin;
		$this->timeout = $timeout;
	}
 
	function status() {
		if(!$this->sock = @fsockopen("udp://".$this->ip, $this->port)) {
			die("Could not connect to the .");	
		}
		else {
			// Taz Get Challenge
			$challenge = "\xFF\xFF\xFF\xFF\x57";
			fwrite($this->sock, $challenge);
			socket_set_timeout($this->sock, 1);
			$stringchal = fread($this->sock, 4096);
 
 
			// TAZ Server Info
			$querys[] = "\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00 ";
			// Taz Query Player
			$querys[] = "\xFF\xFF\xFF\xFF\x55".substr($stringchal,5,4);
 
			// Taz Query
			$querys[] = "\xFF\xFF\xFF\xFF\x56".substr($stringchal,5,4);
 
			foreach($querys AS $querystring) {
				fwrite($this->sock, $querystring);
				socket_set_timeout($this->sock, 1);
				$string = fread($this->sock, 4096);
				if(!empty($string)) {
					$this->data[] = $string;
				}
			}
			@fclose($this->sock);
			//if(empty($this->data[0]))
				//die("No data was returned from the query.");
 
			$this->parseStatus();
			$this->parsePlayers();
			$this->parseRules();
 
			return $this->output;
		}
	}
 
	function parseStatus() {
		$status = $this->data[0];
		$i = 5;
		$this->output['net_protocol']	= ord($status{$i++});
		$this->output['ip']			= $this->ip;
		$this->output['port']			= $this->port;
		$this->output['skin']			= $this->skin;
		$this->output['hostname']		= $this->readString($status, $i);
		$this->output['map']			= $this->readString($status, $i);
		$this->output['game_dir']		= $this->readString($status, $i);
		$this->output['game_type']		= $this->readString($status, $i);
		$this->output['appid']			= ord($status{$i++}.$status{$i++});
		$this->output['num_players']	= ord($status{$i++});
		$this->output['max_players']	= ord($status{$i++});
		$this->output['bot_players']	= ord($status{$i++});
		$this->output['dedicated']		= $status{$i++};
		$this->output['server_os']		= $status{$i++};
		$this->output['needpass']		= ord($status{$i++});
		$this->output['secure']			= ord($status{$i++});
 
		return TRUE;
	}
 
	function parsePlayers() {
		$players = $this->data[1];
		$i = 5;
		$num_players = ord($players{$i++});
 
		$this->output['players'] = array();
		if($num_players > 0) {
			for($p = 0; $p < $num_players; $p++) {
				if(!empty($players{$i+1})) {
					$this->output['players'][$p]['index'] = ord($players{$i++});
					$this->output['players'][$p]['name'] = $this->readString($players, $i);
 
					$frags = unpack("L", substr($players, $i, $i+4)); $i+=4;
					$this->output['players'][$p]['frags'] = $frags[1];
 
					$time = unpack("f", substr($players, $i, $i+4)); $i+=4;
					$time = mktime(0, 0, $time[1]);
					//$time = date("H:i:s", $time);
					$this->output['players'][$p]['time'] = $time;
				}
			}	
		}
 
		$this->sortPlayers($this->sortBy);
 
		return TRUE;
	}
 
	function parseRules() {
		$rules = $this->data[2];
		$rule = explode("\x00", $rules);
		$num_rules = count($rule);
 
		for($i = 6; $i < $num_rules; $i+=2)
			$this->output['rules'][$rule[$i-1]] = $rule[$i];
 
		return TRUE;
	}
 
	function readString($string, &$i) {
		$begin = $i;
		$strlen = strlen($string);
		for ($i; ($i < $strlen) && ($string{$i} != chr(0)); $i++);
		$result = substr($string, $begin, $i-$begin);
		$i++;
 
		return $result;
	}
 
	function sortPlayers($sortvar="index") {
		$players = $this->output['players'];
		$num_players = count($players);
 
		for($i = 0; $i != $num_players; $i++) {
			$a = $i;
			$b = $num_players-1;
			while ($a != $b){
				if ($players[$a][$sortvar] > $players[$b][$sortvar])
					$b--;
				else
					$a++;
			}
			$h = $players[$i];
			$players[$i] = $players[$a];
			$players[$a] = $h;	
		}
		$this->output['players'] = $players;
 
		return TRUE;
	}
 
	function setSortBy($sortvar) {
		$this->sortBy = $sortvar;	
	}
}
?>
Sauriez vous m'aider ?

Merci en tout cas de m'avoir lu.

A bientôt.

- Laurent -