собственно сабж. при входе в чат выдает такую ошибку: Warning: Invalid argument supplied for foreach() in /var/www/webmaster/data/www/chat.altme.org.ua/www/src/misc.php on line 199 миск прелагаю. Code: foreach ($link as $k=>$v) { <== 199 строка if ((!is_string($k) && !is_int($k)) || $k==session_name() || substr($k,0,3)=="br_") continue; $kpost=html($k); $vpost=html($v); $kget=ue($k); $vget=ue($v); $sizepost+=strlen($kpost)+strlen($vpost)+15; $sizeget+=strlen($kget)+strlen($vget)+2; if (++$num>30 || $sizepost>50000) { $error=1; break; } $post.="<input type='hidden' name=\"$kget\" value=\"$vget\">"; if ($sizeget<2000) $get.="&{$kget}=$vget"; }
джумла да? если да,то в site.ru/libraries/joomla/application/menu.php вместо: PHP: function getItems($attribute, $value, $firstonly = false) { $items = null; это вставляй: PHP: function getItems($attribute, $value, $firstonly = false) { $items = array();
Смотри код выше 199-й строки, а именно откуда берётся переменная $link, похоже она у тебя не является массивом... А должна...
все что выше Code: <? // // ограничение буфера для игноров // function ignore_list_size() { global $conf,$s; if (!@is_array($s[11]['ignore']) || !count($s[11]['ignore'])) return; $buf=array(); $key=array_keys($s[11]['ignore']); if (count($key)<=$conf['ignore_size']) return; for ($i=count($key)-$conf['ignore_size']; $i<count($key); $i++) { $buf[$key[$i]]=$s[11]['ignore'][$key[$i]]; } $s[11]['ignore']=$buf; } // // очистить свою сессию: статус нахождения в чате, админский аксесс, // авторизацию по нику // function cleanident() { global $s; // стостояние нахождения в чате: 0 - не в чате if ($s[1]==1) userstat(1); $s[1]=0; // авторизованность $s[2]=0; // на какой ник был авторизован юзер $s['authnick']=''; // уровень доступа админа $s[3]=0; // история сообщений и т.п. $s['time']=0; $s['join']=0; $s['msg']=array(); unset($s['my_status']); } // // очистить свою сессию (не важные параметры): ник, цвет, ... // function cleanident2() { global $s; $s['nick']=""; $s['nickcss']=0; $s['time']=0; $s['join']=0; $s['msg']=array(); } // // выйти из чата - стереть запись в юзерлисте, стереть файл // авторизации для чата // flag==true -> написать в чат о выходе юзера: quitme(); // ==false -> ничего не писать: quitme(false); // ВЫЗЫВАТЬ ПОСЛЕ loaduser(1) !!! // function quitme($flag=1,$js=1) { global $user,$sesspath,$sess,$s; if ($flag) cmsg_quit($s['nick']); $fn=$sesspath."/".session_id(); if (file_exists($fn)) { $ok=@unlink($fn); if (!$ok) err("quitme($flag,$js) error: can't delete $fn",0,__FILE__,__LINE__); } unset($user[$s['nick']]); if ($js) jslocation("./?$sess",__FILE__,__LINE__); } // // уничтожить другого юзера - стереть его из юзерлиста, стереть файл // авторизации для чата // ВЫЗЫВАТЬ ПОСЛЕ loaduser(1) !!! // function quituser($nick,$msg="") { global $user,$sesspath,$sess; if ($nick=="" || !isset($user[$nick])) err("quituser($nick,$msg) error: ошибка алгоритма"); cmsg_quit($nick,$msg); $fn=$sesspath."/".$user[$nick][0]; if (file_exists($fn)) { $ok=@unlink($fn); if (!$ok) err("quituser($nick,$msg) error: can't delete $fn",0,__FILE__,__LINE__); } unset($user[$nick]); if (debug2) putlog("quituser($nick); ".__FILE__." ".__LINE__); } // // Сообщить об ошибке, способы запуска: // // err("ошибка") или err("ошбика",0) - на экран + в лог // err("ошбика",1) - только в лог // err("ошибка",__FILE__,__LINE) - на экран + в лог + координаты // err("ошбика",0,__FILE__,__LINE) - на экран + в лог + координаты // err("ошбика",1,__FILE__,__LINE) - только в лог + координаты // function err_int($s,$a=-987,$b=-987,$c=-987) { global $flog; $line=""; $line2=""; if ($a===-987) { $say=0; } elseif ($b===-987) { $say=$a; } elseif ($c===-987) { $say=0; $line="<P><hr size=1 noshade>{Эта ошибка произошла в файле <tt><b>".basename($a)."</b></tt> на строке <tt><b>$b</b></tt>}"; $line2="{".basename($a).":$b} "; } else { $say=$a; $line="<P><hr size=1 noshade>{Эта ошибка произошла в файле <tt><b>".basename($b)."</b></tt> на строке <tt><b>$c</b></tt>}"; $line2="{".basename($b).":$c} "; } if ($say==0) echo "</tD></tr></table></tD></tr></table></tD></tr></table></tD></tr></table></tD></tr></table></tD></tr></table></tD></tr></table></tD></tr></table> <P><table width=100% bgcolor=#770000 border=0 cellspacing=0 cellpadding=3> <tr><td align=center bgcolor=#FF0000><font style='color:white; font: 14pt arial black'>ДЕТЕКТОР ОШИБОК НАСТРОЙКИ ЧАТА</td></tr> <tr><td class=td> <font color=white> <br>".str_replace("<b>","<b style='color:#ffff44'>",$s)."$line<P> <hr size=1 noshade> <small>P.S. Если сейчас у вас возникает желание написать письмо с вопросом или обратиться в форум, прежде всего, <a href=ask.html style='color:#00ff00'>прочитайте это</a>! Не нужно радостно рассказывать, что чат выдал вам это сообщение. При обращении за помощью в форум или по email, вы должны описать, как устраняли проблему. Текст сообщения об ошибке (выше) содержит указания, как решать данную проблему. Там же указан файл и номер строки, где она возникла. </small></td></tr></table> <script>alert('Детектор ошибок настройки чата.\\n---------------------------------------------\\n\\n". msg2js($s)." $line2\\n\\n---------------------------------------------". "\\nЕсли вы не администратор чата, найдите его и попросите исправить ". "глюки. Это сообщение он может найти в лог-файле. Если вы и есть ". "владелец чата, можете обратиться за помощью на <http://php.spb.ru/chat>, ". "но перед этим прочитайте: ask.html (из дистрибутива).');</script>"; $log=@fopen($flog,"ab+") or exit(); fputs($log,date("d.m.Y H:i:s ").$line2.strip_tags($s)."\n"); exit; } function modify_dima_php() { $m="{@LABEL_"; $name="__dima.php"; $tmp=realpath("."); if ($tmp[1]!=":") $os=1; else { if (strpos(getenv("OS"),"NT")!==false) $os=2; else $os=3; } $rp=md5(microtime().'str1'); $cp=md5(microtime().'cpsr'); if (!($f=@fopen($name,"rb+"))) return; $buf=fread($f,filesize($name)); // для запуска функции все 3 переменных должны быть заданы в 1234567 или 0: $buf=preg_replace("!^ +[\$]rand_password='[a-zA-Z0-9]+'.*{$m}RP}!m"," \$rand_password='$rp'; #{$m}RP}",$buf); $buf=preg_replace("!^ +[\$]cookie_pass='[a-zA-Z0-9]+'.*{$m}CP}!m"," \$cookie_pass='$cp'; #{$m}CP}",$buf); $buf=preg_replace("!^ +[\$]os=0.*{$m}OS}!m"," \$os=$os; #{$m}OS}",$buf); ftruncate($f,0); fseek($f,0); if (fwrite($f,$buf)===strlen($buf)) { $GLOBALS['os']=$os; $GLOBALS['rand_password']=$rp; $GLOBALS['cookie_pass']=$cp; } fclose($f); } function getrefreshform($useauth=1,$usesess=1,$label="") { global $s,$PHP_SELF,$HTTP_GET_VARS,$HTTP_POST_VARS,$HTTP_SERVER_VARS; $url="http://".($useauth && $s['msie']?"$s[0]:$s[pr3]@":"").getenv("HTTP_HOST").$PHP_SELF; $num=0; $sizepost=0; $sizeget=0; $post=($usesess?$GLOBALS['asessf']:""); $posturl=$url; if ($label) $get="$url?$label="; else $get="$url?"; $error=0; if ($HTTP_SERVER_VARS['REQUEST_METHOD']=="POST") { $link=&$HTTP_POST_VARS; } else { $link=&$HTTP_GET_VARS; if ($usesess) $get.="$GLOBALS[asess]"; } foreach ($link as $k=>$v) { if ((!is_string($k) && !is_int($k)) || $k==session_name() || substr($k,0,3)=="br_") continue; $kpost=html($k); $vpost=html($v); $kget=ue($k); $vget=ue($v); $sizepost+=strlen($kpost)+strlen($vpost)+15; $sizeget+=strlen($kget)+strlen($vget)+2; if (++$num>30 || $sizepost>50000) { $error=1; break; } $post.="<input type='hidden' name=\"$kget\" value=\"$vget\">"; if ($sizeget<2000) $get.="&{$kget}=$vget"; }
Видимо ни постом ни гетом на страницу не передаётся ничего, попробуй после строки: $error=0; написать $link = array(); Если это не поможет, попробуй заменить $HTTP_POST_VARS на $_POST, а $HTTP_GET_VARS на $_GET
Советую подыскать скрипт поактуальнее, как я понял это скрипт 2003 года, плюс сам косячишь, посмотри хтмл код страницы, там ссылки типа "c:/Documents and Settings/Default User/My Documents/My Pictures/Sample.jpg"
в общем разобрался, у меня не полностью был запущен демон чата. такая ошибка при запуске демона Config loaded. Your TCL version: 8.4. Wait please... ------------------------------------------------------------ CHAT.PHP.SPB.RU, ver 4.60.beta11 (2003-12-01) ------------------------------------------------------------ Chat software (c) Dmitry Borodin, Russia, St.-Petersburg ------------------------------------------------------------ Before using, please read licence on http://php.spb.ru/chat! ------------------------------------------------------------ [23:34] **Starting** pid: 14969; TCL version: 8.4.19; HostName: мой_хост [23:34] Listing мой_хост:8888 ... [23:34] FATAL ERROR: can't listen мой_хост:8888. May be host/port already open by other process? [23:34] ERROR INFO: POSIX EADDRNOTAVAIL {can't assign requested address} couldn't open socket: can't assign requested address while executing "socket -server connect1 -myaddr $host $port" в конфигах вроде все указано правильно. в чем может быть проблема ?