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

Форум PHP

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

 

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

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

тема: Нужна помощь!!! Запуск скрипта случайного вывода по sms!
 
 автор: XoLoD   (11.09.2004 в 22:47)
 
 

Я создал скрипт случайного вывода! Мне нужно чтобы при обращении к нему через смс с бионлайна он выдавал текст в определённом формате я точно не знаю в каком знаю тока что там чтото вроде этого Content-Type: text/plain; charset="windows-1251"
Content-Transfer-Encoding: base64 Помогите плиз

   
 
 автор: cheops   (11.09.2004 в 22:58)   письмо автору
 
   для: XoLoD   (11.09.2004 в 22:47)
 

Хм... а Билайн чей, у нас в Нижнем, эта строка выглядит
Content-Type: text/plain;
    charset="koi8-r"
Content-Transfer-Encoding: base64

т.е. сервера судя по всему разные. Эту строку я взял из sms которую мне абонент Билайн переслал на почту. Каким способом вы получаете sms в PHP-скрипте?

   
 
 автор: xolod   (12.09.2004 в 14:57)
 
   для: cheops   (11.09.2004 в 22:58)
 

В москве! если через смс послать текст на 684 например так url http://domain/1.txt то назад придёт то что в текстовом файле! а если обратится к скрипту то он должен выдать определённый текст в текстовом формате!

   
 
 автор: cheops   (12.09.2004 в 16:44)   письмо автору
 
   для: xolod   (12.09.2004 в 14:57)
 

Тогда не понятна проблема... Есть файл, допустим index.php в котором расположен гененрирующий случайное число скрипт, как я понял. Пусть файл расположен на сервере http://www.site.ru/, тогда отослав sms на 684 "http://www.site.ru/index.php" в ответ будет послан файл index.php, содержащий случайное число...

   
 
 автор: XoLoD   (12.09.2004 в 18:11)   письмо автору
 
   для: cheops   (12.09.2004 в 16:44)
 

Да должен послать случайное число а в ответ приходит : неправильный content-type ответа

   
 
 автор: cheops   (12.09.2004 в 18:27)   письмо автору
 
   для: XoLoD   (12.09.2004 в 18:11)
 

Хм... а какие пробовали заголовки посылать? Просто text/plain не катит? У вас же в общем одни цифры - кодировка не принципиальна.
<?php
header
("Content-Type: text/plain");
?>

И вообще, может быть у вас есть адресок с "рабочим" файлом? Ничего в теле самого файла полезного нет? Кстати, по адресу может находится любой файл или только определённого формата, скажем wml?

   
 
 автор: XoLoD   (12.09.2004 в 20:10)   письмо автору
 
   для: cheops   (12.09.2004 в 18:27)
 

Вот как выглядит мой файл!

<?
$quote = array(
1 => "text1",
2 => "text2",
3 => "text3",
4 => "text4",
5 => "text5",
6 => "text6",
7 => "text7",

);
srand ((double) microtime() * 1000000);
$randnum = rand(1,7);
echo"$quote[$randnum]";
?>
Теперь пример : емс картинки выглядят так <ems:picture width="72" height="14" hex="F87C07FFFFFDD9077FF03801FFFFC3B083B FE030007FFF81
F027DFD010001FFF00F09FDFA8280007FE0 0E61EEF50300001FC
00732F6FA028000078003047F7501C00000 0101FD7D7A03A01000
00A0FE3F7D07D0080000487F3EB603E0050 000343E9FBD06D006
80501A0F4FDA05680750EA0D0001E505700 3AA750EA4903"> если
этот текст просто вставить в текстовый файл и с мобилы в билайне послать текст url http://domain/этотфайл.txt то в ответ ридёт картинка размером 72х14 емс формата! файл можно любой лишбы формат получаемого текста был нужным!

   
 
 автор: Адоп Акробат   (12.09.2004 в 20:42)   письмо автору
 
   для: XoLoD   (12.09.2004 в 20:10)
 

