Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/46: Рейтинг темы: голосов - 46, средняя оценка - 4.67
9 / 9 / 2
Регистрация: 25.01.2010
Сообщений: 76

opendir() русские папки

18.09.2012, 18:28. Показов 8584. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
opendir() выводит ошибку на русских папках
Если добавить
PHP
1
header('Content-Type: text/html; charset=utf-8');
такую:

Warning: opendir(D:/НАДО/,D:/НАДО/) [function.opendir]: �� ������� ����� ��������� ����. (code: 2) in Z:\home\mysite.ru\www\init.php on line 9
Warning: opendir(D:/НАДО/) [function.opendir]: failed to open dir: No such file or directory in Z:\home\mysite.ru\www\init.php on line 9
Warning: readdir(): no Directory resource supplied in Z:\home\mysite.ru\www\init.php on line 10
Если убрать такую:
Warning: opendir(D:/НАДО/,D:/НАДО/) [function.opendir]: Не удается найти указанный файл. (code: 2) in Z:\home\mysite.ru\www\init.php on line 9
Warning: opendir(D:/НАДО/) [function.opendir]: failed to open dir: No such file or directory in Z:\home\mysite.ru\www\init.php on line 9
Warning: readdir(): no Directory resource supplied in Z:\home\mysite.ru\www\init.php on line 10
на всякий случай php код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<? 
 
$link = mysql_connect('localhost','root') or die('Ошибка соединения: ');
mysql_select_db('bd1', $link) or die(mysql_error());
mysql_query("set names cp1251");
mysql_query("delete from table1",$link) or die("Ошибка - ".mysql_error());    
 
function dirsearch($text,$link){
opendir($text);
while($file = readdir())
{
    if($file!="." && $file!=".."){
    if ( is_file($text.$file) ){mysql_query("INSERT INTO table1 (Name,File,ParName) VALUES ('$file','1','$text')",$link) or die("Ошибка - ".mysql_error());}
    if ( is_dir($text.$file) ){mysql_query("INSERT INTO table1 (Name,File,ParName) VALUES ('$file','0','$text')",$link) or die("Ошибка - ".mysql_error()); dirsearch($text.$file."/",$link);}
    $i++;}
}
};
 
$text=$_POST[data];
dirsearch($text,$link);
 
 
 
$query=mysql_query("SELECT * FROM table1 WHERE ParName LIKE '$text';",$link);
while(list($r1,$r2,$r3,$r4,$r5)=mysql_fetch_row($query))
{
if($r5=='1'){echo '<div id=$r1 ><img src="/file.png"/>'.$r2.'<br></div>';}
else{echo '<div id='.$r1.' onClick="treeclick('.$r1.');"><img src="/dir.png"/>'.$r2.'<br></div>';}
};
mysql_close($link); 
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.09.2012, 18:28
Ответы с готовыми решениями:

Как пройти по файлам папки с использованием opendir и readdir
При использовании следующего кода браузер показывает только беЗконечные точки:, кто поможет исправить именно с этими функциями. С...

Являются ли русские папки в гитхабе дурным вкусом?
Вопрос немного глупый, думаю лучше его спросить. На подскажите гайдлайнов по выкладыванию репозиториев с документацией или курсами на...

Проблема с opendir
Привет всем кто зашёл в темку. Столкнулся с необходимостью рекурсивно пройти по всем директориям в директории. В массив...

