Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Automatyczne utworzenie strony .php o podanym wzorze
Forum PHP.pl > Forum > Przedszkole
picia2004
Czy istnieje możliwość utworzenia strony w ten sposób? Jeśli tak, to w jaki sposób to powinno przebiegać?

- użytkownik podaje w formularzu nazwę np. 'Piłka nożna'
- skrypt zamienia polskie znaki i spację ['pilka_nozna']
- tworzy plik php o podanej nazwie ['pilka_nozna.php']
Do tej pory wszystko działało i...
- w pliku zostaje zapisany kod z wzoru [który zawiera zmienne, które musi pobrać z formularza tworzącego plik]

Próbowałem użyć funkcji: fputs();, lecz się nie sprawdziła. Poza tym ciąg z wzoru musi przyjąć zmienną z formularza. Nie bardzo wiem jak tego dokonać.
Daiquiri
1. Daj kod
2. Może masz problem ze chmodami?

Nie do końca rozumiem czy nie działa Ci całość czy tylko zapisywanie danych pobranych z formularza.
picia2004
Nie działa zapis wzoru, po prostu tak jakby go nie odczytywało - ciągi znaków normalnie zapisywało, ale z wzoru korzystać nie chce... W utworzonym pliku [np. pilka_nozna.php] wyświetla: 'Resource id #6'.

Skrypt do wykonania poleceń
  1. if(! empty($_POST['name']))
  2. {
  3. $name = $_POST['name'];
  4. $name = strtolower($name);
  5. $name = str_replace(" ", "_", $name);
  6. $name = str_replace("ą", "a", $name);
  7. $name = str_replace("ć", "c", $name);
  8. $name = str_replace("ę", "e", $name);
  9. $name = str_replace("ł", "l", $name);
  10. $name = str_replace("ó", "o", $name);
  11. $name = str_replace("ż", "z", $name);
  12. $name = str_replace("ź", "z", $name);
  13. $file = fopen("".$name.".php","w+");
  14. $wzor = fopen("wzor.php","w+");
  15. fputs($file,"$wzor");
  16. fclose($file);
  17. fclose($wzor);
  18. echo ("Wykonano!");
  19. }
  20.  
  21. <form action="add_file.php" method="POST">
  22. <input type="text" name="name" />
  23. <button type="submit">Utwórz plik</button>
  24. </form>
  25. ');


wzor.php
  1. <?
  2. echo ("". $_POST['name'] ."");
  3. ?>
nospor
przeciez $wzor zawiera to co zwrocilo fopen czyli wskaznik do pliku a nie jego zawartosc. Przeciez w manualu w opisie tych funkcji masz wszystko opisane na dloni co i jak.

kolejna sprawa: uzyj file_get_contents i file_put_contents a nie sie bawisz w fopen.
kolejna sprawa: skoro wzor kopiujesz bez zmian, to uzyj copy
http://pl2.php.net/manual/pl/function.copy.php
picia2004
W pliku 'wzor.php', niektóre dane powinny być uzupełnione danymi z formularza. Czy podany przez Ciebie sposób będzie odpowiedni? winksmiley.jpg
nospor
w kodzie tego nie miales, wiec nie sadzilem ze ma byc winksmiley.jpg

Tak, pierwszy sposob z file_get_contents i file_pu_contents bedzie odpowiedni. To co zwroci ci file_get_contents bedziesz musial jeszcze obrobic o te rzeczy z forma co mowiles. zakladam ze masz tak w tym wzorze jakies zjadliwe dane do latwej obrobki.
picia2004
Ok, doczytam manual, pokombinuję i dam znać jak efekty winksmiley.jpg

EDIT Ok, już działa tak jak powinno, chociaż wyrzuca błąd:
  1. Warning: file_get_contents(tu_tez_coś.php) [function.file-get-contents]: failed to open stream: No such file or directory in /home/accounts_w/wiruscrack/public_html/test/admin/add_file.php on line 38


  1. linia 38 $ob = file_get_contents("" .$name. ".php");
  2. linia 39 $pob = file_get_contents('wzor.txt');
  3. linia 40 $pob = str_replace("Tu", "Jeden", $pob);
  4. linia 41 file_put_contents("" .$name. ".php", $pob);


Za to zainteresowało mnie coś jeszcze.. przy próbie wpisywania nazw klubów piłkarskich wszystkie zamieniało poprawie tj.
FC Barcelona = fc_barcelona.php
Wisła Kraków = wisla_krakow.php
Cracovia Kraków = cracovia_krakow.php
A tu przy:
ŁKS Łódź = Łks_Łodz.php

Coś nie tak z literą 'Ł'? Ale, że nawet nie uległa pomniejszeniu?
  1. $name = $_POST['name'];
  2. $name = strtolower($name);
  3. $name = str_replace(" ", "_", $name);
  4. $name = str_replace("ą", "a", $name);
  5. $name = str_replace("ć", "c", $name);
  6. $name = str_replace("ę", "e", $name);
  7. $name = str_replace("ł", "l", $name);
  8. $name = str_replace("ó", "o", $name);
  9. $name = str_replace("ż", "z", $name);
  10. $name = str_replace("ź", "z", $name);
nospor
$ob = file_get_contents("" .$name. ".php"); - no przeciez nie mozesz pobrac pliku, ktorego jeszcze nie stworzyles. ta linija jest zupelnie niepotrzebna
Fifi209
Błąd wyraźnie mówi, że takiego pliku tam nie ma.

Co do:
  1. "" .$name. ".php"


Nie miało być przypadkiem:
  1. $name.'.php'
picia2004
Ok, już poprawione i działa bez zarzutu winksmiley.jpg

A jakieś rozwiązanie dla tego problemu z 'Ł'? winksmiley.jpg

Czy może po prostu użyć (po raz kolejny)?
  1. $name = str_replace("Ł", "l", $name);
Fifi209
Cytat(picia2004 @ 13.08.2009, 11:45:10 ) *
Czy może po prostu użyć (po raz kolejny)?
  1. $name = str_replace("Ł", "l", $name);


  1.  
  2. $name = str_replace(" ", "_", $name);
  3.  
  4. $name = str_replace("ą", "a", $name);
  5.  
  6. $name = str_replace("ć", "c", $name);
  7.  
  8. $name = str_replace("ę", "e", $name);
  9.  
  10. $name = str_replace("ł", "l", $name);
  11.  
  12. $name = str_replace("ó", "o", $name);
  13.  
  14. $name = str_replace("ż", "z", $name);
  15.  
  16. $name = str_replace("ź", "z", $name);


a teraz weź to: str_replace i poczytaj jak działa ta funkcja.
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.