|
|
|
| Добрый день!
Ну значит так!
Допустим скрипт принял параметры:
$_get['id']
$_get['nick']
$_get['param1']
$_get['voc']
|
Он читает их и записывает в файл примерно так
id = nick
id = nick
id = nick
Тоесть каждый раз приняв такие параметры он записывает их в файл с новой строки соответственно проверяя если такой id уже есть в файле то незаписывает ничего!
Далее если в параметре $_get['param1'] поступило SETNICK то он должен найти в файле строку в которой совпадёт $_get['id'] и вместо nick вставить то что будет в
$_get['voc'] !
Выведя сообщение о том что успешно изменено!
Потом если в $_get['param1'] поступит просто текст то должен сделать следующее:
Прочитать то что в $_get['id'] найти в файле строку в которой совпадёт $_get['id'] с id
прочитать в этой nick запомнив его
прочитать из файла только id составить их через запятую или как там
и послать сообщение вставив вместо $nik то что запомнил раньше!
$handle = fopen ("pid.txt","r");
while ($data = fgetcsv($handle, 1000, ","))
{
foreach ($data as $value)
{
if($_GET['id'] != $value)
echo '$PID'."\r\n $value $nik bla bla bla\n";
}
}
|
| |
|
|
|
|
|
|
|
для: sedek
(13.11.2004 в 14:57)
| | Постараюсь ближе к полуночи отписаться... | |
|
|
|
|
|
|
|
для: cheops
(13.11.2004 в 18:02)
| | И ещё!
Если в $_GET['param1'] поступило DEL а в $_GET['nick'] BOSS то скрипт должен найти в файле строку в которой nick совпадает с тем что в $_GET['voc'] и удалить эту строку вместе с id!
Если в $_GET['param1'] поступило OFF то скрипт должен найти строку в которой id совпадает с $_GET['id'] и удалить строку! | |
|
|
|
|
|
|
|
для: sedek
(14.11.2004 в 12:52)
| | Тогда окончательный вариант будет этот - только имя файла нужно подставить нужное... | |
|
|
|
|
|
|
|
для: cheops
(14.11.2004 в 13:06)
| | a как стелать отправку я чтото не пойму
ведь id должны както распологаться в списке наверно через запятую чтоб вывод был такой
$handle = fopen ("pid.txt","r");
while ($data = fgetcsv($handle, 1000, ","))
{
foreach ($data as $value)
{
if($_GET['id'] != $value)
echo '$PID'."\r\n $value chat-$nik $msg\n";
}
}
|
но только чтоб он id брал из text.txt
или из переменной | |
|
|
|
|
|
|
|
для: sedek
(14.11.2004 в 14:23)
| | Хм... можно сделать так как в аттаче, но нужно знать в строке
<?php
echo '$PID'."\r\n ".$matches[1]." chat-$nik $msg\n";
?>
|
кто есть кто? В частности $PID, $nik, $msg... | |
|
|
|
|
|
|
|
для: cheops
(14.11.2004 в 14:38)
| | а зачем надо файл снова разбивать и извлекать id?
У нас уже есть все id тут $list_id .= $matches[1]." ";
просто как-то надо разбить их на строки удалить текущий и вывести!
В принципе не какой разницы!
теперь другая проблемка!
допустим в $_GET['param1'] поступила команда setnick nick
Нужно чтобы скрипт если if(substr($_GET['param1'],0,7) == "setnick")
то читает файл text.txt если там id совпало с $_GET['id'] то он там заменяет nick на то что будет в $_GET['voc'] только после 7 символов! | |
|
|
|
|
|
|
|
для: sedek
(14.11.2004 в 19:34)
| | >то читает файл text.txt если там id совпало с $_GET['id'] то
>он там заменяет nick на то что будет в $_GET['voc'] только
>после 7 символов!
Т.е. setnick у нас и в voc? | |
|
|
|
|
|
|
|
для: cheops
(14.11.2004 в 20:34)
| | >Т.е. setnick у нас и в voc?
Оказывается да!
Просто то что в $_GET['param1'] поступает как и посылают тоесть на английском!
А в $_GET['voc'] на русском! это система переводит! | |
|
|
|
|
|
|
|
для: cheops
(14.11.2004 в 20:34)
| | немного не так у нас в $_GET['param1'] поступило setnick nick нам надо чтобы скрипт если в $_GET['param1'] первые 7 символов setnick то только тогда ищет id и заменяет на то что стоит в $_GET['voc'] после setnick | |
|
|
|
|
|
|
|
для: sedek
(14.11.2004 в 20:57)
| | Т.е. если заменить
<?php
if($param == "SETNICK")
?>
|
на
<?php
if(substr($_GET['param1'],0,7) == "SETNICK")
?>
|
Всё будет правильно, или проблема в другом? | |
|
|
|
|
|
|
|
для: cheops
(14.11.2004 в 21:09)
| | да я уже исправил!
только там надо не 7 символов а 8 так как пробел тоже символ!
теперь проблема в другом!
как с этим быть?
else if($param == "DELETE" && $nick == "Xolod")
{
$fd = fopen($filename, "r");
$bufer = fread($fd, filesize($filename));
fclose($fd);
// Удаляем из $bufer строку id=nick
$bufer = preg_replace("|[\d]+ = $voc\n|", "", $bufer);
// Записываем изменённое содержимое буфера в файл
$fd = fopen($filename, "w");
fwrite($fd, $bufer);
fclose($fd);
echo "Ник успешно удалён!".$menu[$rnd];
exit();
}
|
и как сделать чтоб команда не важна в каком регистре была?
типа этого if(preg_match("|^Offline$|i", $_GET['param1'])) | |
|
|
|
|
|
|
|
для: sedek
(14.11.2004 в 21:42)
| | Так прямо и заменяйте как пишете:
<?php
else if(preg_match("|^DELETE $|i", substr($param,0,8)) && preg_match("|^Xolod$|i", $nick ))
{
$fd = fopen($filename, "r");
$bufer = fread($fd, filesize($filename));
fclose($fd);
// Удаляем из $bufer строку id=nick
$bufer = preg_replace("|[\d]+ = $voc\n|", "", $bufer);
// Записываем изменённое содержимое буфера в файл
$fd = fopen($filename, "w");
fwrite($fd, $bufer);
fclose($fd);
echo "Ник успешно удалён!".$menu[$rnd];
exit();
}?>
|
| |
|
|
|
|
|
|
|
для: cheops
(14.11.2004 в 22:08)
| | Почемуто у меня эта команда не работает сообщение о том что удалён выводит а из файла не удаляет!
substr($voc,8)
не пойму как поставить! | |
|
|
|
|
|
|
|
для: sedek
(16.11.2004 в 00:46)
| | Хм... но ведь в строке "DELETE " - только 7 символов... попробуйте в этом блоке семёрки на восьмерки заменить. Или вообще обработать $voc при помощи регулярного выражения - следующий код удаляет из $voc любую команду вначале параметра и пробел следующий за ней
<?php
$voc = preg_replace("|^[^ ] |", "", $voc);
?>
|
В этом случае можно избежать во-первых ошибок связанных с подсчётом числа параметров, во-вторых обрабатывать $voc сразу для всех блоков. К тому же вы говорили в $voc - перевод, чёрт знает как они переводят - может там и число символов другое.... | |
|
|
|
|
|
|
|
для: cheops
(16.11.2004 в 01:56)
| | Толи я чтото не так делаю толи дело в другом?
Всёравно сообщение о том что удалён выводит а удалять не удаляет!
<?
else if(preg_match("|^delete $|i", substr($param,0,7)) && preg_match("|^Xolod$|i", $nick))
{
$fd = fopen($filename, "r");
$bufer = fread($fd, filesize($filename));
fclose($fd);
$voc = preg_replace("|^[^ ] |", "", $voc);
$bufer = preg_replace("|[\d]+ = $voc\n|", "", $bufer);
$fd = fopen($filename, "w");
fwrite($fd, $bufer);
fclose($fd);
echo "Ник успешно удалён!".$menu[$rnd];
exit();
}?>
|
| |
|
|
|
|
|
|
|
для: sedek
(16.11.2004 в 10:15)
| | Ага, это я вчера в регулярном выражении ошибся - решил, что простое и можно не проверять :))) Вместо
<?php
$voc = preg_replace("|^[^ ] |", "", $voc);
?>
|
которое удаляет только один символ и следующий за ним пробел, следует писать
<?php
$voc = preg_replace("|^[^ ]+ |", "", $voc);
?>
|
которое уничтожит один или большее число символов и следующий за ним пробел. | |
|
|
|
|
|
|
|
для: cheops
(16.11.2004 в 10:44)
| | тоже самое!
Во вложении весь код! | |
|
|
|
|
|
|
|
для: sedek
(16.11.2004 в 11:34)
| | Хм... следует после удаления первого символа посмотреть что осталось в $voc
<?php
$voc = preg_replace("|^[^ ]+ |", "", $voc);
echo $voc."\n";
|
Обращая внимание на все пробелы - просто посмотреть исходный текст страницы (Opera кажется wap понимает - просмотр исходного текста Alt+F3, хотя в принципе этого наверное не нужно - у нас же text/plain). | |
|
|
|
|
|
|
|
для: cheops
(16.11.2004 в 11:58)
| | Пишу delete X
приходит
X
Ник успешно удалён!
а в файле
DFH3J4 = xolod
LK2RD = X | |
|
|
|
|
|
|
|
для: sedek
(16.11.2004 в 13:23)
| | ёклмн, так у нас id не цифры а набор цифр и букв!? | |
|
|
|
|
|
|
|
для: sedek
(16.11.2004 в 13:23)
| | Тогда все [\d] следует заменить на [\S]. | |
|
|
|
|
|
|
|
для: cheops
(16.11.2004 в 22:33)
| | Я уж устал!
всёравно также!
<?
if(preg_match("|^delete$|i", substr($param,0,6)) && preg_match("|^Xolod$|i", $nick))
{
$fd = fopen($filename, "r");
$bufer = fread($fd, filesize($filename));
fclose($fd);
$voc = preg_replace("|^[^ ] |", "", $voc);
$bufer = preg_replace("|[\S]+ = $voc\n|", "", $bufer);
$fd = fopen($filename, "w");
fwrite($fd, $bufer);
fclose($fd);
echo "CHAT.$master> Ник успешно удалён!".$menu[$rnd];
exit();
}
?>
|
http://softtime.ru/forum/read.php?id_forum=1&id_theme=803&page=1 | |
|
|
|
|
|
|
|
для: sedek
(17.11.2004 в 11:12)
| | Думаю мученья подходят к концу :)))
В этом скрипте опять нет + в строке
<?php
$voc = preg_replace("|^[^ ] |", "", $voc);
?>
|
Нужно заменить на
<?php
$voc = preg_replace("|^[^ ]+ |", "", $voc);
?>
|
| |
|
|
|
|
|
|
|
для: sedek
(13.11.2004 в 14:57)
| | Не очень понятно с именами файлов, в которые производится запись... в скрипте, который прикреплён в attach имеется id = nick пишется в файл text.txt, при этом список id находится в переменной $list_id, а текущий ник в $current_nick.... | |
|
|
|