А фото как у тебя отсылается???

   
 
 автор: XoLoD   (12.09.2004 в 20:44)   письмо автору
 
   для: Адоп Акробат   (12.09.2004 в 20:42)
 

Мне не нужно чтоб фото отсылалось! Мне нужен текст напрмер обратился к скрипту получил один анекдот ещё раз обратился получил другой!

   
 
 автор: Адоп Акробат   (12.09.2004 в 21:23)   письмо автору
 
   для: XoLoD   (12.09.2004 в 20:44)
 

ну а как у вас этот анектод отсынается???

   
 
 автор: cheops   (12.09.2004 в 20:51)   письмо автору
 
   для: XoLoD   (12.09.2004 в 20:10)
 

Хм... дурная мысль в голову закралась, а если нарисовать картинку средствами GDLib - в которой будет это самое случайное число и сунуть его в вывод... надо бы Дизайнера сюда направить.

   
 
 автор: XoLoD   (12.09.2004 в 21:01)   письмо автору
 
   для: cheops   (12.09.2004 в 20:51)
 

Какую картинку? Какое число?

   
 
 автор: cheops   (12.09.2004 в 22:02)   письмо автору
 
   для: XoLoD   (12.09.2004 в 21:01)
 

емс-картинку, в котором будут ваши строки.

   
 
 автор: XoLoD   (12.09.2004 в 23:04)   письмо автору
 
   для: cheops   (12.09.2004 в 22:02)
 

<?
header("Content-Type: text/plain");
header("Content-Transfer-Encoding: base64");
header("charset=koi8r");
$quote = array(
1 => "text1",
2 => "text2",
3 => "text3",
4 => "text4",
5 => "text5",
6 => "text6",
7 => "text7",

);
srand ((double) microtime() * 1000000);
$randnum = rand(1,7);
echo"$quote[$randnum]";
?>
Всё оказалось до смешного проще!

   
 
 автор: XoLoD   (12.09.2004 в 23:07)   письмо автору
 
   для: XoLoD   (12.09.2004 в 23:04)
 

K хакеру подходит ламер, протягивает исходник своей неработающей программы и спрашивает: - Где у меня ошибка? - В ДHK!!!

   
 
 автор: XoLoD   (12.09.2004 в 23:08)   письмо автору
 
   для: XoLoD   (12.09.2004 в 23:07)
 

WinERROR: Keyboard not detected. Press Enter to continue WinERROR: Ошибка записи программы ошибок записи WinERROR: WinERROR

   
 
 автор: XoLoD   (12.09.2004 в 23:09)   письмо автору
 
   для: XoLoD   (12.09.2004 в 23:08)
 

Что такое DOS?- Это когда девушка в чате с одним парнем разговаривает, а другой своей очереди ждет.- Что такое Linux?- Это когда девушка в чате одновременно с двумя парнями разговаривает.- Что такое Windows? - Это когда девушка в чате с двумя парнями разговаривает, и первому посылает то, что хотела сказать второму

   
 
 автор: XoLoD   (13.09.2004 в 01:05)   письмо автору
 
   для: XoLoD   (12.09.2004 в 23:09)
 

У меня новая проблема!!! Есть скрипт !
<?
header
("Content-Type: text/plain");
header("Content-Transfer-Encoding: base64");
header("charset=koi8r");
$quote = array(
1  => "text1",
2  => " text2",
);
srand ((double) microtime() * 1000000);
  
$randnum rand(1,2);
echo
"$quote[$randnum]";
?>

