Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tworzenie pliku w każdym katalogu
mrRosso
post 13.03.2013, 17:37:18
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

Ostrzeżenie: (0%)
-----


Witam mam katalog /baza_txt w którym tworzone są inne katalogi o różnej nazwie a w nich plik txt o nazwie daty każdego dnia, czyli o północy tworzony jest nowy plik txt. Mam taki problem, a rozwiąznia w googlarce nie znalazłem.

Przypuśćmy, że mam w katalogu "baza_txt" następujące foldery:

jdfsfg/
dsfqw/
fysiw/
afydfd/
suadf
afdfe/

etc...

i szukam funkcji, która będzie mi tworzyć plik txt o nazwie daty w każdym z tych katalogów, czyli żeby bo utworzeniu wyglądało to w następujący sposób:

baza_txt/jdfsfg/13-03-2013.txt
baza_txt/dsfqw/13-03-2013.txt
baza_txt/fysiw/13-03-2013.txt
baza_txt/afydfd/13-03-2013.txt
baza_txt/suadf13-03-2013.txt
baza_txt/afdfe/13-03-2013.txt

etc...

umiem zrobić, żeby tworzyło w pojedyńczym katalogu nazwie jaką podam, ale z wieloma katalogami jest problem bo każda nazwa jest inna...



Może ułatwieniem by było dla Was. Bo Przy tworzeniu tych folderów o dziwnych nazwach zrobiłem zapisywanie ich nazwy do bazy MySQL, może to w czymść pomoże, żeby jakoś wyodrębnić nazwy katalogów z bazy.

Ten post edytował mrRosso 13.03.2013, 17:38:14
Go to the top of the page
+Quote Post
Posio
post 13.03.2013, 17:39:52
Post #2





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

Ostrzeżenie: (0%)
-----


powiem Ci tak, jeśli lista folderów jest stała tj. znasz nazwy wszystkich folderów to po prostu stwórz z nich tablicę i w pętli twórz te pliki co chcesz ?
Nie wiem czy Cię dobrze zrozumiałem ale mysle ze zrobić to pętlą idzie bez problemu
Go to the top of the page
+Quote Post
mrRosso
post 13.03.2013, 17:44:29
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

Ostrzeżenie: (0%)
-----


no właśnie tu jest ten kłopot, że lista nie jest stała smile.gif
Go to the top of the page
+Quote Post
Wazniak96
post 13.03.2013, 17:47:13
Post #4





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


Sprawdzasz jakie pliki(katalog możemy również nazwać plikiem) w katalogu baza_txt i mamy listę katalogów(o ile w katalogu baza_txt są tylko katalogi)scandir. Następnie pętlą jedziemy każdy jeden folder z osobna i dodajemy w nim plik.

Ten post edytował Wazniak96 13.03.2013, 17:48:00
Go to the top of the page
+Quote Post
_Borys_
post 13.03.2013, 17:47:45
Post #5





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

Ostrzeżenie: (0%)
-----


A od czego to zależy ?
Go to the top of the page
+Quote Post
magnus
post 13.03.2013, 17:49:38
Post #6





Grupa: Zarejestrowani
Postów: 99
Pomógł: 15
Dołączył: 15.11.2007
Skąd: Nowogród Bobrz.

Ostrzeżenie: (0%)
-----


Cytat(mrRosso @ 13.03.2013, 17:37:18 ) *
umiem zrobić, żeby tworzyło w pojedyńczym katalogu nazwie jaką podam


Skoro umiesz zrobić plik w jednym katalogu, to wystarczy to powtórzyć w pętli wink.gif
Skoro masz te nazwy w bazie, to odczytaj je do tablicy, przeleć foreach() i będzie po sprawie.

A gdybyś chciał odczytać wszystkie katalogi to mniej więcej taka konstrukcja wyciągnie wszystkie katalogi z podanego katalogu:

  1.  
  2. $handle = opendir($dir);
  3.  
  4. while (false !== ($file = readdir($handle))) {
  5.  
  6. if ($file != "."
  7. && $file != ".."
  8. && filetype($dir.$file) == 'dir'
  9. ) {
  10. //tu coś robisz
  11. }


--------------------
Efemental.pl - nasz punkt słyszenia :: recenzje :: tylko metal!
Opensource'owy klon Cantra: http://github.com/magnax/Simtr
Go to the top of the page
+Quote Post
mrRosso
post 13.03.2013, 17:50:03
Post #7





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

Ostrzeżenie: (0%)
-----


Jest to czat kanałowy i każdy użytkownik, który się zarejestruje może utworzyć swój własny kanał rozmowy o nazwie którą poda ;p Po utworzeniu jego kanału tworzony jest folder o jego nazwie a w nim plik txt z logami smile.gif

Ten post edytował mrRosso 13.03.2013, 17:51:13
Go to the top of the page
+Quote Post
Wazniak96
post 13.03.2013, 17:54:33
Post #8





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


Tak się składa, że jestem autorem skryptu czatu kanałowego(może znasz, Wazniak) i powiem Ci tyle, że logi na txt to nie wypał. Dużo zabawy gdy chcemy czytać np 10 ostatnich wiadomości. Problem z zabezpieczeniem przed nieautoryzowanym dostępem. Znacznie lepiej jest zrobić je na MySQL.

Jeżeli już chcesz zrobić na txt to przed zapisem sprawdź czy plik txt już istnieje, jeżeli nie to po prostu go stwórz smile.gif
Go to the top of the page
+Quote Post
_Borys_
post 13.03.2013, 17:56:47
Post #9





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

Ostrzeżenie: (0%)
-----


Należałoby przypisać do użytkownika folder
Gdzieś w pliku użytkownik - folder
Go to the top of the page
+Quote Post
mrRosso
post 13.03.2013, 18:09:54
Post #10





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

Ostrzeżenie: (0%)
-----


A jeśli wyciągnę listę katalogów to przecież każdy katalog musi mieć swoją zmienną, czy jak to jest?

załóżmy tworzę plik w katalogu

  1. $log_data=date("d.m.y");
  2. $fp = fopen("baza_txt/logi/".$jaka_zmienna."/".$log_data.".txt", "w");
  3. fclose($fp);
  4. if( chmod ( './baza_txt/logi/' . $jaka_zmienna. '/' . $log_data.'.txt', 0600))


i jako $jaka_zmienna co mam podać aby dotyczyło to każdego katalogu?

Wazniak a kojarzę Cię smile.gif jak chcesz to podaj mi na pw numer Twojej kanałówki smile.gif

Ten post edytował mrRosso 13.03.2013, 18:12:22
Go to the top of the page
+Quote Post
Wazniak96
post 13.03.2013, 18:12:27
Post #11





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


wszystko ci podaliśmy

  1. <?php
  2. $log_data=date("d.m.y");
  3. while($dir = scandir('baza_txt/logi'))
  4. {
  5. if($dir != '..' && $dir != '.')
  6. {
  7. $fp = fopen("baza_txt/logi/".$dir."/$log_data.txt", "w");
  8. fclose($fp);
  9. if( chmod ( './baza_txt/logi/' . $dir. '/' . $log_data.'.txt', 0600))
  10. }
  11. }


Ten post edytował Wazniak96 13.03.2013, 18:13:02
Go to the top of the page
+Quote Post
mrRosso
post 13.03.2013, 18:45:26
Post #12





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

Ostrzeżenie: (0%)
-----


coś jest nie tak bo gdy wywołuję skrypt przez przeglądarkę to wyrzuca błąd prezglądarki, że nie ma takiego pliku. Klamry są dobre...
Go to the top of the page
+Quote Post
Wazniak96
post 13.03.2013, 19:08:07
Post #13





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


I tak sporo dostałeś. Poza tym w czym Ci możemy pomóc skoro nie wiemy jak wygląda twoje drzewo katalogów, z którego katalogu wykonujesz skrypt i nie mamy treści błędu. Czarodziejami nie jesteśmy.
Go to the top of the page
+Quote Post
mrRosso
post 13.03.2013, 19:31:33
Post #14





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

Ostrzeżenie: (0%)
-----


Dzewo katalogów opisywałem przecież ;P katalog główny to "czat/"
W nim są katalogi i skrypty: "API, baza_txt, czat.php i test.php(i to właśnie z niego sprawdzam czy działa ten kod)" i tylko to. Adres http który wpisuję jest na 100% poprawny smile.gif

ostatni wpis z pliku error.log to:

  1. Wed Mar 13 18:17:58 2013] [error] [client 83.26.229.182] File does not exist: /vhome/s/sniper/www/htdocs/favicon.ico, referer: <a href="http://sniper.onuse.pl/czat/test.php" target="_blank">http://sniper.onuse.pl/czat/test.php</a>
Go to the top of the page
+Quote Post
Wazniak96
post 13.03.2013, 19:49:26
Post #15





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


Podany kod wskazuje na to, że nie możne znaleźć obrazka, ikony która widnieje przy zakładce w przeglądarce... Wysil się trochę. Sprawdź co ci zwraca katalogi scandir itp.

PS: Jeżeli chcesz cokolwiek zrobić musisz włączyć raportowanie błędów ponieważ na onuse jest ono standardowo wyłączone, przez co ciężko się pracuje.

Ten post edytował Wazniak96 13.03.2013, 19:52:40
Go to the top of the page
+Quote Post
mrRosso
post 13.03.2013, 21:07:55
Post #16





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

Ostrzeżenie: (0%)
-----


użyłem z manula tego kodu

  1. <?php
  2.  
  3. if ($handle = opendir('/vhome/s/sniper/www/htdocs/czat/baza_txt/logi')) {
  4. echo "Directory handle: $handle\n";
  5. echo "Entries:\n";
  6.  
  7. * This is the correct way to loop over the directory. */
  8. while (false !== ($entry = readdir($handle))) {
  9. echo "$entry\n\r\n";
  10. }
  11.  
  12. /* This is the WRONG way to loop over the directory. */
  13. while ($entry = readdir($handle)) {
  14. echo "$entry\n\r\n";
  15. }
  16.  
  17. closedir($handle);
  18. }
  19. ?>


i zwrcił mi listę katalogów w taki sposób:

  1. Directory handle: Resource id #2 Entries: . .. wciwnqj diwiwuyagq jdizjwuqihs khshau andkdkdk test2\


czyli prawie ok, tylko żeby utworzyć tam pliki txt
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:10