Заголовок сообщения: Проблема с переменной в 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, очень смешно. Только пример не корректный у Вас. Значение objectGUID и objectSID из AD, возвращаемые функциями ldap_get_values, двоичные. Я обрабатывал полученные значения bin2hex(), и обнаруживал сплошные нули сразу же после появления 0x00. В общем, ситуацию спасла неприметная ldap_get_values_len, специально предназначенная для получения двоичных данных.
_________________ Лишь одно в моём кармане - беспонтовый пирожок
Пример у меня -- корректный. Ты в курсе, что означает \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) Внятно задать вопрос в форуме, показав проблеммный фрагмент кода.
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.