Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: DIR
Forum PHP.pl > Forum > PHP
rzseattle
czy ktos mi moze wyjasnic jak wykozystywac funkcje dir na platnym seweze bo

Kod
<php

$d=dir(www.mojades/zdjecia);

while(($bf=$d->read())!==false){

        if ($bf != "." && $bf != "..") {

                   print $bf;



     }

}

$d->close();

?>

nie dziala
a potrzebuje funkcji dir (na moim kompiejak znam sciezke to bezpoblemowo wpisuje ja i dziala

dodam jeszcze ze

Kod
<php

print dirname(__FILE__);

?>

zwraca: '/var/www/html/pro/mojadres/root'

moze ktos ma jakis pomysl??
Jabol
ty otwierasz katalog na serwerze zdalnym, nie lokalnie (tzn. nie przez sieć). Tak ci nie bedzie nigdy działać!
rzseattle
to moze tos ma inny pomysl na np zbadanie rozdzielczosci wszystkich plikow w danym katalogu smile.gif

do dobra dobra jak tos wskaze mi sposob jak wylistowac (czy jakos tak) kaolog na jakim servie (nie swoim kompie) to juz sam reszte zrobie
Jabol
musiałbyś mieć skrypt na tym serwerze, ewentualnie skorzystać brute-force (czyli próbujesz przez http wyciągnąć wszystkie pliki o rozszerzeniu np .jpg). Ewentualnie możesz mieć szczęscie i trafić na serwer, który wylistowuje zawartość katalogów, w których nie ma defaultowego pliku, wtedy tylko jakiś sprytny ereg.
rzseattle
Cytat
www.mojades/zdjecia
/var/www/html/pro/mojadres/root

moze moglem napisac mojastronaale
Cytat
<php  
print dirname(__FILE__);  
?>  
zwraca: '/var/www/html/pro/mojadres/root'  

moze oznaczac ze mam konto na tym servie i moge umieszczac swoje wlasne skrypty na moim koncie smile.gif
wiec jabol
Cytat
musiałbyś mieć skrypt na tym serwerze

czy moglbys rozwinac swoja mysl, prosze
DeyV
Cytat
<?php
$d=dir(/var/www/html/pro/mojadres/' );
while(($bf=$d->read())!==false){  
       if ($bf != "." && $bf != "..") {  
                  print $bf;  

        }  
}  
$d->close();  
?>
Jabol
Robisz jeden wielki błąd. Po co otwierasz twój katalog przez sieć, a nie normalnie lokalnie?
wystarczy jedna modyfikacja[php:1:9a691020e6]
<php
$d=dir('../zdjecia');
while(($bf=$d->read())!==false){
if ($bf != "." && $bf != "..") {
print $bf;

}
}
$d->close();
?>[/php:1:9a691020e6]

PS. Czy wiecie do czego służy ten przycisk z php?
rzseattle
wiecie co jest najsmieszniejsze?

oba sposoby nie dizalaja chociaz wydaja sie wpozadku

zero bledow - tylko pusty ekran
Jabol
DeyV ma jeden wyraźny błąd (brakuje mu ' w funkcji). Teraz inne możliwe przyczyny: ten katalog może być pusty, mogła być zła ścieżka do katalogu, srawdz, czy podałem prawidłowo ścieżkę względem twojego pliku!
DeyV
Gratulacje za spostrzegawczość.
Przydałby mi się taki kontoler kodu in home 8)
Już wiesz, co obiecałem usnuąć? laugh.gif
rzseattle
to juz posprawdzalem a deyv a od razu poprawilem

http://www.swiatwina.strefa.pl/test.php
tylko z printa wynik i nic wiecej

mam pytanko - czy ktos na swoim koncie moze to sprawdzic bo juz jestem troche skolowany
Jabol
zrobiłeś to specjalnie, prawda, chciałeś pokazać błąd? zauważ, że rzseatle tego nie zrobił, on wogóle nie miał ', co, z tego co wiem, jest dopuszczalne (widziałem już pare takich roziwązań).
rzseattle
jabol ja nie mialem '' bo wczesniej tam mialem $sciezka a przy pisaniu postu popros zapomnielem ale w sumie to niewazne ................
Jabol
a zrób to z innym katalogiem, np. z './'. Jeżeli nie wyjdzie to możesz jeszcze spróbować open_dir read_dir
spenalzo
[php:1:d815338f07]<?php
$dir=opendir(".");
while($plik=readdir($dir))
{
if($plik !="." && $plik!="..")
{
echo $plik;
}
}
closedir($dir);
?>[/php:1:d815338f07]
DeyV
Przyznaję, ze skruchą, że nie było to zamierzone
Natomiast pisanie stringów bez ' ' jest tylko teoretycznie dopuszczlne, ponieważ php obsługuje je wtedy jak stałe. Sprawdza, czy nie była zdefinowana stała o takiej nazwie, jeżleli nie - traktuje ją jako tekst.
Dlatedo właśnie nie mozna tak zapisać tekstu ze spacjami - to byłyby już osobne elementy.
Dlatego też nie należy w ten sposób przekazywać parametrów np. do tablic, gdyż może się kiedyś pojawić stała o tej samej nazwie, no i robi sie cyrk.
Jabol
a może tak[php:1:1ddf0f4bcf]<?php
$dir=opendir(".");
while($plik=readdir($dir))
{
if(($plik!=".") && ($plik!=".."0))//z tego można by zrezygnować, aby sprawdzić, czy działa
{
echo $plik;
}
}
closedir($dir);
?>[/php:1:1ddf0f4bcf]
PS. DeyV, to czemu w miejscu błędu jest czerwone??
rzseattle
dobra poddaje sie

[php:1:523d31a2ce]<php
if ($dir = @opendir("/800")) {
while (($file = readdir($dir)) !== false) {
echo "$filen";
}
closedir($dir);
?>[/php:1:523d31a2ce]

tez niedziala (i wszystkie wariacje ../800 czy /zdjecia i ../zdjecia)
nie mam pojecia co jest grane w kazdym razie do jutra (modem rulez)moze ktos innywie co jest grane

prosze używać php do umieszczania takowego kodu!
DeyV
na czerowno zaznaczylem fragment gdzie wcześniej był błąd. (jednak myślałem tylko o samym adresie, tj. zmianie adresu www na ścieżkę.

Ale i tak mi milo, ze jesteś tak przekonany o celowości moich działań. Mów mi tak częściej winksmiley.jpg
Jabol
nie można używać ścieżek zaczynających się od /, ponieważ wtedy system (jak sie domyślam unix) traktuje je jako ścieżki bezwzglę, tzn od głównego katalogu!
spenalzo
Podaj w jakim katalogu (względem tego, gdzie jest skrypt) znajdują się fotografie.
rzseattle
na mily koniec dnia

[quote]Parse error: parse error, unexpected T_LNUMBER in /test.php on line 5
dla
Kod
<?php

$dir=opendir("800");

while($plik=readdir($dir))

{

if(($plik!=".") && ($plik!=".."0))//z tego można by zrezygnować, aby sprawdzić, czy działa

{

  echo $plik;

}

}





dla spelnazo skrypt jest w glownym a zdjecia jeden wyzej wiec chyba podane przezemnie wczesniej sciezki pasuja do opisu

closedir($dir);

?>
spenalzo
[quote]na mily koniec dnia

if(($plik!=".") && ($plik!=".."0
Bez tego zera!

Jeżeli +1 poziom to dajesz opendir("zdjecia")
Jabol
nie musze chyba mówić, że katalog musi istnieć??
rzseattle
spelnazo mala pomylka i juz bym zrezygnowal ale ludzie dzialllllaaaaaaa dzieki wszystkim za wspanialego chata (bo przez chwile to nie przypominalo forum ) smile.gif


ps jabol bez przesady
spenalzo
Czyli działa?

PS. Ludzie! Na miłość boską nauczcie się pisać mojego nicka, to nie jest trudne, ale wszyscy przekręcają laugh.gif
rzseattle
sam zobacz
http://www.swiatwina.strefa.pl/test.php
spenalzo
Ciekaw jestem czemu ten pierwszy skrypt nie działał - zawsze z niego korzystam i jest OK...
Ale czat lepszy niż w onecie!
spenalzo
while(($bf=$d->read())!==false){

Chyba tu jest bład.
DeyV
A teraz ja nie rozumiem. Czy według Ciebie na czerwono jest poprawnie, czy źle?
Bo według manuala jest to zapis jak najbardziej poprawny.
Cytat
$a !== $b Nie identyczny TRUE jeśli $a nie jest równy $b, lub nie są tego samego typu. (tylko w php 4)  
spenalzo
Cytat
A teraz ja nie rozumiem. Czy według Ciebie na czerwono jest poprawnie, czy źle?  
Bo według manuala jest to zapis jak  najbardziej poprawny.
Cytat
$a !== $b Nie identyczny TRUE jeśli $a nie jest równy $b, lub nie są tego samego typu. (tylko w php 4)  

Nie wiedziałem o tym, uczyłem się na PHP3 i nie wiedziałem o takiej możliwości. Czyli === sprawdza czy są tego samego typu? Przyznaję się do błędu.
rzseattle
pozatym trza zauwazyc ze na lokalnym kompie to dzialalo

kurde czuje sie naserio jak na chacie - moje wypowiedzi po 2-3 minutach przestaja byc aktualne
Jabol
może tam jest starsza wersja php, albo inna struktura katalogów?
spenalzo
Daj w skrypcie
[php:1:2278f60bd9]<?php
phpinfo();
?>[/php:1:2278f60bd9]
i będzie wiadomo.
rzseattle
nie wiem czy mi uwiezycie ale
Kod
<?php

phpinfo();

?>

tak wyglada teraz plik test.php i nic nie wyswietla
spenalzo
Cytat
tak wyglada teraz plik test.php i nic nie wyswietla

No ciekawy serwer...
BTW: Używaj przy edycji postów znacznika php - poniżej okienka do wpisywania tematu masz guziczki, najbardziej na prawo jest taki z napisem php - użyj go, a posty stanie sie przejrzyste.
DeyV
Blokowanie funkcji tego typu zdaża sie dosyć często.
A przy wyłączonym raportowaniu błędów - efektem będzie pusty ekran...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.