Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 21:23 07.07.25 
Компютри и Интернет
   >> PHP
*Кратък преглед

Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема Двоични данни към сървъра (octet-bynary)нови  
Автор:) (Нерегистриран)
Публикувано14.12.06 21:10



Искам да изпратя от браузъра към сървъра двоични octet-stream данни (за проба, с някаква бъдеща цел)

В примера по долу, когато използвам Content-Type=application/x-www-form-urlencoded всичко е ОК - резултат >11111<. Когато използвам Content-Type=application/octet-stream - резултата е ><. Параметрите които трябва да POST-вам са двоични и мисля, че трябва да използвам Content-Type=application/octet-stream.
Моля, кайете къде греша!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<p>
<script language="javascript">
<!--
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/plain/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
function addComment(comment){
if (!http_request){
alert('Не може да определи инстанцията за съответния браузър');
return false;
}
http_request.open('POST', 'comments.php', true);
http_request.setRequestHeader('Content-Type','application/octet-stream');
// http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
http_request.onreadystatechange = sendCom;
http_request.send("action=add&comment="+comment);

function sendCom(){
if (http_request.readyState == 4) {
if (http_request.status == 200){
if (http_request.responseText==comment)
alert(comment);
else
alert('>'+http_request.responseText+'<');
} else {
alert('Има проблем със заявката!');
}
}
}
}

-->
</script>

<input type="button" name="Button" value="Button" onclick="addComment(11111)"/>
</p>
<div id="message"></div>
</body>
</html>

а това е пхп-то:
<?php

if(isset($_POST['comment'])){
$param = $_POST['comment'];
echo ($param);
}
?>




Тема Re: Двоични данни към сървъра (octet-bynary)нови [re: :)]  
АвторVasko (Нерегистриран)
Публикувано15.12.06 10:59



az ne vijdam ni6to dvoi4no da pra6ta6



Тема Така е или защото аз не разбирам, или защото ти ненови [re: Vasko]  
Автор:) (Нерегистриран)
Публикувано15.12.06 14:11



Така е или защото аз не разбирам, или защото ти не разбираш :)

Виж, аз не съм сигурен, как се изпращат двоични данни, но предполагам, че и един стринг, изпратен по подходящ начин, може да се интерпретира като двоични данни.
Та мисълта ми беше, първо да успея да прехвърля стринг, като двоични данни, а след това да се пуйча :)



Тема Re: Двоични данни към сървъра (octet-bynary)нови [re: :)]  
АвторPenguin (Нерегистриран)
Публикувано16.12.06 04:49



Ако данните ти са octet/binary, то няма как PHP-тo ги раздели по променливи и да напълни $_POST масива. Така че е съвсем очаквано масива да е празен :-)



Тема Логично е, и как се постъпва в такъв случей?нови [re: Penguin]  
Автор:) (Нерегистриран)
Публикувано16.12.06 12:17



Логично е, и как се постъпва в такъв случей?
Може би има механизъм за работа със стриймове, без да се ползват файлове?



Тема Re: Двоични данни към сървъра (octet-bynary)нови [re: :)]  
Автор edembg (Ученик)
Публикувано16.12.06 13:15



Мисля, че броузерите имат защита и не изпълняват форми с Content-Type=application/octet-stream. Мисля, че може да изпратиш нужните ти данни като масив или обект, предварително сериализиран. Има javascript сериализатори. Потърси и пробвай с такъв.

Бух ти препоръчал да изтеглиш това: http://pear.php.net/package/HTML_AJAX

Има добри примери.

Успех

И най-ярките личности си плащат тока.


Тема Re: Логично е, и как се постъпва в такъв случей?нови [re: :)]  
АвторPenguin (Нерегистриран)
Публикувано16.12.06 21:44



Според мен ако ползваш application/octet-stream, то трябва сам да си парсваш данните. Предполагаш че $HTTP_RAW_POST_DATA е инициализирана, така че си я раздели сам на променливи.



Тема Re: Двоични данни към сървъра (octet-bynary)нови [re: :)]  
Авторpkostov (Нерегистриран)
Публикувано17.12.06 00:50



Pravilniat header e : multipart/form-data

Zashtoto izpashtash razlitchni vidove informatzii kqm servera ... Povetche informatzii na tozi adres :
http://www.php.net/manual/en/features.file-upload.php#features.file-upload.post-method



Тема Re: Двоични данни към сървъра (octet-bynary)нови [re: pkostov]  
Автор edembg (Ученик)
Публикувано17.12.06 10:05



AJAX технологията не позволява file upload от съображения за сигурност. Няма начин да се премахне зщитата с javascript.

По принцип си прав, но с AJAX трябва да се ползват трикове. Най-разпространеният е да се направи форма в iframe и да се submit-ва като обикновена форма.

И най-ярките личности си плащат тока.


Тема Re: Логично е, и как се постъпва в такъв случей?нови [re: Penguin]  
Автор VCG (:))
Публикувано17.12.06 17:03



За да използвам $HTTP_RAW_POST_DATA ми се наложи да променя php.ini: always_populate_raw_post_data = On (може и да е грешка?).
Когато се използва application/octet-stream - $HTTP_RAW_POST_DATA е инициализирана, но като използвам multipart/form-data не е.
Използвам примера от темата но с JS изпращам:
http_request.send(0x20+0x41).
PHP-то ми е :

<? 

if (isset($GLOBALS['HTTP_RAW_POST_DATA'])){
$theinfo= $GLOBALS['HTTP_RAW_POST_DATA'];
echo ($theinfo);
} else {
echo 'No';
}
?>

резултата е 97, а аз очаквам "празно място"+"а".
Явно, JS не сумира като стрингове кодовете на символите.
Как да си тествам примера?




Страници по тази тема: 1 | 2 | 3 | (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.