-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
Merhabalar.
<?php
$dir = opendir("folder_name");
while (($file_name = readdir($dir)) !== false)
{
if(! is_dir($file_name))
{
$file_img=array
(
$file_img = "folder_name/" . $file_name
);
}
}
closedir($dir);
?>
<?php
$file_list = array_rand($file_img,1);
echo "file : ".$file_img[$file_list];
?>
Üstteki kod ile şunları yapmaya çalıştım;
1) Belli bir klasör içindeki resim dosyalarını listelemek
2) Listelenen dosyaları array dizisine atamak
3) O dizi içinden bir tanesini rastgele göstermek
Bu şekilde sadece bir (son) dosyayı gösteriyor.
Birçok deneme yaptım ama çözemedim henüz.
Bilinçli bir müdahale gerekiyor.
Ama ne?
Teşekkürler şimdiden.
Mesaj 1 defa düzenlendi. Son düzenleyen: BEYAZMASTER (29.10.2023 14:31)
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
15.05.2015
-
Yaş/Cinsiyet
33 / E
-
Meslek
PHP Developer
-
Konum
İstanbul Avrupa
-
Ad Soyad
Ö** G**
-
Mesajlar
1207
-
Beğeniler
382 / 381
-
Ticaret
16, (%100)
kodu deneme şansım olmadı hocam ama array( $file_img = "folder_name" . $file_name ) bu şekilde yazmışsın. arrayde eşittir değil de "=>" kullanılıyor. array( $file_img => "folder_name" . $file_name ) şöyle bi deneyebilir misin. Bu olmazsa farklı bi yol söylerim yine. @BEYAZMASTER
Mesaj 1 defa düzenlendi. Son düzenleyen: ÖmerGünay (29.10.2023 20:09)
1 kişi bu mesajı beğendi.
Herkes yediğinden ikram eder..(Yavuz Sultan Selim)
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
ÖmerGünay adlı üyeden alıntı
kodu deneme şansım olmadı hocam ama array( $file_img = "folder_name" . $file_name ) bu şekilde yazmışsın. arrayde eşittir değil de "=>" kullanılıyor. array( $file_img => "folder_name" . $file_name ) şöyle bi deneyebilir misin. Bu olmazsa farklı bi yol söylerim yine. @BEYAZMASTER
Hocam teşekkür ederim öncelikle.
Şunu kasdettiyseniz çalışmadı;
<?php
$dir = opendir("folder_name");
while (($file_name = readdir($dir)) !== false)
{
if(! is_dir($file_name))
{
array( $file_img => "folder_name" . $file_name );
}
}
closedir($dir);
?>
<?php
$file_list = array_rand($file_img,1);
echo "file : ".$file_img[$file_list];
?>
Mesaj 1 defa düzenlendi. Son düzenleyen: BEYAZMASTER (31.10.2023 00:41)
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
15.05.2015
-
Yaş/Cinsiyet
33 / E
-
Meslek
PHP Developer
-
Konum
İstanbul Avrupa
-
Ad Soyad
Ö** G**
-
Mesajlar
1207
-
Beğeniler
382 / 381
-
Ticaret
16, (%100)
Hocam bir şunu dener misiniz false değilse dediğiniz için file_name hep 1 olarak çıktı veriyor herhalde.
while($file_name = readdir($dir)) şeklinde. opendir yerine scandir kullansanız daha iyi de olabilir belki.
Mesaj 1 defa düzenlendi. Son düzenleyen: ÖmerGünay (31.10.2023 09:59)
1 kişi bu mesajı beğendi.
Herkes yediğinden ikram eder..(Yavuz Sultan Selim)
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
DeepJack adlı üyeden alıntı
<?php
$dir = "folder_name";
$files = [];
// Klasördeki dosyaları listele
if ($handle = opendir($dir)) {
while (false !== ($file_name = readdir($handle))) {
if ($file_name != "." && $file_name != "..") {
$files[] = $dir . '/' . $file_name;
}
}
closedir($handle);
}
// Dosyaları kontrol et ve array dizisine atama
if (!empty($files)) {
// Rastgele bir dosyayı seç
$random_file = $files[array_rand($files)];
// Seçilen dosyayı ekrana yazdır
echo "file: " . $random_file;
} else {
echo "Klasörde dosya bulunamadı.";
}
?>
Üstadım çok teşekkür ederim.
Biraz daha geliştirmek adına şunları nasıl yapabiliriz;
1) Alt klasörlereki dosyaları da diziye eklemek
2) Klasör adlarını listeye eklememek
3) Sadece resim uzatısına sahip dosyaları diziye dahil etmek.
Şimdiden teşekkürler.
Mesaj 4 defa düzenlendi. Son düzenleyen: BEYAZMASTER (05.01.2024 00:33)
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
DeepJack adlı üyeden alıntı
Buyrun
<?php
$dir = "folder_name";
$files = [];
function listFiles($dir) {
global $files;
if ($handle = opendir($dir)) {
while (false !== ($file_name = readdir($handle))) {
$file_path = $dir . '/' . $file_name;
// 1) Alt klasörlereki dosyaları da diziye ekleme
if ($file_name != "." && $file_name != "..") {
if (is_dir($file_path)) {
listFiles($file_path);
} else {
// 3) Sadece resim uzantısına sahip dosyaları diziye ekleme
$allowed_extensions = ['jpg', 'jpeg', 'png', 'gif'];
$file_info = pathinfo($file_path);
if (in_array(strtolower($file_info['extension']), $allowed_extensions)) {
$files[] = $file_path;
}
}
}
}
closedir($handle);
}
}
listFiles($dir);
// 2) Klasör adlarını listeye eklememe
$files = array_filter($files, function($file) {
return !is_dir($file);
});
// Dosyaları kontrol et ve array dizisine atama
if (!empty($files)) {
// Rastgele bir dosyayı seç
$random_file = $files[array_rand($files)];
// Seçilen dosyayı ekrana yazdır
echo "file: " . $random_file;
} else {
echo "Klasörde uygun dosya bulunamadı.";
}
?>
Üstadım elinize , zihninize sağlık...
Şu aşamaları da geçebiliriz umarım;
1) Aynı anda 3 dosya çağırmak ve sayfada kullanmak için ne yapmalıyız?
2) Bu 3 dosyadan birinin mutlaka mp3 dosyası olmasını nasıl zorunlu hale getirebiliriz?
$allowed_extensions = ['jpg', 'jpeg', 'png', 'webp', 'gif', 'mp3'];
3) Dosyaların boyut ve süre bilgilerini elde etmek mümkün mü?
(Mümkünse sayfada kullanılan mp3 dosyasının süresi sona erdiğinde sayfa yönlendirilecek.)
4) Gelen dosya isimleri içinde TÜRKÇE karakter olduğunda � şeklinde gözüküyorlar ve html kodları çalışmıyor.
Bu nedenle gerekii utf8 karakter ayarlamasını koda nasıl entegre edebiliriz?
(Dosya adını TÜRKÇE fonksiyonu ile revize etmek işe yaramıyor çünkü klasör içindeki dosyanın adı eğişmiş olmuyor...)
5) Adı "abc" olan bir klasör varsa bu klasörün ve içindeki dosyaların hariç tutulmasını nasıl sağlayabiliriz?
6) Adında "ç , w, 3" karakteri olan dosyalar varsa bu dosyaların hariç tutulmasını nasıl sağlayabiliriz?
+) $allowed_extensions = ['*']; => Bu kod çalışmadı, çalışan halini nasıl yazabiliriz?
Bildiğiniz kadarı ile aydınlatırsanız çok sevinirim, tekrar teşekkürler...
Mesaj 7 defa düzenlendi. Son düzenleyen: BEYAZMASTER (05.01.2024 12:11)
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
DeepJack adlı üyeden alıntı
<?php
$dir = "folder_name";
$files = [];
function listFiles($dir) {
global $files;
if ($handle = opendir($dir)) {
while (false !== ($file_name = readdir($handle))) {
$file_path = $dir . '/' . $file_name;
// 1) Alt klasörlereki dosyaları da diziye ekleme
if ($file_name != "." && $file_name != "..") {
if (is_dir($file_path)) {
listFiles($file_path);
} else {
// 3) Sadece resim uzantısına sahip dosyaları diziye ekleme
$allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'mp3'];
$file_info = pathinfo($file_path);
// 2) Sadece belirli uzantılara sahip dosyaları diziye ekleme
if (in_array(strtolower($file_info['extension']), $allowed_extensions)) {
// 4) Dosyaların boyut ve süre bilgilerini almak
$file_size = filesize($file_path); // Boyut
if(strtolower($file_info['extension']) == 'mp3') {
$audio_duration = getMp3Duration($file_path); // Süre (sadece mp3 dosyaları için)
// 3) Sayfa yönlendirme kontrolü (örneğin: mp3 dosyasının süresi bittiyse)
if ($audio_duration <= 0) {
header("Location: yeni_sayfa.php");
exit();
}
}
$files[] = [
'path' => $file_path,
'size' => $file_size,
'duration' => $audio_duration ?? null,
];
}
}
}
}
closedir($handle);
}
}
// UTF-8 karakter desteği
setlocale(LC_ALL, 'tr_TR.UTF-8');
bind_textdomain_codeset('messages', 'UTF-8');
listFiles($dir);
// 5) "abc" adlı klasör ve içindeki dosyaları hariç tutma
$files = array_filter($files, function ($file) {
return stripos($file['path'], '/abc/') === false;
});
// 6) Belirli karakterlere sahip dosyaları hariç tutma
$exclude_characters = ['ç', 'w', '3'];
$files = array_filter($files, function ($file) use ($exclude_characters) {
foreach ($exclude_characters as $char) {
if (stripos($file['path'], $char) !== false) {
return false;
}
}
return true;
});
// +) $allowed_extensions = ['*']; Bu kod çalışmadı, çalışan halini yazma
if (in_array('*', $allowed_extensions)) {
// Tüm uzantılara izin verildiyse, bu adımı atla
} else {
// Sadece belirli uzantılara izin verildiyse, filtrele
$files = array_filter($files, function ($file) use ($allowed_extensions) {
$file_info = pathinfo($file['path']);
return in_array(strtolower($file_info['extension']), $allowed_extensions);
});
}
// Dosyaları kontrol et ve array dizisine atama
if (!empty($files)) {
// Rastgele bir dosyayı seç
$random_file = $files[array_rand($files)];
// Seçilen dosyayı ekrana yazdır
echo "file: " . $random_file['path'];
} else {
echo "Klasörde uygun dosya bulunamadı.";
}
// 4) Dosyanın süresini almak için kullanılan fonksiyon
function getMp3Duration($file_path) {
$getID3 = new getID3;
$file_info = $getID3->analyze($file_path);
return (int)$file_info['playtime_seconds'];
}
?>
Dosyanın süresini almak için getID3 kütüphanesinin yüklü olması gerektiğini unutmayın.
Üstadım emeğiniz ve ilginiz için gerçekten çok teşekkür ederim.
Standardın üzerindeki bu kodları yazabildiğiniz için de tebrik ederim.
&
* 38. satırdaki parse error hatasını çözmeye çalışıyorum... ?
* getID3 kütüphanesini eklemeye çalışıyorum;
getid3.org
github.com/JamesHeinrich/getID3
sourceforge.net/projects/getid3
Tümünün içeriği aynı ve içlerinde dll, exe dosyaları da var alakasını kuramadım, bunlar ne amanla var acaba ?
Hangi php dosyasını include etmeliyiz (içinde birçok php dosyası var) ?
Sizin önerebileceğiniz sade ve tutarlı bir kütüphane linki var mı ?
* Son olarak mp3 ile ilgili kısımları mp4 şeklinde değiştirdiğimizde videolar için de aynı işleyişi ele edebilir miyiz?
if(strtolower($file_info['extension']) == 'mp4') {
$audio_duration = getMp4Duration($file_path); // Süre (sadece mp4 dosyaları için)
// 3) Sayfa yönlendirme kontrolü (örneğin: mp4 dosyasının süresi bittiyse)
if ($audio_duration <= 0) {
header("Location: yeni_sayfa.php");
exit();
Yoksa videolar için farklı bir kod mu yazmalıyız?
Çok teşekkürler...
Mesaj 7 defa düzenlendi. Son düzenleyen: BEYAZMASTER (05.01.2024 14:18)
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.