Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] PHP w zmiennej
Forum PHP.pl > Forum > Przedszkole
mcfreak
Napisałem skrypt tworzący plik sygna.php, dla wyjaśnienia, generator sygnatur:

  1. $zawartosc = file_get_contents('dane/1.txt').$_POST["idprofilu"].file_get_contents('dane/2-1.txt').$_POST["format"].file_get_contents('dane/2-2.txt').$_POST["adresob"].file_get_contents('dane/3-1.txt').$_POST["k-linki"].file_get_contents('dane/3-2.txt').$_POST["k-posty"].file_get_contents('dane/3-3.txt').$_POST["k-pochwaly"].file_get_contents('dane/3-4.txt').$_POST["k-poziom"].file_get_contents('dane/3-5.txt').$_POST["k-diamenty"].file_get_contents('dane/3-6.txt').$_POST["k-dni"].file_get_contents('dane/4.txt').$_POST["w-linki"].','.$_POST["nachylenie-linki"].','.$_POST["lewa-linki"].','.$_POST["gora-linki"].file_get_contents('dane/5.txt').$_POST["cz-linki"].file_get_contents('dane/6.txt').$_POST["w-posty"].','.$_POST["nachylenie-posty"].','.$_POST["lewa-posty"].','.$_POST["gora-posty"].file_get_contents('dane/7.txt').$_POST["cz-posty"].file_get_contents('dane/8.txt').$_POST["w-pochwaly"].','.$_POST["nachylenie-pochwaly"].','.$_POST["lewa-pochwaly"].','.$_POST["gora-pochwaly"].file_get_contents('9.txt').$_POST["cz-pochwaly"].file_get_contents('dane/10.txt').$_POST["w-poziom"].','.$_POST["nachylenie-poziom"].','.$_POST["lewa-poziom"].','.$_POST["gora-poziom"].file_get_contents('dane/11.txt').$_POST["cz-poziom"].file_get_contents('dane/12.txt').$_POST["w-diamenty"].','.$_POST["nachylenie-diamenty"].','.$_POST["lewa-diamenty"].','.$_POST["gora-diamenty"].file_get_contents('dane/13.txt').$_POST["cz-diamenty"].file_get_contents('dane/14.txt').$_POST["w-dni"].','.$_POST["nachylenie-dni"].','.$_POST["lewa-dni"].','.$_POST["gora-dni"].file_get_contents('dane/15.txt').$_POST["cz-dni"].file_get_contents('dane/16-gif.txt');
  2.  
  3. $names = 'sigs/'.$_POST["katalog"].'/view.php';
  4. $fp = fopen($names, 'x');
  5. fwrite($fp, $zawartosc);
  6. fclose($fp);
  7.  
  8.  


chodzi o to, że muszę robić pełno plików tekstowych, bo nie potrafię inaczej tego zrobić (jak by ktoś nie wiedział) zapisuje zawartość zmiennej $zawartosc do pliku, w tej zmiennej sa tez odwolania do formularza, jak widać musze caly skrypt podzielic na teksty, zeby wstawic $_POST, a to uciazliwe...
jak zrobic i nie meczyc sie z tym w ten sposob np.:

  1. $zawartosc = '<?
  2. $zrodlo = "$_POST[idprofilu]";


..... i tak dalej i tak dalej a po wykonaniu pliku przez fwrite zawartosc /view.php bedzie miala

  1. <?
  2. $zrodlo = "ciacho(czyli_to_co_podalem_w_formularzu)";


mam nadzieję że kumacie, bo tego sie nie da wytłumaczyć.
kriszna
  1. $string = "<?php \n $zrodlo = '".$zawartosc."';\n ?>";

i zapisz zmienną $string do pliku.
mcfreak
dzięki, sprawdzę. a zamiast łamania liń /n, mogę posłużyć się zwykłym enterem, np. tak:

[PHP] pobierz, plaintext
  1. $string = "<?php
  2. $zrodlo = '".$zawartosc."';
  3. ?>";
[PHP] pobierz, plaintext

bo skryptu jest trochę więcej niż tu przedstawiłem i fajnie by było jak było by to możliwe.

edit:

jak tak zrobię to jest błąd , (niestety nie powiem jaki bo civ.pl nie pokazuje błędów, sprawdzę na innym hostingu)

edit2:

Parse error: syntax error, unexpected T_STRING in /home/testsig/domains/testsig.hostil.pl/public_html/gen.php on line 161