он выдаст при обращении к нему текстовый файл с текстом text1 или text2, а как мне сделать так если я напишу в скрипте :
<?
header
("Content-Type: text/plain");
header("Content-Transfer-Encoding: base64");
header("charset=koi8r");
$quote = array(
1  => "1<ems:picture width="72" height="14" hex="F87C07FFFFFDD9077FF03801FFFFC3B083B FE030007F
FF8F027DFD010001FFF00F09FDFA8280007 FE00E61EEF503
00001FC0732F6FA028000078003047F7501 C000000101FD7
D7A03A010000A0FE3F7D07D0080000487F3 EB603E0050000
343E9FBD06D0068001A0F4FDA05680750EA 0D0001E505700
3AA750EA4903
">

2  => "
2<ems:picture width="72" height="14" hex="F87C07FFFFFDD9077FF03801FFFFC3B083B FE030007FF
F8F027DFD010001FFF00F09FDFA8280007F E00E61EEF503000
01FC0732F6FA028000078003047F7501C00 0000101FD7D7A03
A010000A0FE3F7D07D0080000487F3EB603 E0050000343E9FB
D06D0068001A0F4FDA05680750EA0D0001E 5057003AA750EA4
903"
>

);
srand ((double) microtime() * 1000000);
  
$randnum rand(1,2);
echo
"$quote[$randnum]";
?>

и при обрашении к нему ондолжен выдать:
1<ems:picture width="72" height="14" hex="F87C07FFFFFDD9077FF03801FFFFC3B083B FE030007FFF
8027DFD010001FFF00F09FDFA8280007FE0 0E61EEF50300001
FC032F6FA028000078003047F7501C00000 0101FD7D7A03A010
000A0E3F7D07D0080000487F3EB603E0050 000343E9FBD06D0
068001AF4FDA05680750EA0D0001E505700 3AA750EA4903">
или соответственно:
2<ems:picture width="72" height="14" hex="F87C07FFFFFDD9077FF03801FFFFC3B083B FE030007FF
F8027DFD010001FFF00F09FDFA8280007FE 00E61EEF5030000
1FC032F6FA028000078003047F7501C0000 00101FD7D7A03A0
10000A0E3F7D07D0080000487F3EB603E00 50000343E9FBD06
D0068001AF4FDA05680750EA0D0001E5057 003AA750EA4903">

   
 
 автор: cheops   (13.09.2004 в 09:22)   письмо автору
 
   для: XoLoD   (13.09.2004 в 01:05)
 

Ну... так и пишите только либо внешние кавычки сделайте одинарные
<?php
$quote 
= array( 
1  => '<ems:picture width="72" height="14" hex="F87C07FFFFFDD9077FF03801FFFFC3B083B FE030007F 
FF8F027DFD010001FFF00F09FDFA8280007 FE00E61EEF503 
00001FC0732F6FA028000078003047F7501 C000000101FD7 
D7A03A010000A0FE3F7D07D0080000487F3 EB603E0050000 
343E9FBD06D0068001A0F4FDA05680750EA 0D0001E505700 
3AA750EA4903">'
);
?>

Либо внутренние экранируйте
<?php
$quote 
= array( 
1  => "<ems:picture width=\"72\" height=\"14\" hex=\"F87C07FFFFFDD9077FF03801FFFFC3B083B FE030007F 
FF8F027DFD010001FFF00F09FDFA8280007 FE00E61EEF503 
00001FC0732F6FA028000078003047F7501 C000000101FD7 
D7A03A010000A0FE3F7D07D0080000487F3 EB603E0050000 
343E9FBD06D0068001A0F4FDA05680750EA 0D0001E505700 
3AA750EA4903\">"
);
?>

   
 
 автор: XoLoD   (13.09.2004 в 13:08)   письмо автору
 
   для: cheops   (13.09.2004 в 09:22)
 

А как это: при выводе на экран в браузер проверять результат нужно глядя в "view source", потому что xmlный тег будет принят за HTML и не выведется на экран

   
 
 автор: XoLoD   (13.09.2004 в 13:35)   письмо автору
 
   для: XoLoD   (13.09.2004 в 13:08)
 

И вот ещё такой вопросик! Как сделать чтобы не случайно было а попорядку какбы циклически 1->2->3->4->1

   
 
 автор: cheops   (13.09.2004 в 15:49)   письмо автору
 
   для: XoLoD   (13.09.2004 в 13:35)
 

Хм... HTTP не сохраняет состояния поэтому определить чей телефон (браузер) обращается к скрипту нельзя. Поэтому в результате 1 просмотрит один, 2 другой, 3 ещё кто-то и ожидаемого эффекта не будет.

   
 
 автор: XoLoD   (13.09.2004 в 20:51)   письмо автору
 
   для: cheops   (13.09.2004 в 15:49)
 

Да я понял суть, но ведь возможно так при любом обращении просмотрится 1 при следующем 2 и так далее просто при случайном выводе один и тотже текст может выпасть 2 или 3 раза подряд и допустим человек же платит за исходящее смс и ему будет неприятно если он 3 раза получит одно и тоже а чтобы непопадалось очень быстро я бы сделал количество большое!

   
 
 автор: cheops   (13.09.2004 в 23:04)   письмо автору
 
   для: XoLoD   (13.09.2004 в 20:51)
 

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

PS Маньяк, который вместо того, чтобы купить газету с анекдотами за 30 центов добъётся повторения анекдота от вашего скрипта - потерпит :)))

   
 
 автор: XoLoD   (14.09.2004 в 05:16)   письмо автору
 
   для: cheops   (13.09.2004 в 23:04)
 

Значит вы просто незнакомы с сервисом MASTER на BeeOnline!!! Это свой мир и за газетой там никто не попрётся а анекдотов я уже забил 3000 штук! Так не подскажите на примере как это можно воплотить! просто нужно чтобы при любом обращении к скрипту при следующем обращении он выдавал следующий по порядку!
мля сам запутался!

А вот то что получилось со случайным числом! Если у вас есть телефон билай пошлите смс на 684 с текстом: url http://xolod.hoha.ru/ems.php
И посмотрите что пришло! если послать ещё раз придёт другое!

   
 
 автор: cheops   (14.09.2004 в 10:05)   письмо автору
 
   для: XoLoD   (14.09.2004 в 05:16)
 

В Нижнем меня Билайн послал: "Сообщение не обработано" :)))

   
 
 автор: XoLoD   (14.09.2004 в 11:23)   письмо автору
 
   для: cheops   (14.09.2004 в 10:05)
 

Меня тоже послал но вчера всё работало!!! Вот переделал вопервых надо настроить телефон для работы в 684 это бесплатно позвоните по номерам 06849908 телефон должен поддерживать емс!!! для того чтобы приходили емс картинки надо позвонить для samsung и nokia 068499202 для siemens с поддержкой емс 068499204 и с емс 068499203 для остальных 068499202 и для motorola 068499205! а после этого послать на 684 текст [b] url http://xolod.hoha.ru/anima.php


Так не поможете сделать скриптик! Я думаю что базу с анекдотами можно вынести в отдельный файл!!!

   
 
 автор: cheops   (14.09.2004 в 12:33)   письмо автору
 
   для: XoLoD   (14.09.2004 в 11:23)
 

Получил кучу картинок... :))) С ними чего делать? Просто на них смотреть :)))

Организовать последовательный вывод сохраняя имя предыдущей позиции в файл, как Дизайнер писал: для этого можно завести файл index.txt в котором следует хранить текущую позицию (в начале путь будет 1)
<?php
// Пусть имеется массив с 3000 анекдотов
$quote = array(...);
// имя файла
$filename "index.txt";
// Открываем файл, для того, чтобы узнать текущую позицию
$file fopen($filename"r"); 
// читаем его содержимое в буффер 
$index fread($filefilesize($filename)); 
// закрываем файл 
fclose($file); 
$pos = (int)$index 1;
// Проверяем не происходит ли выход за границы массива
if($pos>count($quote)) $pos 1;
// Выводим анекдот с позицией $pos
echo $quote[$pos];
// Перезаписываем файл index.txt
$file fopen($filename"w"); 
// Помещаем в файл index.txt новую позицию, увеличенную на 1
fwrite($file,$pos);
// закрываем файл 
fclose($file); 
?>


PS Но, ИМХО решение со случайным числом элегантнее и эффективнее. Современные генераторы случайных чисел достаточно равномерные, т.е. выборка будет происходить по всем элементам массива с практически одинаковой вероятностью.

   
 
 автор: XoLoD   (14.09.2004 в 13:48)   письмо автору
 
   для: cheops   (14.09.2004 в 12:33)
 

Спасибо огромное!!! То что и хотел!
Мне интересно а возможноли осуществить такое с мобилы посылают текст на скрипт он приняв текст записывает его в файл каталог и выдаёт обратно чтото типа: Ваш текст принят Спасибо! и статистику показывает скоко всего текста в каталоге!

   
 
 автор: cheops   (14.09.2004 в 14:28)   письмо автору
 
   для: XoLoD   (14.09.2004 в 13:48)
 

Хм... через 684 навряд ли, так как он, судя по всему просто загружает страницу и отправляет ответ в виде sms... Может через WAP как можно, но с WAP ещё работать не приходилось...

   
 
 автор: XoLoD   (14.09.2004 в 17:20)   письмо автору
 
   для: cheops   (14.09.2004 в 14:28)
 

Както можно я видел чтото подобное! там любой пользователь посылает смс формата master imya kartinka и отсылает на 684 просто на мастер имя ставится ссылка на скрипт и эта картинка добавляется в общюю базу потом любой может обратиться к этой базе и иму придёт картинка наподобии как у меня просто я их сам добавляю!

   
 
 автор: cheops   (14.09.2004 в 17:47)   письмо автору
 
   для: XoLoD   (14.09.2004 в 17:20)
 

Скорее всего пчёлы сами такой сервис предоставляют, они то с текстом из sms что хочешь сделают. Конечно можно через параметр передавать
index.php?id=всё%20прогрессивное%20человечество

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

   
 
 автор: XoLoD   (14.09.2004 в 18:03)   письмо автору
 
   для: cheops   (14.09.2004 в 17:47)
 

Да я знаю точно как передаётся есть услуга мастерчат так там вот так:
 index.php?param1=%voc%&id=%pid%&nick=%nick%&master=imyamastera

Вот voc и есть перекодировка транслита в русские буквы!
Погляди в файлик там инструкция по созданию mastera

   
 
 автор: cheops   (14.09.2004 в 19:45)   письмо автору
 
   для: XoLoD   (14.09.2004 в 18:03)
 

Хм... давайте новую тему заведём, а то эта слишком длинная. Я её назову "Сервис MASTER от Beeline"

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=315&page=1

   
 
 автор: glsv (Дизайнер)   (13.09.2004 в 22:45)   письмо автору
 
   для: XoLoD   (13.09.2004 в 13:35)
 

Тогда нужно где то вести учет отосланным sms. Например, вы сохраняете в файл на сервере индекс отосланного сообщения. И перед каждой отправкой читаете переменную из этого файла, увеличиваете на единицу и отсылаете. Ну и естественно, проверяете чтобы значение переменной не вышло за пределы массива.
Но, cheops, наверное, прав. Это не решит задачу. Мне кажется более правильный путь – увеличивать число элементов в массиве.

   
 
 автор: cheops   (12.09.2004 в 20:59)   письмо автору
 
   для: XoLoD   (12.09.2004 в 20:10)
 

Похоже дело в <ems:picture, сервер сам определяет Content и если он отличен от wml - просто отбрасывает...
Попробуйте на всякий случай заголовок
<?php
header
("Content-type: text/vnd.wap.wml");
// А echo"$quote[$randnum]"; разместите между тэгами
<wml>
  <
card id="home">
    echo
"$quote[$randnum]";
  </
card>
</
wml>
?>

Хотя сомнения меня берут, что это поможет...

   
Rambler's Top100
вверх

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