Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Пишу скрипт на PHP, помогите плиз советом.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
urj
Отправлено: 14 Декабря, 2009 - 19:36:39
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Имеются входящие данные типа:

http://www[dot]yoursite[dot]ru/dir/scrip[dot][dot][dot]itfm&txt=474
&tid=1234-aasvs-3345.1332&cn=ru&op=beeline&phone=79031234567&sn=8385

Необходимо их сохранитть в файл лога (log.txt) по принципу:

дата<->pref<->txt<->phone<->sn<->cn<->op<->tid

Поправьте меня если я не прав.
ПИШЕМ САМ СКРИПТ:


<? PHP

// P.S. Пишу скрипт первый раз.


$filename = "log.txt"; // Указываем файл.
$delitmer = "<->"; // Указываем разделитель.

// Присваиваем значение переменным.

$pref = $_GET[`pref`];
$txt = $_GET[`txt`];
$phone = $_GET[`phohe`];
$sn = $_GET[`sn`];
$cn = $_GET[`cn`];
$op = $_GET[`op`];
$tid = $_GET[`tid`];

// Я прав???? Поправьте меня пока я не сотворил апокалипс.

$arr = array(date( "d.m.y" ), $pref, $txt, $phone, $sn, $cn, $op, $tid);
$new_log = implode($delitmer, $arr) . "\r\n";
$log_arr = @file($filename);
$log_str = $new_log;
$log_str . = trim(implode("", $log_arr));

// Что-то типа того. В затруднении В затруднении В затруднении В затруднении В затруднении

// Творю дальшее В затруднении Проблемы ??? Непонял! Не понял Ламер Ламер

$fp = fopen($filename, "w+" );
fwrite($fp, $log_str);
fclose($fp);

?>

// Вроде все....
// Растерялся Растерялся Растерялся
// Поправьте меня.

(Отредактировано автором: 15 Декабря, 2009 - 15:07:10)

 
 Top
Мелкий Супермодератор
Отправлено: 15 Декабря, 2009 - 14:06:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Carzil пишет:
омментприи начинаются с двойной косой черты6
PHP:

Ну и все последующие символы относятся уже к комментарию, так что не имеет роли.

urj, ну скрипт маленький, на нём апокалипсис сделать сложно. Но вот входные данные стоит фильтровать, а то попадётся где-нибудь в $_GET[`txt`]; символ "\n" и структура файла слетит, если его потом построчно читать. Т.е.


А если работать с файлом потом только PHP нужно, то serialize и unserialize будут удобнее в использовании


-----
PostgreSQL DBA
 
 Top
urj
Отправлено: 15 Декабря, 2009 - 15:15:06
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




А если по-подробнее?????????????
Если можно?????????
Чет я запутался. ??? Непонял! ??? Непонял! ??? Непонял! ??? Непонял! ??? Непонял! ??? Непонял! ??? Непонял! ??? Непонял! ??? Непонял!
 
 Top
Мелкий Супермодератор
Отправлено: 15 Декабря, 2009 - 15:31:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




С какого места? Улыбка


-----
PostgreSQL DBA
 
 Top
urj
Отправлено: 15 Декабря, 2009 - 15:47:02
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Что-то типа этого????????
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.  $filename = "log.txt"; // Указываем файл.
  5.  
  6.  $txt = addslashes($_GET[`txt`]);        // Фильтруем входные данные. ???????????
  7.  
  8.    // Присваиваем значение переменным.
  9.  
  10.  $pref = $_GET['pref'];
  11.  $txt = $_GET['txt'];
  12.  $phone = $_GET['phohe'];
  13.  $sn = $_GET['sn'];
  14.  $cn = $_GET['cn'];
  15.  $op = $_GET['op'];
  16.  $tid = $_GET['tid'];
  17.  
  18.    file_put_contents("log.txt", date("d.m.y")."<->{$_GET['pref']}<->{$_GET['txt']}<->{$_GET['phohe']}<->{$_GET['sn']}<->{$_GET['cn']}<->{$_GET['op']}<->{$_GET['tid']}\r\n", FILE_APPEND);
  19.  
  20. ?>
  21.  

(Отредактировано автором: 15 Декабря, 2009 - 15:57:45)

 
 Top
Мелкий Супермодератор
Отправлено: 15 Декабря, 2009 - 16:36:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Да правильно, и так же заэкранировать всё остальное, что приходит в скрипт извне:
PHP:
скопировать код в буфер обмена
  1. $pref = addslashes($_GET[`pref`]);
  2. $txt = addslashes($_GET[`txt`]);
  3. $phone = addslashes($_GET[`phohe`]);
  4. $sn = addslashes($_GET[`sn`]);
  5. $cn = addslashes($_GET[`cn`]);
  6. $op = addslashes($_GET[`op`]);
  7. $tid = addslashes($_GET[`tid`]);

А на счёт функций записи в файл - в этом случае особо без разницы, какими функциями пользоваться.


-----
PostgreSQL DBA
 
 Top
urj
Отправлено: 15 Декабря, 2009 - 16:42:36
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




ААААААААААААААА ВРОДЕ ПОНЯЛ Улыбка Улыбка Улыбка

ВОТ :
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.  $filename = "log.txt"; // Указываем файл.
  5.  
  6.  $pref = addslashes($_GET[`pref`]);
  7.  $txt = addslashes($_GET[`txt`]);
  8.  $phone = addslashes($_GET[`phohe`]);
  9.  $sn = addslashes($_GET[`sn`]);
  10.  $cn = addslashes($_GET[`cn`]);
  11.  $op = addslashes($_GET[`op`]);
  12.  $tid = addslashes($_GET[`tid`]);
  13.  
  14.     file_put_contents("log.txt", date("d.m.y")."<->{$_GET['pref']}<->{$_GET['txt']}<->{$_GET['phohe']}<->{$_GET['sn']}<->{$_GET['cn']}<->{$_GET['op']}<->{$_GET['tid']}\r\n", FILE_APPEND);
  15.  
  16. ?>
  17.  
  18.  


//Сейчас провериммммм Ламер Фингал Фингал
(Добавление)
Все даже намного проще.....
ВОТ.....
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.   $pref = addslashes($_GET[`pref`]);
  4.   $txt = addslashes($_GET[`txt`]);
  5.   $phone = addslashes($_GET[`phohe`]);
  6.   $sn = addslashes($_GET[`sn`]);
  7.   $cn = addslashes($_GET[`cn`]);
  8.   $op = addslashes($_GET[`op`]);
  9.   $tid = addslashes($_GET[`tid`]);
  10.  
  11.      file_put_contents("log.txt", date("d.m.y")."<->{$_GET['pref']}<->{$_GET['txt']}<->{$_GET['phohe']}<->{$_GET['sn']}<->{$_GET['cn']}<->{$_GET['op']}<->{$_GET['tid']}\r\n", FILE_APPEND);
  12.  
  13. ?>
  14.  


// УРАААА работает.................
(Добавление)
ПРОДОЛЖИММММ..................
Теперь необходимо обработать некоторые входящие данные.....
А точнее
и

Добавим в наш скрипт еще два файла db.txt и to_txt.txt
Первый содержит:
1111<->qqqq
2222<->wwww
3333<->eeee
4444<->rrrr
5555<->tttt
6666<->yyyy
7777<->uuuu
8888<->iiii
9999<->oooo

А txt.txt пустой.
Суть.
Если $pref = vasia , то смотрим $txt ;
Если $pref не = vasia , то пишем в txt.txt "Лузер"

Если $txt = "yes" , то выводим три любых значения из первой колонки и номер соответственной строки в файл to_txt.txt

Пример: $txt = "yes"
2=2222
4=4444
7=7777

