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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Формат POST запроса

Сообщения:  [1-10]    [11-20]  [21-23] 

 
 автор: Sfinks   (10.01.2005 в 22:37)   письмо автору
 
   для: cheops   (10.01.2005 в 22:23)
 

Ну, ет Вам виднее =))
Просто так написано в руководстве по PHP.
Кстати, гады... половину перевели, а половину - сиди, мучайся =))

   
 
 автор: cheops   (10.01.2005 в 22:23)   письмо автору
 
   для: Sfinks   (10.01.2005 в 21:43)
 

Тэг <? иногда переоределяют для использования в других Web-технологиях, а уж <?php точно никем не зарезрвирован, кроме того сразу видно, что это PHP :))), но вообще проблемы здесь маловероятны...
Ну преобразование типа интепретатору придётся осуществлять в обоих случаях, во-втором случае PHP сработает быстрее, но читабельность кода по сравнению с первым варианом ниже, а это скрость отладки и написания Web-приложения - сейчас лимитирующая стадия - это человек, поэтому писать код следует так, каким образом, чтобы его могли легко читать вы и другие люди.

   
 
 автор: Sfinks   (10.01.2005 в 21:43)   письмо автору
 
   для: cheops   (10.01.2005 в 21:33)
 

Большое спасибо =)))

А почему рекомендуется?

Кстати насчет "рекомендуется".... Я то учебник потихоньку продолжаю корректировать, так вот там очень часто используются варианты типа
echo "текст $var текст"
а рекомендуется писать
echo "текст ".$var." текст"
чтоб PHP не приходилось сто раз туда-сюда переводить строки в переменные и обратно и заниматься их "вычленением"....
Так вот такие оплошности исправлять?

   
 
 автор: cheops   (10.01.2005 в 21:33)   письмо автору
 
   для: Sfinks   (10.01.2005 в 15:21)
 

Очень не плохо и стиль хороший, не к чему придраться кроме <?, который рекомендуется писать полностью <?php :)))

   
 
 автор: Sfinks   (10.01.2005 в 15:21)   письмо автору
 
   для: 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">&nbsp;Команда:</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='&lt;ems:mms url="http://server/file.jpg"&gt;'> Корректное MMS: &lt;ems:mms url="http://server/file.jpg"&gt;<br>
          <INPUT TYPE="checkbox" NAME="m2" VALUE='&lt;ems:mms url="server/file.jpg"&gt;'> Некорректное MMS: &lt;ems:mms url="server/file.jpg"&gt;
        </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. Неплохо для новичка? =)))

   
 
 автор: cheops   (10.01.2005 в 12:12)   письмо автору
 
   для: Sfinks   (10.01.2005 в 02:56)
 

Формировать POST-запрос это песня - будте уверены, что запустить его для приведённого выше запроса едва ли удасться ...
Да PHP неможет менять HTML-форму в зависимости от введённых данных - так как форма у клиента, а PHP - на сервере, даже JavaScript это не подсилу... здесь наверно нужно будет пропускать данные через несколько форм... т.е. вводим число файлов - пергружаемся на другую форму в которой поля для этих файлов, хотя... тоже наверное не получится...

   
 
 автор: Sfinks   (10.01.2005 в 02:56)   письмо автору
 
   для: 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%&reg=%region%&txt=%voc%

   
 
 автор: cheops   (09.01.2005 в 23:19)   письмо автору
 
   для: 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 Не понятно что такое РЕГИОН и в каком параметре он должен передаваться...

   
 
 автор: Sfinks   (09.01.2005 в 20:14)   письмо автору
 
   для: 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!!!

   
 
 автор: Sfinks   (02.01.2005 в 12:44)   письмо автору
 
   для: cheops   (02.01.2005 в 12:40)
 

А, ну тада понятно =))
Я думаю ето все решит, но вывести не смогу, т.к. у меня MMS накрылось медным тазом =((((((((

Кстати, случайно не знаете, где найти прошивку на Alcatel 535? Я пол инета облазил =(( Не могу продолжать работу.

   

Сообщения:  [1-10]    [11-20]  [21-23] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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