Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.12.2005, 20:08
mixey_lv вне форума Посмотреть профиль Отправить личное сообщение для mixey_lv Найти все сообщения от mixey_lv
  № 1  
Ответить с цитированием
mixey_lv
 
Аватар для mixey_lv

Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
По умолчанию [XML] file_get_contents("php://input") VS file("my.xml")

Код:
<?php
$recip = "my_mail@gmail.com";
$document = file("my.xml");
// ************ ТУТ ПРОБЛЕМА ***********
//$document = file_get_contents("php://input");
/// ************ ТУТ ПРОБЛЕМА ***********
// headers
$headers  = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "X-Priority: 3\n";
$headers .= "X-MSMail-Priority: Normal\n";
$headers .= "X-Mailer: php\n";
$headers .= "From: do_not_reply@domain.com";
// contact
$client_name;
$client_surname;
$client_phone;
$client_mail;
$client_address;
// arrays
$window_widths = array();
$window_heights = array();
$window_color = array();
$window_quant = array();
$window_acc = array();

$count = 0;

function opening_element($parser, $element, $attributes) {
  global $window_widths, $window_heights, $window_color, $window_quant,  $window_acc;
  global $client_name, $client_surname, $client_phone, $client_mail, $client_address;
  ///
  if ($element == "order"){
	$client_name = $attributes["client_name"];
	$client_surname = $attributes["client_surname"];
	$client_phone = $attributes["client_phone"];
	$client_mail = $attributes["client_mail"];
	$client_address = $attributes["client_address"];
	}  
  if ($element == "window"){
	$window_heights[] = $attributes["window_height"];
	$window_widths[] = $attributes["window_width"];
	$window_color[] = $attributes["window_color"];
	$window_quant[] = $attributes["window_quant"];
	$window_acc[] = $attributes["window_acc"];
	}
}

function closing_element($parser, $element) {
}

function character_data($parser, $data) {
}

$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($parser, "opening_element", "closing_element");
xml_set_character_data_handler($parser, "character_data");
//******* Next Line is Nr. 58
foreach ($document as $line) {
  xml_parse($parser, $line);
}

xml_parser_free($parser);      
$msg = str_replace("\r", "\n", $msg);
$sender = $_SERVER[REMOTE_ADDR];
$msg = "<b>Contact form send by: <br> Name : $client_name <br> Surname : $client_surname <br> Phone : $client_phone <br> Email: $client_mail <br> Address: $client_address</b> <br><br> Order:<br>";
$msg.="<tr>
    <td>Nr.</td>
    <td>1. Width x Height</td>
    <td>2. Width x Height</td>
    <td>3. Width x Height</td>
    <td>Color</td>
    <td>Accessories</td>
    <td>Quantaty</td>
  </tr>";
$total_w=count($window_widths);
	for ($i = 0; $i < $total_w; $i++) {
	$msg.="<tr>
    <td width=\"25\">$i</td>
    <td>$window_widths[$i] x $window_heights[$i]</td>
    <td>$window_widths[$i] x $window_heights[$i]</td>
    <td>$window_widths[$i] x $window_heights[$i]</td>
    <td>$window_color[$i]</td>
    <td>$window_acc[$i]</td>
    <td>$window_quant[$i]</td>
 	</tr>";
}
$msg.="<br>Sender's IP: $sender";

mail($recip, "Order form", $msg, $headers);
?>
Люди добрые выручите пожалуйста.
Этот скрипт работает абсолютно верно когда использую $document = file("my.xml"); А когда $document = file_get_contents("php://input"); (Передаю ХМЛ из Флэша) тогда выдает такую ошибку:
Цитата:
Warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/test/httpdocs/send_order.php on line 58
Как сделать так чтоб он парсил ХМЛ который пришел из Флэша?
Спасибо.
__________________


Старый 05.12.2005, 12:21
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 2  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
Ошибка в большей части случаев появляется в случае, когда перменная пуста (не массив, если точнее).

А ты уверен, что в input потоке у тебя что-то есть ? Сделай var_dump($document);

