Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zabezpieczenie nadpisywania plików
piwib
post
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 7.11.2005

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


Witam. Robie ankiete i już wszystko mam tylko jeszcze coś... Ankieta tworzy mi plik tekstowy w którym umieszczam odpowiedzi. Plik nazywa się "ODP_1" i chce aby sprawdzał czy taki plik istnieje... jeśli tak to ma stworzyć "ODP_2" i tak dalej...
Męcze się i nie wychodzi mi to poradzicie coś?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
php programmer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


  1. <?php
  2.  
  3. for ($i=0;$i<=999;$i++)
  4.    if (!file_exists('odp_'.$i.'.txt')) break;
  5.  
  6. $nazwa =  'odp_'.$i.'.txt';
  7.  
  8. ?>


a właściwie to jeszcze lepiej powinno być coś takiego:

  1. <?php
  2.  
  3. for ($i=0;file_exists('odp_'.$i.'.txt');$i++);
  4.  
  5. $nazwa =  'odp_'.$i.'.txt';
  6.  
  7. ?>


uwaga na haczyk - średnik zaraz po ); czyli pętla z drugiego przykładu nie ma ciała

Ten post edytował php programmer 20.12.2005, 14:11:13
Go to the top of the page
+Quote Post
piwib
post
Post #3





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 7.11.2005

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


No ok co do pętli FOR rozumiem a wytłumacz mi czy pod zmienną $nazwa będzie widoczny tytuł tego pliku? bo w programie miałem coś takiego:

<?php
$fp = fopen("ODP_1.txt", "a+");
fputs($fp, $pytanie_1);
fclose($fp);
?>

gdzie "ODP_1.txt" był tym plikiem...
Go to the top of the page
+Quote Post
sobstel
post
Post #4





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(piwib @ 2005-12-20 14:17:32)
a wytłumacz mi czy pod zmienną $nazwa będzie widoczny tytuł tego pliku?

przepraszam, ale co stoi na przeszkodzie abys sprawdzil to samemu (caly kod juz masz podany).
Go to the top of the page
+Quote Post
php programmer
post
Post #5





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


$nazwa zawiera już gotową nazwę tego pliku w postaci:

odp_0.txt
odp_1.txt
odp_2.txt

.
.
.
odp_x.txt

w zalezoności od tego czy już są jakieś inne pliki o takich nazwach
pętla po prostu szuka pierwszego wolnego miejsca
Go to the top of the page
+Quote Post
piwib
post
Post #6





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 7.11.2005

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


Hmm badnijcie to:

  1. <?php
  2.  
  3. for ($i=0;file_exists('odp_'.$i.'.txt');$i++); // szuka wolnej nazwy pliku
  4.  
  5. $nazwa = 'odp_'.$i.'.txt'; // podporządkowywuje ją zmiennej &nazwa
  6.  
  7. ?>
  8.  
  9.  
  10. <?php 
  11. $odpowiedzi = fopen("$nazwa", "w+"); // otwiera plik o wcześniej wylosowanej nazwie &nazwa
  12. fputs($odpowiedzi, $pytanie_1); // zapisuje w pliku o nazwie zawartej w zmiennej $nazwa dane z zmiennej $pytanie_1
  13. fclose($odpowiedzi); // zamyka plik o nazwie zawartej pod zmienną $nazwa
  14. ?>



I mi sie strona wykłada... Gdzie nie widze błędu? Musze najpierw stworzyć taki plik tekstowy? Ale chyba nie ponieważ wskaźnik "w+" jeśli nie ma pliku próbuje go stworzyć... :/
Go to the top of the page
+Quote Post
v1t4n
post
Post #7





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 19.02.2005
Skąd: Dębica

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


Cytat(piwib @ 2005-12-20 16:42:29)
  1. <?php
  2. ($odpowiedzi, $pytanie_1);        // zapisuje w pliku o nazwie zawartej w zmiennej $nazwa dane z zmiennej $pytanie_1
  3. ?>

Tutaj masz blad (wszystko ma byc w jednej linii, po fputs usun akapit)

Czyli (ja zastosowalbym fwrite z przyzwyczajenia):
  1. <?php
  2. fputs ($odpowiedzi, $pytanie_1); // zapisuje w pliku o nazwie zawartej w zmiennej $nazwa dane z zmiennej $pytanie_1
  3. ?>


Ten post edytował v1t4n 20.12.2005, 17:02:19
Go to the top of the page
+Quote Post
piwib
post
Post #8





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 7.11.2005

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


  1. <?php
  2.  
  3. for ($i=0;file_exists('odp_'.$i.'.txt');$i++);
  4.  
  5. $nazwa = 'odp_'.$i.'.txt';
  6.  
  7. ?>
  8.  
  9.  
  10. <?php 
  11. $odpowiedzi = fopen("$nazwa", "w+");
  12. fputs($odpowiedzi, $pytanie_1);
  13. fclose($odpowiedzi);
  14. ?>


No tam źle sie wkleiło mam tak i w 11 lini wywala błąd
(Warning: fopen("odp_0.txt", "w+") - Permission denied in /home/p_watola/storage/www/php/strona_3.php on line 17)

...?
Go to the top of the page
+Quote Post
php programmer
post
Post #9





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


prawa katalogu, w którym zapisujesz te pliki
muszą być odpowiednio ustawione
na przykład 0775

Ten post edytował php programmer 20.12.2005, 22:05:40
Go to the top of the page
+Quote Post
piwib
post
Post #10





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 7.11.2005

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


Dokładnie zmieniłem prawa dostępu katalogu i już wszystko gra. Powiedź mi jeszcze jedno potrzebuje w pasku adresu URL przenieś zmienną z jednej strony do drugiej strony. Jak byś to zronił?
Go to the top of the page
+Quote Post
crash
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Kolega Ci nie powie, ale ja mogę: Mamy tu świetną wyszukiwarkę, radzę z niej skorzystać...
Go to the top of the page
+Quote Post
piwib
post
Post #12





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 7.11.2005

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


To spróbuj ty mi pomóc :
  1. <?php
  2.  
  3. for ($i=0;file_exists('odp_'.$i.'.txt');$i++);
  4. $nazwa = 'odp_'.$i.'.txt';
  5.  
  6. ?>
  7.  
  8.  
  9. <?php 
  10.  
  11. $odpowiedzi = fopen("$nazwa", "a+");
  12. fputs($odpowiedzi, $pytanie_1);
  13. fclose($odpowiedzi);
  14.  
  15. ?>

No i tak pętla for szuka najbliższej wolnej nazwy z serii "odp_" a następnie taki plik zostaje stworzony oraz w nim zapisane odpowiedzi. Ale to mam dopiero pierwszą strone z pytaniem. Chce by ta sama nazwa pliku znajdowała się na kolejnej mojej stronie z pytaniem. Poprostu potrzebuje przenieś zmienna $nazwa. Co byś dopisał do kodu?
Go to the top of the page
+Quote Post
crash
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


index.php?plik=odp_1.txt
  1. <?php
  2. echo $_GET[ 'plik' ];
  3. ?>

Koniec tematu.
Go to the top of the page
+Quote Post
piwib
post
Post #14





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 7.11.2005

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


Źle mnie zrozumiałeś! Nie chodzi mi o przekazanie danej tylko zmiennej. Jeśli na serwerze pojawi sie już plik odp_1.txt to sie wysypie.

index.php?plik=odp_1.txt

a skąd wiesz że odp_1.txt? Chodzi mi o to iż jeśli przykładowo 3 osoby rozwiązaują ankiete w tym samym czasie aby powstały 3 różne pliki z odpowiedziami!(odpowiedzialna jest za to pętla for) Dlatego zmienna $nazwa ma w sobie aktualną stworzoną przez aktualnego użytkownika nazwę pliku. Nie wiem czy mnie rozumiesz do końca ale jeśli tak to w ramach zbliżających sie świąt możesz pomóc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

w skrócie chce przenieść z strony strona_1.php zmienną $nazwa do strona_2.php
Go to the top of the page
+Quote Post
crash
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


  1. <?php
  2. header( 'Location: ./strona2.php?nazwa=' . $nazwa );
  3. ?>

Więcej z tego co piszesz nie rozumiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
piwib
post
Post #16





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 7.11.2005

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


No to jeszcze raz. Mam stronę strona_1.php w której mam zmienną $nazwa. Przechodząc do strony strona_2.php wypisując echo $nazwa; nie pokazuje mi się nic a chce by pokazywała się zawartość zmiennej $nazwa z strony strona_1.php ...
Jak to zrobić? Podkreślam że ręcznę wpisywanie danej do paska np strona_2.php?nazwa=dane_zmiennej_z_strona_1.php nie wchodzi w gre...
Go to the top of the page
+Quote Post
mike
post
Post #17





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


@piwib widzę że zrobileś sobie prywatny kącik lamerskich pytań.
Z każdym postem poziom Twoich pytań spada.

Chcesz przenosić zmienne/dane to poczytaj o przesyłaniu zmiennych za pomocą $_POST i $_GET i o sesjach.

A poza tym @crash już Ci podał rozwiązanie, tylko nawet go nie zrozumiałeś.

Gwarantuję Ci że zakolejnego posta, którego uznam za lamerskiego i za kolejne pytanie, na które odpowiedź jest na forum (użyj wyszukiwarki) dostaniesz ostrzeżenie.
Go to the top of the page
+Quote Post
piwib
post
Post #18





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 7.11.2005

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


Wybacz ale każdy kiedyś startuje od zera. Tytuł forum "php dla początkujących" ewidentnie mówi iż forum dla noobów... Spoko sorry za zamieszanie ale pamiętaj że ty też kiedyś będziesz lamą na innym forum i tez Cie będą gnoić... Możecie zamknąć
Go to the top of the page
+Quote Post
sobstel
post
Post #19





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(piwib @ 2005-12-21 01:11:28)
Wybacz ale każdy kiedyś startuje od zera. Tytuł forum "php dla początkujących" ewidentnie mówi iż forum dla noobów... Spoko sorry za zamieszanie ale pamiętaj że ty też kiedyś będziesz lamą na innym forum i tez Cie będą gnoić... Możecie zamknąć

jak sam zauwazyles to forum dla początkujących, ale dostajesz tu odpowiedzi na pytania, na ktore jak dotad nie odpowiedziano albo ktorych nie mozna zbyt latwo znalezc ani w manualu ani w google, a nie na kazde pytanie jakie ci tylko przyjdzie do glowy, na kotre odpowiedz mozna znalezc w kilka minut...

Ten post edytował sopel 23.12.2005, 17:24:09
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 19:03