11
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
18.09.2012, 18:53
PHP
1
opendir(iconv('utf-8', 'cp1251', $text));
а так?
0
9 / 9 / 2
Регистрация: 25.01.2010
Сообщений: 76
18.09.2012, 20:37  [ТС]
Так вообще не работает.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
18.09.2012, 20:46
Вообще? Что значит вообще? При попытке открыть так и пишет "Скрипт вообще не работает!"? Или всё таки что то другое написало?
1
9 / 9 / 2
Регистрация: 25.01.2010
Сообщений: 76
18.09.2012, 21:09  [ТС]
Ну в прямом смысле) если поменять на
opendir(iconv('utf-8', 'cp1251', $text));
не выводит ничего даже на английских папках.
не информации не ошибок(
Кстате рекурсия тоже почемуто не работает.Кагда находит следующую папку переходит в неё но если попадается папка в которой нету подпапок функция останавливается и не продалжает работу в функции её вызвавшей.

Добавлено через 7 минут
И ещё ошибку opendir выдаёт кагда указываеш русскую папку изначально если попадается подпапка с русским названием она и заносится в бд и отображается корректно.
1
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
18.09.2012, 21:19
Я думаю что лучше ресурс возвращаемый opendir передавать явно в readdir.
Если не передаввать, то браться будет послеждний открытый ресурс, а у вас рекурсия, то есть будет что то типа
открыли /dir1/
открыли в ней /dir1/dir1-1
вренулись из рекурсии, а тут, уже у нас будет в качестве ресурса использован именно русурс открытия /dir1/dir1-1 а не просто dir1.
Если бы вы явно указали, типа
PHP
1
2
$r = opendir(...);
while ( ... readdir($r))
то ресурс взялся бы нужный, из того экземпляра функции что нада, а так он будет из вложенной функции уже.
1
9 / 9 / 2
Регистрация: 25.01.2010
Сообщений: 76
18.09.2012, 22:12  [ТС]
За рекурсию спасибо, помогло.
А вот с русскими папками пока жаль(
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
18.09.2012, 22:22
Странно, у меня с cp1251 кодировкой всё прекрасно открывает.
1
9 / 9 / 2
Регистрация: 25.01.2010
Сообщений: 76
18.09.2012, 22:28  [ТС]
Ну у меня адрес в php с формы приходит через ajax может в этом дело?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
18.09.2012, 22:33
ajax работает в кодировке utf-8
нужно перекодировать по идеи функцией icinv как я писал выше.
хотя нет... вы там много раз перекадировтаь будите в цикле, я не обратил внимание сразу на рекурсию.
вот так сделайте
PHP
1
$text = isset($_POST['data']) ? iconv('utf-8', 'cp1251', $_POST['data']) : '';
Добавлено через 1 минуту
Вот только хорошая ли мысль, присылать системный путь аяксом? можно же прислать какой угодно, например в каталог /etc на линуксе или в c:/windows если в пхп это будет не запрещено.
1
9 / 9 / 2
Регистрация: 25.01.2010
Сообщений: 76
19.09.2012, 19:04  [ТС]
Во спасибо огромное помагло.

Добавлено через 10 минут
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Вот только хорошая ли мысль, присылать системный путь аяксом? можно же прислать какой угодно, например в каталог /etc на линуксе или в c:/windows если в пхп это будет не запрещено.
Защищённые папки не открываются, и задание тестовое не суть важно.

Добавлено через 20 часов 18 минут
Возник тот же вопрос теперь нужно обратно перекодировать в utf-8 но целый массив
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
19.09.2012, 20:29
PHP
1
2
3
4
foreach($arr1 as $v) 
   $arr2[] = iconv('Windows-1251','UTF-8',$v);
 
var_dump($arr2);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2012, 20:29
Помогаю со студенческими работами здесь

Проблемы с opendir
Всем привет! Начала учить Perl и вот первая проблемка. Вот код: opendir(DIR, 'D:\\abc') || die &quot;Error: $!\n&quot;; my @files =...

opendir/readdir
здраствуйте!!! подскажите пожалуйста как использовать opendir/readdir на примере.

Как файлы и папки по адресу "C:\... \Sample Pictures" имеют и русские названия и английские одновременно
Прошу прощения, что не совсем по теме. Мне всегда было интересно как файлы и папки по адресу &quot;C:\Users\Public\Pictures\Sample...

Ошибка в строке открытия директории. opendir
&lt;?php echo 'Альбомы песни!&lt;br/&gt;'; $lines=file('visits.txt'); for($i=2;$i&lt;count($lines);$i++) { ...

что такое: 1).opendir?, 2).readdir? и 3). stat(fstat)?
всем добрый вечер... плз пжлст что такое: 1).opendir?, 2).readdir? и 3). stat(fstat)? всем заранее спасибо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru