|
|
|
|
|
для: cheops
(10.01.2005 в 22:23)
| | Ну, ет Вам виднее =))
Просто так написано в руководстве по PHP.
Кстати, гады... половину перевели, а половину - сиди, мучайся =)) | |
|
|
|
|
|
|
|
для: Sfinks
(10.01.2005 в 21:43)
| | Тэг <? иногда переоределяют для использования в других Web-технологиях, а уж <?php точно никем не зарезрвирован, кроме того сразу видно, что это PHP :))), но вообще проблемы здесь маловероятны...
Ну преобразование типа интепретатору придётся осуществлять в обоих случаях, во-втором случае PHP сработает быстрее, но читабельность кода по сравнению с первым варианом ниже, а это скрость отладки и написания Web-приложения - сейчас лимитирующая стадия - это человек, поэтому писать код следует так, каким образом, чтобы его могли легко читать вы и другие люди. | |
|
|
|
|
|
|
|
для: cheops
(10.01.2005 в 21:33)
| | Большое спасибо =)))
А почему рекомендуется?
Кстати насчет "рекомендуется".... Я то учебник потихоньку продолжаю корректировать, так вот там очень часто используются варианты типа
а рекомендуется писать
echo "текст ".$var." текст"
| чтоб PHP не приходилось сто раз туда-сюда переводить строки в переменные и обратно и заниматься их "вычленением"....
Так вот такие оплошности исправлять? | |
|
|
|
|
|
|
|
для: Sfinks
(10.01.2005 в 15:21)
| | Очень не плохо и стиль хороший, не к чему придраться кроме <?, который рекомендуется писать полностью <?php :))) | |
|
|
|
|
|
|
|
для: cheops
(10.01.2005 в 12:12)
| | А я-таки его сформировал и запустил!
Причем 1:1 с тем, что требовалось съэмулировать =))
Пришлось пойти по подсказанному Вами пути.... предобработки в конечном файле.
Вот посмотрите, пожалуйста =)) Очень интересно Ваше авторитетное мнение =))
Форма:
<table>
<form enctype="multipart/form-data" action="obyavy.php" method="POST">
<tr><td>Текст:</td>
<td><FIELDSET ТIТLЕ="Компоненты текста"><LEGEND ALIGN="left">Компоненты текста</LEGEND>
<LABEL FOR="kom"> Команда:</LABEL>
<SELECT name="kom" SIZE="1"><OPTION VALUE="b2b">b2b<OPTION VALUE="b2g">b2g<OPTION VALUE="g2b">g2b<OPTION VALUE="g2g">g2g<OPTION VALUE="rb2b">rb2b<OPTION VALUE="rb2g">rb2g<OPTION VALUE="rg2b">rg2b<OPTION VALUE="rg2g">rg2g</SELECT>
<LABEL FOR="txt">Текст:</LABEL>
<INPUT SIZE=54 TYPE="text" NAME="txt"><br>
<INPUT TYPE="checkbox" NAME="m1" VALUE='<ems:mms url="http://server/file.jpg">'> Корректное MMS: <ems:mms url="http://server/file.jpg"><br>
<INPUT TYPE="checkbox" NAME="m2" VALUE='<ems:mms url="server/file.jpg">'> Некорректное MMS: <ems:mms url="server/file.jpg">
</FIELDSET></td></tr>
<tr><td>PID:</td>
<td><FIELDSET ТIТLЕ="Идентификатор телефона"><LEGEND ALIGN="left">Идентификатор телефона</LEGEND>
<INPUT TYPE="radio" NAME="pid" VALUE="FGHTYU">FGHTYU<INPUT TYPE="radio" NAME="pid" VALUE="UIOPLK">UIOPLK<INPUT TYPE="radio" NAME="pid" VALUE="QWERTY">QWERTY<INPUT TYPE="radio" NAME="pid" VALUE="ASDFGH">ASDFGH<INPUT TYPE="radio" NAME="pid" VALUE="ZXCVBN">ZXCVBN
</FIELDSET></td></tr>
<tr><td>Файл 1</td><td><input size=71 type=file name=mms_0></td></tr>
<tr><td>Файл 2</td><td><input size=71 type=file name=mms_1></td></tr>
<tr><td>Файл 3</td><td><input size=71 type=file name=mms_2></td></tr>
<tr><td></td><td><input type="submit" value="Отправить"></td></tr>
</form></table>
|
А вот код предобработки:
<?
$_POST["txt"] = $_POST["kom"]." ".$_POST["txt"];
unset($_POST["kom"]);
if(isset($_POST["m1"]))
{
$_POST["txt"] = $_POST["txt"]." ".$_POST["m1"];
unset($_POST["m1"]);
}
if(isset($_POST["m2"]))
{
$_POST["txt"] = $_POST["txt"]." ".$_POST["m2"];
unset($_POST["m2"]);
}
for($i = 0; $i < 3; $i++)
{
if($_FILES["mms_".$i]["tmp_name"])
{
$handle = @fopen($_FILES["mms_".$i]["tmp_name"],"r");
if($handle)
{
$file = fread($handle,filesize($_FILES["mms_".$i]["tmp_name"]));
fclose($handle);
$handle = @fopen($_FILES["mms_".$i]["tmp_name"],"w");
if($handle)
{
stream_filter_append($handle,'convert.base64-encode');
fwrite($handle,$file);
fclose($handle);
}
}
$_POST["txt"] = $_POST["txt"].' <ems:mms url="'.$_FILES["mms_".$i]["name"].'">';
// Здесь getname - функция, заменяющая
// точку перед расширением на _
$ts = getname($_FILES["mms_".$i]["name"]);
$_FILES[$ts] = $_FILES["mms_".$i];
unset($_FILES["mms_".$i]);
}
else
unset($_FILES["mms_".$i]);
}
switch($_POST["pid"])
{
case "FGHTYU": $_POST["reg"] = "Нальчик"; break;
case "UIOPLK": $_POST["reg"] = "Астрахань"; break;
case "QWERTY": $_POST["reg"] = "Москва"; break;
case "ASDFGH": $_POST["reg"] = "СПБ"; break;
case "ZXCVBN": $_POST["reg"] = "Волгоград"; break;
}
$_POST["txt"] = base64_encode($_POST["txt"]);
$_POST["pid"] = base64_encode($_POST["pid"]);
$_POST["reg"] = base64_encode($_POST["reg"]);
?>
|
1. Какие нибудь нюансы могут быть?
2. Неплохо для новичка? =))) | |
|
|
|
|
|
|
|
для: Sfinks
(10.01.2005 в 02:56)
| | Формировать POST-запрос это песня - будте уверены, что запустить его для приведённого выше запроса едва ли удасться ...
Да PHP неможет менять HTML-форму в зависимости от введённых данных - так как форма у клиента, а PHP - на сервере, даже JavaScript это не подсилу... здесь наверно нужно будет пропускать данные через несколько форм... т.е. вводим число файлов - пергружаемся на другую форму в которой поля для этих файлов, хотя... тоже наверное не получится... | |
|
|
|
|
|
|
|
для: cheops
(09.01.2005 в 23:19)
| | Вы не поняли смысла.... Мне нужна динамическая форма, которая будет изменяться в зависимости от введенных данных!
Т.е. в строке <input size=71 type=file name=mms_0> параметру name должно присваиваться не mms_0, а отредактированное имя файла! Например если выбираешь файл c:\music\1.mp3, то должно быть name=1_mp3
И к тексту дописываться не <ems:mms url="mms_0">, а <ems:mms url="1.mp3"> и только после выбора файла.
Или средствами HTML это сделать невозможно?
Тогда как сгенерировать подобный запрос в PHP?
Да, согласен, в начале скрипта можно перекроить данные, полученные из статичной формы, но тогда где гарантия, что я буду тестировать код верным запросом?
P.S.: А регион присваивается переменной $reg.
Вы составили форму для варианта:
MASTER MMS SETURL http://domain/path?text=%*%&voc=%voc%&pid=%pid%
а у меня вариант
MASTER MMS SETURL http://domain/path?pid=%pid%®=%region%&txt=%voc% | |
|
|
|
|
|
|
|
для: Sfinks
(09.01.2005 в 20:14)
| | Можно воспользоваться следующей формой:
<table>
<form enctype='multipart/form-data' action=handler.php metod=POST>
<tr><td>Английский: </td><td><input size=71 type="text" name="text" value='Test <ems:mms url="mms_0">'></td></tr>
<tr><td>Русский: </td><td><input size=71 type="text" name="voc" value='Текст <ems:mms url="mms_0">'></td></tr>
<tr><td>Идентификатор телефона: </td><td><input size=71 type="text" name="pid" value=''></td></tr>
<tr><td>Регион: </td><td><input size=71 type="text" name="region" value=''></td></tr>
<tr><td>Файл 0</td><td><input size=71 type=file name=mms_0></td></tr>
<tr><td>Файл 1</td><td><input size=71 type=file name=mms_1></td></tr>
<tr><td>Файл 3</td><td><input size=71 type=file name=mms_1></td></tr>
<tr><td></td><td><input type="submit" value="Отправить"></td></tr>
</form>
</table>
|
Только параметры скорее всего придётся в самом начале скрипта кодировать самотоятельно. Т.е. осуществлять кодировку уже после того, как данные отправляются в обработчик handler.php
PS Не понятно что такое РЕГИОН и в каком параметре он должен передаваться... | |
|
|
|
|
|
|
|
для: cheops
(02.01.2005 в 12:40)
| | ЗДРАВСТВУЙТЕ =))
Такая вот ПРОБЛЕМА....
Я в HTML полный ноль, а тем более в работе с формами, а нужно оттестировать php'шку, которая обрабатывает POST-запрос описаный в начале темы. Причем обработка сложная и очень разветвленая (код на 500+ строк), поетому нужно съэмулировать запрос, максимально приближенный к реальному!
Я даже близко не представляю, как это сделать! Помогите пожалуйста?!
Я уточню, что из себя представляет этот запрос....
Во-первых, что должно быть на форме - пара полей для выбора файлов, поля для ввода ТЕКСТа, PID и РЕГИОНа, и кнопка "Отправить".
Значения полей PID и регион отправляются как есть в переменные $pid и $reg, а к тексту перед отправкой (для тестирования не важно где, пускай в конце) дописываются такие теги:
<ems:mms url="имя_файла_на_отправляющем_сервере"> -по 1 для каждого прикрепленного файла.
Полученный текст отправляется в переменную $txt.
Значения переменных $pid, $reg и $txt передаются в BASE64-закодированном виде.
Теперь, о том, как передаются файлы...
имя_файла_на_отправляющем_сервере -это, естесственно $_FILES["имя_переменной"]["name"];
причем (имя_переменной == имя_файла_на_отправляющем_сервере), только точка перед расширением заменяется на _
$_FILES["имя_переменной"]["tmp_name"] -я так понимаю, генерируется автоматически.
$_FILES["имя_переменной"]["type"] -если не само генерируется, то можно установить постоянным "image/jpeg", оттестирую на одном типе.
$_FILES["имя_переменной"]["size"] -не имеет значения, я ее не использую.
Т.е. для абстрактного файла "1.jpg" массив $_FILES выглядит так:
Array
(
[1_jpg] => Array
(
[name] => 1.jpg
[tmp_name] => /tmp/fhgjdmdlc
[type] => image/jpeg
[size] => 10426
[error] => 0
)
)
| Соответственно в конце текста должно быть дописано <ems:mms url="1.jpg">
И еще один нюанс - значения [name],[tmp_name],[type] передаются НЕ ЗАКОДИРОВАННЫМИ, а вот сам файл 1.jpg в /tmp/fhgjdmdlc сохраняется BASE64-закодированным =((
ОТ ТАКАЯ ВОТ БЕДА =((
ПОМОЖЕТЕ???
PLIIIZ!!! | |
|
|
|
|
|
|
|
для: cheops
(02.01.2005 в 12:40)
| | А, ну тада понятно =))
Я думаю ето все решит, но вывести не смогу, т.к. у меня MMS накрылось медным тазом =((((((((
Кстати, случайно не знаете, где найти прошивку на Alcatel 535? Я пол инета облазил =(( Не могу продолжать работу. | |
|
|
|
|