Problème Array

cs_naruto uzumaki Messages postés 11 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 10 janvier 2010 - 7 janv. 2009 à 00:00
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 7 janv. 2009 à 10:25
Hello tout le monde j'ai une question ... Je fais un robot (en local) pour ma webtv. Son rôle est de scanner le serveur stream et de regarder si il y a des doubles adresses ip . Par contre faut toujours un poil dans le potage. Alors le voilà :
Warning: Invalid argument supplied for foreach() in C:\server\web\apps\botcast\index.php on line 72

Je comprends pas car bon les array je suis pas du tout ami encore avec eux :s

Voilà mon script :

<?php
//  --------------------------------
// |   BOTCAST POWERED BY FoX-Cyd   |
// |       Exclu pour 2ZikTV        |
// |       wwww.2ziktv.new.fr       |
//  --------------------------------

// Informations concernant le serveur:

$bc_host = 's1.zilac.com';  // Adresse IP du serveur shoutcast.
$bc_port = '8500';          // Port du serveur shoutcast.
$bc_pass = 'zikzik2trot';   // Mot de passe du serveur shoutcast.
$refresh =  5;              // Temps entre chaque actualisation (en secondes).
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="refresh" content="<?php echo $refresh ; ?>">
<title>BotCast :: Powered by FoX-Cyd</title>
</head>

Bienvenue sur BotCast! Ce bot est automatique [Refresh toutes les <?php echo $refresh ; ?> secondes].

<?php
if (! $sock = @fsockopen($bc_host, $bc_port, $num, $error, 3))
 echo '[ERROR] Le serveur shoutcast est déconnecté !';

 else{
  include('shoutcast.php');
  $tab_infos = shoutcast_stats($bc_host, $bc_port, $bc_pass);
if ($tab_infos)
    {
        if ($tab_infos['http_code'] == '200')
        {
        echo '-------------------------------------------------------------------
';
            if ($tab_infos['streamstatus'])   
            {
                echo 'Etat du Stream : Diffusion en cours.
';
                echo 'Nom du Stream : '.$tab_infos['servertitle'].'
';
                echo 'Nombre d\'auditeurs : '.$tab_infos['currentlisteners'].'/'.$tab_infos['maxlisteners'].' [max: '.$tab_infos['peaklisteners'].']
';
                echo 'Titre en cours : '.$tab_infos['songtitle'].' ['.$tab_infos['bitrate'].'kbps]
';
                            }
            else
            {                           
                echo 'Etat du Stream : Aucune Diffusion en cours.
';
                }
        echo '-------------------------------------------------------------------
';
                if (array_key_exists('auditeur', $tab_infos))
            {
    echo 'Liste des auditeurs :
';
               
               
                foreach($tab_infos['auditeur'] as $id => $valeur)
                    echo '. $id . ' ' . $valeur['hote'] . ' [Durée:'.$valeur['temps'].'s]
';
                   
        //Systeme ban
function TrimTab($txt){
 return trim($txt);
}

// on recupere le contenu du fichier "except.txt" et on place résultat dans un array()
$except = file_get_contents('except.txt');
$list_except = explode("\n", $except);
$list_except = array_map('TrimTab', $list_except);

// ici pour nos tests (en tout cas mettre la liste de tes IP dans un array())
 echo '-------------------------------------------------------------------
';
 
foreach($valeur['hote'] as $cle){
 if($cle > 1){
  if(!in_array($cle, $list_except)){
   echo '[DOUBLE IP] L\'adresse '.$cle. ' regarde deux fois, utilisateur bannie automatiquement !
';
  }
  else{
   echo '[DOUBLE IP] L\'adresse '.$cle.' est dans l\'exeption des bannissement !
';
  }
 }
 else{
  echo '';
 }
}
       //Fin systeme ban
            }

        }
        else
            echo '[ERROR] Le mot de passe admin est invalide !';
    }
    else
        echo '[ERROR] Impossible de se connecter !';
 
 
   fclose($sock);
 }
 echo '-------------------------------------------------------------------
';
 ?>

</html>

Qui peux m'aider car là je bloque vraiment :s Merci d'avance ! :D
FoX-Cyd

2 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 janv. 2009 à 00:52
Salut,

Je n'ai pas regardé de près le code.
Ton erreur semble indiquer que $tab_infos['auditeur'] n'est pas définie

Essaie de déboguer en mettant :
print_r($tab_infos['auditeur']);
juste avant :
foreach($tab_infos['auditeur'] as $id => $valeur)

Peut être un pb avec la fonction shoutcast_stats

Kohntark -
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
7 janv. 2009 à 10:25
Essaye ça...
*se rapelle de malalam qui lui disait de boucler sur des array qui contiennent qqch >_<*
if(!empty($valeur['hote'])){
    foreach($valeur['hote'] as $cle){
    ...
    }
}

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
Rejoignez-nous