Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Игноры в чате
 
 автор: method   (04.07.2005 в 12:14)   письмо автору
 
 

Уважаемые програмисты,такая вот попа,вроде всё правильно
сделал, как вы меня учили но всё равно не хочет работать,
видать где то просчитался, всё равно выводит в броузер
сообщения тех кого игнорирует пользователь....

<?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||
?>

   
 
 автор: cheops   (04.07.2005 в 13:24)   письмо автору
 
   для: method   (04.07.2005 в 12:14)
 

Погодите ка, вот эта строка, по замыслу, что должна делать
<?php
$us_ignor 
= array(explode(","$user[1]));
?>

Функция explode возвращает массив, а вы затем его ещё в один массив упаковываете - получается двумерный. А затем вы подставляете этот двумерный массив в if без обращения к индексам
<?php
if($от_кого!== $us_ignor)
?>

Наверное проблема в этом... Следует в цикле обходить массив explode(",", $user[1]).

   
 
 автор: method   (04.07.2005 в 15:19)   письмо автору
 
   для: 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:42)   письмо автору
 
   для: 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 в 18:17)   письмо автору
 
   для: method   (04.07.2005 в 15:42)
 

хыХы...
так как я хотел непрокатило....
у кого нибудь есть идеи как замутить игноры в чате?

   
 
 автор: XPraptor   (04.07.2005 в 18:41)   письмо автору
 
   для: 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);
}

   
 
 автор: method   (05.07.2005 в 00:48)   письмо автору
 
   для: XPraptor   (04.07.2005 в 18:41)
 

алилуйя ребята =)


<?php
.......
$search in_array($user_mes[2], $us_ignor);
if(!
$search){
выводим сообщения в броузер
}
?>


Во блин функция какая класная, наверно её специально
создавали на подобные случаи,не надо бегать по массиву циклами
оч удобно...
Всем спасибо!

   
 
 автор: method   (09.07.2005 в 03:47)   письмо автору
 
   для: method   (05.07.2005 в 00:48)
 

Вася|,Петя,Юля,Маня,hooper|
Катя||
Дэбил||

Подскажите как избавиться от запятой(ими разделяются элементы массива) если
первый $элемент[0] == "" ....
С добавлением элементов проблем не возникает - делаю array_push ,
удаляю-заменяю элементы str_replace , ей же заменяю ",," на ","
Так что время от времени $элемент[0]==""...

PS: на работу скрипта никак не влияет,но хотелось бы
сделать по уму =)

   
 
 автор: cheops   (09.07.2005 в 11:47)   письмо автору
 
   для: method   (09.07.2005 в 03:47)
 

Перед добавлением, сохраняйте строку ",Петя,Юля,Маня,hooper" в отдельную переменную, проверяйте не является ли первый элемент запятой и если это так - отрезайте её.
<?php
  $text 
",Петя,Юля,Маня,hooper";
  if(
$text[0] == ','$text substr($text,1);
  echo 
$text;
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования