Перекодировать слово

254
27 сентября 2017, 11:52

Добрый день, я новичок, у меня есть код, который подключается к LDAP и берет оттуда данные и отображает в браузере. Но как только натыкается на русские названия, скрипт не работает. Вот пример той базы, в которой попадается русское название:

$ldaptree    = "OU=Отделы,OU=Office,DC=bam,DC=loc";

Как перекодировать "Отделы", что бы скрипт считал всё правильно? Если я убираю OU=Отделы, то код работает. Если есть возможность подскажите, как вообще сделать так что бы все русские названия распознавались правильно во всем PHP сценарии. У меня сейчас вначале файла стоят вот такие две строчки:

<?php
error_reporting(-1);
header('Content-Type: text/html; charset=Windows-1251');

благодаря этому у меня хоть русские названия стали правильно отображаться в браузере, а вот считать скрипт русские названия по прежнему не может. Может всё вообще просто решается. Спасибо.

Вот скрипт:

<?php
error_reporting(-1);
header('Content-Type: text/html; charset=Windows-1251');
set_time_limit(30);
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set('display_errors',1);
// config
$ldapserver = 'XXXXX';
$ldapuser      = 'XXXXX';  
$ldappass     = 'XXXXX';
$ldaptree    = "OU=Отделы,OU=Office,DC=bam,DC=loc";
// connect 
$ldapconn = ldap_connect($ldapserver) or die("Could not connect to LDAP server.");
if($ldapconn) {
    // binding to ldap server
    $ldapbind = ldap_bind($ldapconn, $ldapuser, $ldappass) or die ("Error trying to bind: ".ldap_error($ldapconn));
    // verify binding
    if ($ldapbind) {
        echo "LDAP bind successful...<br /><br />";

        $result = ldap_search($ldapconn,$ldaptree, "(cn=*)") or die ("Error in search query: ".ldap_error($ldapconn));
        $data = ldap_get_entries($ldapconn, $result);
        // SHOW ALL DATA
        echo '<h1>Dump all data</h1><pre>';
        print_r($data);    
        echo '</pre>';

        // iterate over array and print data for each entry
        echo '<h1>Show me the users</h1>';
        for ($i=0; $i<$data["count"]; $i++) {
            //echo "dn is: ". $data[$i]["dn"] ."<br />";
            echo "User: ". $data[$i]["cn"][0] ."<br />";
            if(isset($data[$i]["mail"][0])) {
                echo "Email: ". $data[$i]["mail"][0] ."<br /><br />";
            } else {
                echo "Email: None<br /><br />";
            }
        }
        // print number of entries found
        echo "Number of entries found: " . ldap_count_entries($ldapconn, $result);
    } else {
        echo "LDAP bind failed...";
    }
}
Answer 1

Добавить строчку сразу после:

$ldaptree    = "OU=Отделы,OU=Office,DC=bam,DC=loc";
$ldaptree = mb_convert_encoding($ldaptree,"Windows-1251");
READ ALSO
Некорректная пагинация в Opencart

Некорректная пагинация в Opencart

В пагинации на страницах отображаются дубли страниц

282
Yii2, нужна помощь в написании метода для api

Yii2, нужна помощь в написании метода для api

Есть модели StickerPack и StickerМежду ними связь один ко многим

200
Как считать русские названия?

Как считать русские названия?

Добрый деньУ меня скрипт не может с LDAP считать русские названия

205