Чем не угодили $_GET и $_POST ? Зачем потоки пользовать, если все, что надо уже существует ?
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 05.12.2005, 13:45
mixey_lv вне форума Посмотреть профиль Отправить личное сообщение для mixey_lv Найти все сообщения от mixey_lv
  № 3  
Ответить с цитированием
mixey_lv
 
Аватар для mixey_lv

Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
В конечном итоге домучал...вот что у меня вышло, надеюсь кому-нибудь пригодится... только под свои нужды исправить чуток
Код:
<?php
$recip = "you_mail@mail.com";
$headers  = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "X-Priority: 3\n";
$headers .= "X-MSMail-Priority: Normal\n";
$headers .= "X-Mailer: php\n";
////
#$window_heights = array();
global $client_name, $client_surname, $client_phone, $client_mail, $client_address, $client_comments;
function startElement($parser, $name, $attrs) {
	global $client_name, $client_surname, $client_phone, $client_mail, $client_address, $client_comments;
	global $window_heights, $window_widths, $window_color, $window_acc, $window_quant, $window_profile, $window_id, $window_widths2, $window_widths3;
	if ($name == "ORDER"){
		$client_name = $attrs["CLIENT_NAME"];
		$client_surname = $attrs["CLIENT_SURNAME"];
		$client_phone = $attrs["CLIENT_PHONE"];
		$client_mail = $attrs["CLIENT_MAIL"];
		$client_address = $attrs["CLIENT_ADDRESS"];
		$client_comments = $attrs["CLIENT_COMMENTS"];
		#echo "name: <b>".$client_name."</b><br>";
		#echo "surname: <b>".$client_surname."</b><br>";
		#echo "phone: <b>".$client_phone."</b><br>";
		#echo "mail: <b>".$client_mail."</b><br>";
		#echo "address: <b>".$client_address."</b><br>";
	}
	if ($name == "WINDOW"){
		$window_heights[] = $attrs["WINDOW_HEIGHT"];
		$window_widths[] = $attrs["WINDOW_WIDTH"];
		$window_color[] = $attrs["WINDOW_COLOR"];
		$window_quant[] = $attrs["WINDOW_QUANT"];
		$window_acc[] = $attrs["WINDOW_ACC"];
		$window_profile[] = $attrs["WINDOW_PROFILE"];
		$window_id[] = $attrs["WINDOW_ID"];
		
		/////////////////
		$window_heights2[] = $attrs["WINDOW_HEIGHT2"];
		$window_widths2[] = $attrs["WINDOW_WIDTH2"];
		////////////////
		$window_heights3[] = $attrs["WINDOW_HEIGHT3"];
		$window_widths3[] = $attrs["WINDOW_WIDTH3"];
		#echo "width: <b>".$window_widths[0]."</b><br>";
		#echo "height: <b>".$window_heights[0]."</b><br>";
		#echo "color: <b>".$window_color[0]."</b><br>";
		#echo "acc: <b>".$window_acc[0]."</b><br>";
		#echo "quant: <b>".$window_quant[0]."</b><br>";
	}
	echo "<br/>";
} 
 
function endElement($parser, $name) { 
    //echo "[/$name]<br/>"; 
} 
 
function characterData($parser, $text) { 
    if (trim($text)<>""){
    	echo "$text<br/>"; 
    }
} 
 
//$data= $GLOBALS["HTTP_RAW_POST_DATA"];
$data= file_get_contents("php://input");
 
$xml_parser = xml_parser_create(); 
xml_set_element_handler(       $xml_parser, "startElement", "endElement"); 
xml_set_character_data_handler($xml_parser, "characterData"); 
 
if (!xml_parse($xml_parser, $data, true )) 
     die("XML error: xml_error_string(xml_get_error_code($xml_parser)) 
             at line xml_get_current_line_number($xml_parser))" ); 
