Проблема с переменной в PHP @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 4 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Заголовок сообщения: Проблема с переменной в PHP
Сообщение Добавлено: 22 Январь 2008, 06:24:21 
Ситуация такова: с помощью библиотеки LDAP считываю поле userSID для пользователя в Active Directory, после чего преобразую эту гадостную octet string в ASCII HEX (A5F6.….). Замечаю, что некоторые SID-ы приобретают вид XX000000000, т.е. образуются хвостовые нули, которых быть не должно (сравнивал с оригинальным SID через ADSI Editor). Выясняется следующее: если в этой Octet String встречается "0х00", то PHP считает, что строка закончена, которая, не деле, имеет длину 16 байт. Короче: если PHP встречает 0х00 в переменной, то обрезает ее по эти самые нули. Как быть?

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 22 Январь 2008, 09:17:06 

Konyukhov писал(а):
Короче: если PHP встречает 0х00 в переменной, то обрезает ее по эти самые нули. Как быть?



Перекреститься.

Беру контрольный пример:

Код:
<?php

$text = "foo\x00bar";
echo $text;

?>


...и вижу, что PHP ничего не обрезает. Попробуй задать вопрос внятно и с фрагментом исходника, на котором наблюдается ошибка.
Konyukhov Муж.
новый человек
0
Сообщения: 166
Зарегистрирован: 10.12.06
Откуда: 89
Сообщение Добавлено: 22 Январь 2008, 16:47:00 
Crazy, очень смешно. Только пример не корректный у Вас. Значение objectGUID и objectSID из AD, возвращаемые функциями ldap_get_values, двоичные. Я обрабатывал полученные значения bin2hex(), и обнаруживал сплошные нули сразу же после появления 0x00. В общем, ситуацию спасла неприметная ldap_get_values_len, специально предназначенная для получения двоичных данных.

_________________
Лишь одно в моём кармане - беспонтовый пирожок
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 22 Январь 2008, 18:08:33 

Konyukhov писал(а):
Crazy, очень смешно.



Хочешь смешно -- сходи на концерт Петросяна.


Цитата:
Только пример не корректный у Вас.



Пример у меня -- корректный. Ты в курсе, что означает \0x00 ?


Цитата:
Значение objectGUID и objectSID из AD, возвращаемые функциями ldap_get_values, двоичные. Я обрабатывал полученные значения bin2hex(), и обнаруживал сплошные нули сразу же после появления 0x00. В общем, ситуацию спасла неприметная ldap_get_values_len, специально предназначенная для получения двоичных данных.



Это означает, что не "PHP что-то там обрезает", а конкретная функция ldap_get_values работает криво. Обращаю внимание на то, что в твоем исходном сообщении ничего не сказано о том, что ты вдруг решил использовать функцию ldap_get_values для работы с двоичными данными. Поэтому напоминаю: задавая вопрос нужно вместо публикации своих фантазий о мифических ошибках PHP показывать настоящий код, в котором замечено аномальное поведение.

Это я уже не говорю о том, что если тупо пойти в гугл и спросить про "php ldap_get_values truncate", то уже вторая ссылка дает правильный ответ на вопрос: https://pear.php.net/bugs/bug.php?id=2297

Так что, повторюсь, если хочешь смешно -- ходи на Петросяна. Хочешь решения проблем со скриптами -- действуешь по алгоритму:

1) Самостоятельно пойти в гугл и спросить
2) Внятно задать вопрос в форуме, показав проблеммный фрагмент кода.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 4 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100