|
|
|
| Уважаемые програмисты,такая вот попа,вроде всё правильно
сделал, как вы меня учили но всё равно не хочет работать,
видать где то просчитался, всё равно выводит в броузер
сообщения тех кого игнорирует пользователь....
<?php
$mes= file($файл_сообщений);//помещаем в массив файл с сообщениями
$co = sizeof($mes);
for($i=0;$i<$co;$i++){
list($время,$от_кого,$кому,$сообщение) = split('[|]', trim($mes[$i]));//обрабатываем строки функцией list
$users = file($ignors);//читаем в массив файл игноров
foreach($users as $line){
$user = explode("|", $line);
if($_SESSION['login']==$user[0]){ //если логин == первому([0]) елементу в строке
$us_ignor = array(explode(",", $user[1])); //второй элемент помещаем в массив (разделяя элементы ",")
if($от_кого!== $us_ignor){ //если откого не==игнорируемым именам выводим сообщения в броузер
print "[$время]$от_кого >> $кому : $сообщение";
}
}
?>
|
файл игноров:
<?php
Вася|method,Оля| //Вася игнорирует сообщения method и Оли
trooper||
method||
killer||
?>
|
| |
|
|
|
|
|
|
|
для: method
(04.07.2005 в 12:14)
| | Погодите ка, вот эта строка, по замыслу, что должна делать
<?php
$us_ignor = array(explode(",", $user[1]));
?>
|
Функция explode возвращает массив, а вы затем его ещё в один массив упаковываете - получается двумерный. А затем вы подставляете этот двумерный массив в if без обращения к индексам
<?php
if($от_кого!== $us_ignor)
?>
|
Наверное проблема в этом... Следует в цикле обходить массив explode(",", $user[1]). | |
|
|
|
|
|
|
|
для: cheops
(04.07.2005 в 13:24)
| | ни чего не понимаю, я в прошлый раз делал
explode(",", $user[1]); а не array(explode(",", $user[1]));
на что интерпритатор ругался на это,
а ща всё в порядке, наверно уже голова опухла от этих массивов =)
вывод: впрошлый раз написал с ошибками из-за невнимательности.....
cheops , не подскажите как обратиться к массиву $us_ignor
как если бы было $us_ignor = array("method","Оля");
то есть без указания индексов(потому как массив будет менять свой размер, и заведомо не знаю сколько элементов он будет содержать, и не знаю как сделать чтоб скрипт проходил по всем индексам ... )
PS сори если я опять не правильно сформулировал вопрос
я исправлюсь =) | |
|
|
|
|
|
|
|
для: method
(04.07.2005 в 15:19)
| | вопрос снимается =)
в чужом скрипте нашёл ,
массив юзается циклом for
<?php
for ($i = 0; $i < count($us_ignor); $i++) {
if (strstr($login, $us_ignor[$i])) err(8);
}
?>
|
......
cheops'у спасибо, как приложение напишу
отошлю копию для частного пользования! | |
|
|
|
|
|
|
|
для: method
(04.07.2005 в 15:42)
| | хыХы...
так как я хотел непрокатило....
у кого нибудь есть идеи как замутить игноры в чате? | |
|
|
|
|
|
|
|
для: method
(04.07.2005 в 18:17)
| | Что то ты никак не можешь разобраться в массиве. Попробуй так:
foreach($user as $key=>$val){
$us_ignor=explode(',', $val);
//если произошло разделение
if(COUNT($us_ignor)>1){
if (strstr($login, $us_ignor[1])) err(8);
}
unset($us_ignor);
}
|
| |
|
|
|
|
|
|
|
для: XPraptor
(04.07.2005 в 18:41)
| | алилуйя ребята =)
<?php
.......
$search = in_array($user_mes[2], $us_ignor);
if(!$search){
выводим сообщения в броузер
}
?>
|
Во блин функция какая класная, наверно её специально
создавали на подобные случаи,не надо бегать по массиву циклами
оч удобно...
Всем спасибо! | |
|
|
|
|
|
|
|
для: method
(05.07.2005 в 00:48)
| | Вася|,Петя,Юля,Маня,hooper|
Катя||
Дэбил||
Подскажите как избавиться от запятой(ими разделяются элементы массива) если
первый $элемент[0] == "" ....
С добавлением элементов проблем не возникает - делаю array_push ,
удаляю-заменяю элементы str_replace , ей же заменяю ",," на ","
Так что время от времени $элемент[0]==""...
PS: на работу скрипта никак не влияет,но хотелось бы
сделать по уму =) | |
|
|
|
|
|
|
|
для: method
(09.07.2005 в 03:47)
| | Перед добавлением, сохраняйте строку ",Петя,Юля,Маня,hooper" в отдельную переменную, проверяйте не является ли первый элемент запятой и если это так - отрезайте её.
<?php
$text = ",Петя,Юля,Маня,hooper";
if($text[0] == ',') $text = substr($text,1);
echo $text;
?>
|
| |
|
|
|