// ЧТо-то типо того.
// Продолжение следует.
// Эт я просто по кусочкам учусь писать. Улыбка Улыбка Улыбка Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 15 Декабря, 2009 - 17:49:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




СУБД писать - неблагодарное занятие... Лучше ей пользоваться ;)


-----
PostgreSQL DBA
 
 Top
urj
Отправлено: 15 Декабря, 2009 - 18:25:29
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Как я понял это будет примерно так....
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.   $pref = addslashes($_GET[`pref`]);
  5.   $txt = addslashes($_GET[`txt`]);
  6.  
  7. if($pref=="vasia")
  8. {
  9.    // Ка записать сравниваем $txt ???????????
  10.   //Я думаю так
  11.  
  12.        if($txt=="yes")
  13.         {
  14.                 // Здесь надо взять те самые случайные строчки с первыми значениями. ????  
  15.                // И поместить их в файл to_txt.txt
  16.          }
  17.        elseif($txt=="5");
  18.          {
  19.                // Здесь надо взять уже всю строку целиком. К примеру это 5ая
  20.               // И поместьть ее в файт to_txt.txt
  21.           }
  22. }
  23. else file_put_contents("to_txt.txt", "Лузер  \r\n", FILE_APPEND);    // Если не "vasia"
  24.  
  25. ?>
  26.  

(Отредактировано автором: 15 Декабря, 2009 - 20:06:35)

 
 Top
Мелкий Супермодератор
Отправлено: 15 Декабря, 2009 - 19:29:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




urj пишет:
Ка записать сравниваем $txt ?

Правильно думаете. Над работой с файлами тоже подумайте.

urj пишет:
Как здесь установить что если он не vasia. то ??????

отрицание сравнения - !=, но в данном случае можно вообще повторное условие опустить.


-----
PostgreSQL DBA
 
 Top
urj
Отправлено: 15 Декабря, 2009 - 19:48:04
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Мелкий пишет:
отрицание сравнения - !=

На это похоже??????? Улыбка Улыбка Улыбка

(Добавление)
urj пишет:
но в данном случае можно вообще повторное условие опустить.


ТАК
PHP:
скопировать код в буфер обмена
  1.  
  2. elseif(file_put_contents("to_txt.txt", "Лузер  \r\n", FILE_APPEND));
  3.  
  4.  
 
 Top
Мелкий Супермодератор
Отправлено: 15 Декабря, 2009 - 19:58:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




$pref != "vasia"
- это был просто символ-указатель Улыбка

Просто
PHP:
скопировать код в буфер обмена
  1. else file_put_contents("to_txt.txt", "Лузер  \r\n", FILE_APPEND);
  2.  


-----
PostgreSQL DBA
 
 Top
urj
Отправлено: 15 Декабря, 2009 - 20:08:37
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Мелкий пишет:
\r\n

Будет заменять файл или дописывать????
Мне надо заменить.
 
 Top
urj
Отправлено: 16 Декабря, 2009 - 17:07:06
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Меня больше интересует какой функциеей мне можно взять
первые значения из нескольких строк с их номерами???????????????
Пример:
1111<->qqqq
2222<->wwww
3333<->eeee
4444<->rrrr
5555<->tttt
6666<->yyyy
7777<->uuuu
8888<->iiii
9999<->oooo

надо получить ответ на файл to_txt.txt
2=2222
5=5555
8=8888

КАК???? Подскажите плиз.
 
 Top
Мелкий Супермодератор
Отправлено: 16 Декабря, 2009 - 17:19:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




urj пишет:
Будет заменять файл или дописывать????

А проверить? ;)

urj пишет:
первые значения из нескольких строк с их номерами???????????????

Стандартных - не припомню... Читайте файл в цикле, одновременно отсчитывая строки, сверяйте с нужным значением, если совпадает - сохраняйте куда-нибудь, например в массив.


-----
PostgreSQL DBA
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB