Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
41
Cevap
618
Tıklama
0
Öne Çıkarma
Cevap: Sql sorularım (2. sayfa)
A
19 yıl
Yarbay
Konu Sahibi

Bu sayfayı kaydettim çok işime yaradı teşekkürler


Bu mesaja 1 cevap geldi.
A
19 yıl
Yarbay
Konu Sahibi

Şimdi bir sorum daha oldu :) Kalan boş alanı bulmak için

$df = disk_free_space("/");
echo "$df<BR><BR>";

şunu kullanıyorum.Ama bu sanırım benim sitenin bulunduğu makinanın tam kalan alanını veriyor.Çünkü yaklaşık 150 mb gibi bir değer görüyorum.Oysa ki benim alanım zaten 50mb ve kısmen dolu.Sadece kendi alanımın kalan yerini nasıl bulurum?


Bu mesaja 1 cevap geldi.
H
19 yıl
Çavuş

kapasite 50 MB ise bu 50 MB tan sitedeki dosyaların boyutunu çıkarırsın. alanındaki dosya boyutunu şu kodla bulabilirsin.
<? 
function dir_size($dir)
{
$handle = opendir($dir);

while ($file = readdir($handle)) {
if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) {
$mas += filesize($dir.'/'.$file);
} else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') {
$mas += dir_size($dir.'/'.$file);
}
}
return $mas;
}

function boyut_formatla($boyut) {

if ($boyut==0) $boyut = "-";
else if ($boyut<1000) $boyut = $boyut." byte";
else if (($boyut/1024)<1000) $boyut = number_format($boyut/1024,2,",",".")." KB";
else if (($boyut/1024/1024)<1000) $boyut = number_format($boyut/1024/1024,2,",",".")." MB";

return $boyut;
}


echo boyut_formatla((50*1024*1024)-dir_size("./"));
?>





< Bu mesaj bu kişi tarafından değiştirildi hakki0548 -- 13 Eylül 2006; 19:46:07 >
Bu mesaja 1 cevap geldi.
A
19 yıl
Yarbay
Konu Sahibi

Çok teşekkürler.Yalnız şu an şöyle bir sorun doğdu.Bu kod ana klasörde olunca çalışıyor.Ama alt klasöre attık mı farklı değerler gösteriyor.Bir de kod zaten kalan alanı veriyor sanırım.Şimdi bu kodu ana klasöre koydum gerekli olan yerde include ettim.Ama include ettiğim klasörün boyutunu bulmaya başladı.Nasıl bir yol izlemeliyim


Bu mesaja 1 cevap geldi.
H
19 yıl
Çavuş

bu kodu include ettiğin sayfa kaç klasör derinlikteyse o kadar ../ koymalısın. mesela

diyelim ki site adresinwww.site.com
ve sen bu kodları 3 klasör derinlikte include ediyorsun yani
www.site.com/klasor1/klasor2/klasor3/dosya.php

o zaman kodun sonundaki kısmı şu şekilde değiştirmelisin

echo boyut_formatla((50*1024*1024)-dir_size("../../../"));


böyle yapınca bu kodlar senin sitende kullandığın toplam dosyaların boyutunu bulup bunu 50MB tan çıkarır ve kalan kısmı ekrana yazar


Bu mesaja 1 cevap geldi.
A
19 yıl
Yarbay
Konu Sahibi

İlginiz için çok teşekkürler sorularımın hepsine cevap yazdınız.Acaba bir klasör altındaki klasörlerin ortalama boyutunu bulabilir miyiz.Yani toplam dosya boyutu/dosya sayısı. Dosya boyutunu bulurum ama dosya sayısını nasıl buluruz?


Bu mesaja 1 cevap geldi.
H
19 yıl
Çavuş

rica ederim yardımcı olabiliyorsam ne mutlu bana

kodların bulunduğu klasördeki images klasörünün istatistiklerini veren kod
<? 


function dir_size($dir)
{
$handle = opendir($dir);


while ($file = readdir($handle)) {
if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) {
$mas += filesize($dir.'/'.$file);
} else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') {
$mas += dir_size($dir.'/'.$file);
$dosya_sayisi+= 1;
}
}
return $mas;
}

function dosyalar($dir)
{
$handle = opendir($dir);


while ($file = readdir($handle)) {
if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) {
$dosya_sayisi+= 1;
} else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') {
$dosya_sayisi+= 1;
}
}
return $dosya_sayisi;
}

function boyut_formatla($boyut) {

if ($boyut==0) $boyut = "-";
else if ($boyut<1000) $boyut = $boyut." byte";
else if (($boyut/1024)<1000) $boyut = number_format($boyut/1024,2,",",".")." KB";
else if (($boyut/1024/1024)<1000) $boyut = number_format($boyut/1024/1024,2,",",".")." MB";

return $boyut;
}


$klasor_boyutu = dir_size("./images/");
$dosya_sayisi = dosyalar("./images/");

echo "Toplam Dosya Boyutu = ".boyut_formatla($klasor_boyutu)."<br>";
echo "Dosya Sayisi = ".$dosya_sayisi."<br>";
echo "Ortalama Dosya Boyutu = ".boyut_formatla($klasor_boyutu/$dosya_sayisi)."<br>";
echo "Kalan Alan = ".boyut_formatla((50*1024*1024)-$klasor_boyutu)."<br>";


?>


Bu mesaja 1 cevap geldi.
A
19 yıl
Yarbay
Konu Sahibi

Tekrar tekrar teşekkürler.Şimdi bu kalan dosya boyutunu tüm host alanından çıkarayım dedim.RAkamlar sapıttı, beceremedim.Ortalama dosya boyutu yine aynı fonksiyonda kalsa ama kalan alanı toplam hosttaki kalan alan olarak verebilir miyiz.Yani diğer şeyler değişmesin de sadece kalan alan hostta kalan toplam olan olsun.Klasördeki alan değil yani.Umarım analatabilmişimdir.


Bu mesaja 1 cevap geldi.
A
19 yıl
Yarbay
Konu Sahibi

quote:

Orjinalden alıntı: hakki0548

sonucu galiba c.php ile gösteriyorsun. c.php yi include yoluyla değil de verdiğim ilk kodla çağırmanın bir sakıncası var mı?
eğer c.php dosyasında b.php deki değişkenleri kullanıyorsan şunu yapabilirsin

<meta http-equiv="refresh" content="0; URL=c.php?değisken1=<?=$değisken1?>&değisken2=<?=$değisken2?>" />


böylece farklı bir sayfa yüklenerek aynı değişkenlerle sonucu görüntüleyebilirsin. F5 e basılsa bile sadece sonucu görüntüleme kodları yenilenmiş olur

EVet bu kod işe yarıyordu ama bir sorunum oldu:) ADam b.php ye geri döününce ilk başta sayfa gözükmüyor.Windows sizin için bunu önledi .... falan .Ama adam ısrarla yenileye basarsa yenileniyor.Yani bu bir açık oluşturuyor.Bunu önlemenin yolu yok mu?b php den c php ye yönlenirken b.php deki değişkenleri sıfırlayabilir miyiz.Yoksa meta tagları arasına cache kontrol yapsak kayıtlı bilgiler silinebilir mi geri dönüş yapınca.



H
19 yıl
Çavuş

eğer hostta kalan alanı bulmak istiyorsan dir_size("./images/"); yerine hostunun ana klasörünün yerini yazarsın. yani eğer bir klasör derinlikteysen dir_size("../"); şeklinde.

ama diyorsan ki ben hostta kalan alanı bulayım ama aynı zamanda başka bir klasörün ortalamasını bulayım o zaman dir_size fonksiyonunu ikince kez kullanabilirsin. mesela

kodun üst kısmı aynen kalcak alt kısmını yazıyorum 

$toplam_dosya_boyutu = dir_size("../");
$klasor_boyutu = dir_size("./images/");
$dosya_sayisi = dosyalar("./images/");

echo "Toplam Dosya Boyutu = ".boyut_formatla($toplam_dosya_boyutu)."<br>";
echo "Klasör Boyutu = ".boyut_formatla($klasor_boyutu)."<br>";
echo "Klasördeki Dosya Sayisi = ".$dosya_sayisi."<br>";
echo "Ortalama Dosya Boyutu = ".boyut_formatla($klasor_boyutu/$dosya_sayisi)."<br>";
echo "Kalan Alan = ".boyut_formatla((50*1024*1024)-$toplam_dosya_boyutu)."<br>";


dier soruna gelince şimdilik bir çözüm bulamadım. bulduğumda yazarım


not : kodu sabah yanlış gödnermişim. bu doğru hali





< Bu mesaj bu kişi tarafından değiştirildi hakki0548 -- 14 Eylül 2006; 10:33:46 >
Bu mesaja 1 cevap geldi.
A
19 yıl
Yarbay
Konu Sahibi

Canavar gibi oldu valla :)))) Diğer soruna çözüm bulsak süper olur valla.Yenilenmesini istemediğim sayfa hosta dosya upload ediyor.Ve post mthoduyla gelen bilgiler değişkenlerde tutluyor.c.php ye yönlendirmeden değişkenleri sıfırlasam etkili olur mu?


Bu mesaja 1 cevap geldi.
H
19 yıl
Çavuş

değişkenleri sıfırlasan bile o sayfaya ulaşıp F5 e bastığında kodlar en baştan çalışacaktır. başka çözüm bulmak için bişeyler deniyorum. bulursam yazarım buraya


Bu mesaja 1 cevap geldi.
H
19 yıl
Çavuş

çok basit bir yol buldum

<script> 
history.forward();
</script>


bunu b.php ye ekliyceksin. bu kod ileri butonuna tıklamış gibi işlem yapıyo. b.php yi ilk defa çalıştırdığında ileride bi sayfa olmadığı için bi işlem yapmıycak. ama c.php den b.php ye geri döndüğünde hemen ileri (c.php) gidecek. dene bakalım işini görüyor mu


Bu mesaja 1 cevap geldi.
A
19 yıl
Yarbay
Konu Sahibi

Maaleef olmadı ben şöyle bir yöntem buldu.Şimdi ben bu dosyaların özelliklerini veritabanında tutuyorum.b.php nin başında son eklenen dosyaını adını bulsak sonra desekki bu dosyanın adı şimdi yüklenecek olan dosyanın adına eşitse yüklemeyi yapma olur mu?


Bu mesaja 1 cevap geldi.
H
19 yıl
Çavuş

tabi o da olur ama sen benim en son verdiğim kodları sayfanın en başına yazıp dene. işe yarıycaktır


Bu mesaja 1 cevap geldi.
A
19 yıl
Yarbay
Konu Sahibi

Tam c ye yönlenirken durduruyorum yeniledikçe yazılar değişmiyor ama dosya ekliyor.en son c.php ye yönlenmesine izin veriyorum bir bakıyorum 5 dosya birden yüklenmiş


Bu mesaja 1 cevap geldi.
H
19 yıl
Çavuş

tam olarak sitende ne yüklüyorsun bilmiyorum ama eğersen değil de kullanıcılar dosya yükleyecekse bence dosya adına göre kontrol yapmak pek sağlıklı olmaz. farklı kişiler tesadüfen aynı isimde farklı dosyalar yükleyebilirler.

ben back.php isminde şöyle bir sayfa oluşturdum

<script> 
history.forward();
</script>

<?
echo '<script>alert(\'deneme\');</script>';
?>

<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=9318835&url=ileri.php" data-href="ileri.php">ileri</a>


bir de ileri.php diye boş bir sayfa oluşturdum. ilk başta back.php yi çalıştırıyorum. deneme diye uyarı çıkıyor (yani senin sitene göre anlatacak olursak yükleme kodları çalışıyor). tamam a tıklayınca aşağıda ileri.php sayfasının linki çıkıyor. ona tıklayıp ileri.php sayfasını açıyorum. sonra geri butoruna tıklayarak back.php ye geri dönüyorum. fakat bu kez deneme diye uyarı çıkmadan (yani dosya yüklenmeden) ileri.php ye atıyor beni.

ama dediğin gibi ileri linkine tıklamadan F5 yaparsan tekrar uyarı çıkıyor. ona henüz bir çözüm bulabilmiş değilim





< Bu mesaj bu kişi tarafından değiştirildi hakki0548 -- 15 Eylül 2006; 0:01:46 >
Bu mesaja 1 cevap geldi.
H
19 yıl
Çavuş

galiba bu kez oldu

<?php 

function randomkeys($length)
{
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$length;$i++)
{
$key .= $pattern{rand(0,35)};
}
return $key;
}


$dosyaadi = "file.rar"; //buraya dosya adını yazdır


$sessid= randomkeys(8);
$Seperator = '--';
$uniqueID = $sessid;
$Data = $dosyaadi;

setcookie('DosyaKontrol', $Data.$Seperator.md5($Data.$uniqueID));

if ($_COOKIE) {
$Cut = explode($Seperator, $_COOKIE['DosyaKontrol']);
if (md5($Cut[0].$uniqueID) === $Cut[1]) {
$_COOKIE['DosyaKontrol'] = $Cut[0];
} else {
die('<script>window.location="ileri.php";</script>'); //buradaki ileri.php yerine yönlendireceğin sayfayı yazacaksın
}
}


echo '<script>alert(\'deneme\');</script>'; //buradan sonra yükleme kodlarını yazacaksın

?>





< Bu mesaj bu kişi tarafından değiştirildi hakki0548 -- 15 Eylül 2006; 0:17:18 >
Bu mesaja 1 cevap geldi.
A
19 yıl
Yarbay
Konu Sahibi

Kopartmışın olayı ya cookieler falan :) Bir uğraşayım bakayım biraz.Ama ya adam cookiesini silerse yenilemeden.Maksat saldırı değil mi?
quote:

Orjinalden alıntı: hakki0548

galiba bu kez oldu

<?php 

function randomkeys($length)
{
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$length;$i++)
{
$key .= $pattern{rand(0,35)};
}
return $key;
}


$dosyaadi = "file.rar"; //buraya dosya adını yazdır


$sessid= randomkeys(8);
$Seperator = '--';
$uniqueID = $sessid;
$Data = $dosyaadi;

setcookie('DosyaKontrol', $Data.$Seperator.md5($Data.$uniqueID));

if ($_COOKIE) {
$Cut = explode($Seperator, $_COOKIE['DosyaKontrol']);
if (md5($Cut[0].$uniqueID) === $Cut[1]) {
$_COOKIE['DosyaKontrol'] = $Cut[0];
} else {
die('<script>window.location="ileri.php";</script>'); //buradaki ileri.php yerine yönlendireceğin sayfayı yazacaksın
}
}


echo '<script>alert(\'deneme\');</script>'; //buradan sonra yükleme kodlarını yazacaksın

?>



Bu mesaja 1 cevap geldi.
H
19 yıl
Çavuş

şunu deneyebilirsin. cookiye yazdırdığımız yazıyı veritabanına kaydedip cookie nin değil de o yazının varlığını kontrol edersin. veritabanına da erişemezler ya


Bu mesaja 1 cevap geldi.