161 linijka to początek $strinng
kriszna
  1. $string = "<?php
  2. \$zrodlo = '".$zawartosc."';
  3. ?>";
mcfreak
zapisało , dzięki. czyli rozumiem że mam przed każdą taką linijką dawać / ?
kriszna
\ dajesz przed $. Wtedy $ do zwykły znak, a nie początek zmiennej.
mcfreak
ok ostatnie pytanie:
  1. $zawartosc = "<?
  2.  
  3. \$strona = "http://######.pl/forum/profile.php?mode=viewprofile&u='.$_POST[idprofilu].'"; # 229 linijka
  4. \$page = file_get_contents($strona);
  5.  
  6. ?>";

wywala błąd

Parse error: syntax error, unexpected T_STRING in /home/testsig/domains/testsig.hostil.pl/public_html/gen.php on line 229

jak mi odpowiesz, to będę już sam dalej wiedział winksmiley.jpg
Andaramuxo
Dwa razy użyte "?
Fafu
TIP: backslashe
mcfreak
to co wkońcu tu jest źle, jeden backslashe, a drugi ", btw. jak by co to jestem zielony :]
kriszna
Zmienna $strona ma być zmienną więc poco dajesz \ przed $??
mcfreak
bo tak mi powiedziałeś ;]?

ref
marcio
Cytat(mcfreak @ 13.08.2009, 14:31:14 ) *
bo tak mi powiedziałeś ;]?

ref


Kolega ci napisal:


Cytat
\ dajesz przed $. Wtedy $ do zwykły znak, a nie początek zmiennej.


mcfreak
a mógłby mi ktoś wytłumaczyć to jaśniej, jeżeli chciałbym to zrobić na przykładzie:

http://link.pl/$_POST[idprofilu]

sorry, bo tego w kursie nie było :/
Andaramuxo
Jeżeli ma być w linku, to metoda $_GET.
mcfreak
nie rozumiesz.. ja chcę zapisać PHP do pliku i żeby brało dane z formularza...
Fafu
backslashe czyli przed " dajesz \ czyli \"
przykład:
  1. $zawartosc = "<?
  2.  
  3. \$strona = \"http://######.pl/forum/profile.php?mode=viewprofile&u=$_POST[idprofilu]\"; # 229 linijka
  4. \$page = file_get_contents(\$strona);
  5.  
  6. ?>";
mcfreak
OK czyli przed każdym $ i " \ :] Thx.
Fafu
lub jak ci sie nie chce to mozna tez tak:
  1. $zawartosc = '<?
  2.  
  3. $strona = "http://######.pl/forum/profile.php?mode=viewprofile&u='.$_POST[idprofilu].'";
  4. $page = file_get_contents($strona);
  5.  
  6. ?>';

To jest lepsze rozwiązanie i raczej takiego powinieneś używać tj apostrofów.
mcfreak
ale w powyższym sposobie będą wyskakiwać błędy, jak ma się większy kod etc. bo próbowałem wcześniej

aha, no i przed ' też mam dawać \?
kriszna
W PHP są znaki specjalne, np. $ (początek zmiennej), " (początek/koniec stringa), ' (początek/koniec stringa/znaku). Zdarza się jednak, że potrzeba użyć któregoś ze znaków specjalnych jako zwykłego znaku, np. chcemy stworzyć zmienną tekstową zawierającą ze znakiem $
  1. $dolar = "\$12.50";
Wtedy właśnie przed tym znakiem dajemy \. Jego zadaniem jest zamienić znak specjalny w zwykły.
Fafu
Cytat(mcfreak @ 13.08.2009, 20:21:11 ) *
ale w powyższym sposobie będą wyskakiwać błędy, jak ma się większy kod etc. bo próbowałem wcześniej

aha, no i przed ' też mam dawać \?

Nie będą wyskakiwać, wystarczy zadbać o dobre ułożenie apostrofów i cudzysłowów.

Wiesz w ogóle do czego służą te backslashe?

Jeśli w ciągu tekstowym między ' ' chcesz dać jako tekst apostrof to musisz użyć \' a jeśli tekst będzie między " " to już nie musisz. To samo jest na odwrót:
Jeśli między " " chcesz dać cudzysłów to musisz użyć \" a jeśli apostrof to normalnie '
mcfreak
Miałeś racje, tamten sposób jest o wiele prostszy biggrin.gif Zamiana ' na " przy użyciu replace w dreamveawerze to prościzna ;d THX.
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.