xml_parser_free($xml_parser);
$headers .= "From: $client_mail";
//
$mailbody = "<img src=\"http://g.delfi.lv/r/h/logo.gif\">
<table width=\"650\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
    <td bgcolor=\"#000000\"><table width=\"650\" border=\"0\" cellspacing=\"1\" cellpadding=\"5\">
      <tr bgcolor=\"#FFFFFF\">
        <td width=\"70\"><div align=\"center\">Name:</div></td>
        <td>".$client_name."</td>
        <td width=\"70\"><div align=\"center\">Surname:</div></td>
        <td>".$client_surname."</td>
      </tr>
      <tr bgcolor=\"#FFFFFF\">
        <td width=\"70\"><div align=\"center\">Phone:</div></td>
        <td>".$client_phone."</td>
        <td width=\"70\"><div align=\"center\">E-mail:</div></td>
        <td>".$client_mail."</td>
      </tr>
      <tr bgcolor=\"#FFFFFF\">
        <td width=\"70\"><div align=\"center\">Address:</div></td>
        <td colspan=\"3\">".$client_address."</td>
        </tr>
		<tr bgcolor=\"#FFFFFF\">
        <td width=\"70\">Comments:</td>
        <td colspan=\"3\">".$client_comments."</td>
      </tr>
    </table></td></tr>
</table><br><br>
<table width=\"650\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
    <td bgcolor=\"#000000\"><table width=\"650\" border=\"0\" cellspacing=\"1\" cellpadding=\"5\">
      <tr bgcolor=\"#FFFFFF\">
        <td width=\"30\"><div align=\"center\">Nr.</div></td>
        <td width=\"40\"><div align=\"center\">type</div></td>
        <td><div align=\"center\">1. WxH </div></td>
        <td><div align=\"center\">2. WxH </div></td>
        <td><div align=\"center\">3 WxH </div></td>
        <td width=\"60\"><div align=\"center\">Profile</div></td>
        <td width=\"60\"><div align=\"center\">Color</div></td>
        <td width=\"95\"><div align=\"center\">Accessories</div></td>
        <td width=\"45\"><div align=\"center\">Quant</div></td>
      </tr>";
$total_w=count($window_widths);
for ($i = 0; $i < $total_w; $i++) {
	$mailbody.="      <tr bgcolor=\"#FFFFFF\">
        <td><div align=\"center\">".$i."</div></td>
        <td><div align=\"center\">".$window_id[$i]."</div></td>
        <td>
          <div align=\"center\">
            <table width=\"90%\"  border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
              <tr>
                <td><div align=\"center\">".$window_widths[$i]."</div></td>
              </tr>
              <tr>
                <td><div align=\"center\">x</div></td>
              </tr>
              <tr>
                <td><div align=\"center\">".$window_heights[$i]."</div></td>
              </tr>
            </table>
          </div></td>
        <td><div align=\"center\">";
			if (!$window_widths2[$i]==""){
              $mailbody .="<table width=\"90%\"  border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
            <tr><td><div align=\"center\">".$window_widths2[$i]."</div></td>
            </tr>
            <tr>
              <td><div align=\"center\">x</div></td>
            </tr>
            <tr>
              <td><div align=\"center\">".$window_heights[$i]."</div></td>
            </tr>
          </table>";
		}
        $mailbody .= "</div></td><td><div align=\"center\">";
			if (!$window_widths3[$i]==""){
              $mailbody .="<table width=\"90%\"  border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
            <tr><td><div align=\"center\">".$window_widths2[$i]."</div></td>
            </tr>
            <tr>
              <td><div align=\"center\">x</div></td>
            </tr>
            <tr>
              <td><div align=\"center\">".$window_heights[$i]."</div></td>
            </tr>
          </table>";
		}
        $mailbody .= "</div></td>
        <td><div align=\"center\">".$window_profile[$i]."</div></td>
        <td><div align=\"center\">".$window_color[$i]."</div></td>
        <td><div align=\"center\">".$window_acc[$i]."</div></td>
        <td><div align=\"center\">".$window_quant[$i]."</div></td>
      </tr>";
}
$mailbody .= "</table></td>
  </tr>
</table>
<br><br>
<hr align=\"left\" width=\"650\">
<br><b>Order was made on ".date("l, d, F")." at ".date("H:i")."</b>"; 
//
$subject = $client_name." ".$client_surname." is intrested, how much does it cost?";
mail($recip, $subject, $mailbody, $headers); 
echo '&send_result=sent&';
?>
__________________


Создать новую тему Ответ Часовой пояс GMT +4, время: 21:08.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:08.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.