Fopen- niepoprawna ścieżka, nie może otworzyc pliku


(Lksstudzionka) #1

Witam!

Mam taki kod:

<?php

$konto = $_POST[konto];


include "mysql.inc";

$wynik = mysql_query ("SELECT * FROM konta_td WHERE `nr` = '".$konto."'");

$rekord = mysql_fetch_array ($wynik);


echo "
wybrane konto: $rekord[konto]";


if(!$_POST[nazwa_pliku]) { //brak pliku pokaz formularz

echo "
Wybierz plik do edycji



plik1.html
plik2.html
plik3.html
plik4.html



"; // podaj nazwe pliku do utwozenia

} elseif($_POST[nazwa_pliku]) { //jesli nazwa wpisana otwóż istniejący plik

 $plik = "konta/$_POST[konto]/$_POST[nazwa_pliku]";


if (!$_POST[submit]) {//jesli nie wyslano pokaz formularz

 $fd = fopen("$plik", "a+"); // otwieramy

 $dane = fread($fd, filesize("$plik"));//odczytujemy

 $explode=explode("|",$dane);//dzielimy na zaw. i opis.

 fclose($fd); //zamykamy

  echo "
zawartość pliku

$explode[0]

opis zawartosci (aby w pliku html byl niewidoczny, mozna go ujac w http://perfectionorvanity.com/2005/09/30/komentarze-w-html/

$explode[1]

"; // wyswietlamy zaw. i opis z mozliwoscia edycji (jesli istnieje)

  } elseif ($_POST[submit]) {// wysłano, wiec dodaj dane, pokaz komunikat i wyświetl zawartość pliku ;p


$fp = fopen("$plik", "w+"); // otwieramy

$podzialka = '|'; //ustalamy separator

fwrite($fp, "$_POST[zaw] $podzialka $_POST[opis]"); // dodajemy dane

fclose($fp); //zamykamy

echo "
podglad, dla pewności PPM i odśwież ramke
";


}

}

?>[/code]




Kiedy dochodzę do ostatniego kroku wywali mi taki błąd:

Domyślam się, że coś tu jest źle (slashe, brak cudzysłowów, nie wiem :/)
[code] $plik = "konta/$_POST[konto]/$_POST[nazwa_pliku]";

Próbowałem już wielu kombinacji, ale nic nie działa.

Ścieżka powinna być taka"

a jest taka:

Pozdrawiam, mic22


(L337 Crew) #2
$plik = 'konta/'.$_POST['konto'].'/'.$_POST['nazwa_pliku'];

(Lksstudzionka) #3

nadal ten sam błąd :-x


(L337 Crew) #4

Wczoraj szedłem spać, więc nawet nie patrzyłem na zamieszczony kod :stuck_out_tongue:

Dlaczego założyłeś, że przy otwarciu/utworzeniu nowego pliku - utworzy także katalog?

Zrób ręcznie folder, którego nazwa wisi w tablicy $_POST['konto'] i odpal skrypt...

Zamieszczam mały przykładzik:

<?php

  $konto = 'Webmaster';

  $nazwa = 'plik1.html';

  $plik = 'konta/'.$konto.'/'.$nazwa;


  $zaw = 'hello word';

  $opis = 'tego konta uzywać bedzie webmaster';


  if(!is_dir('konta/'.$konto)) mkdir ("konta/$konto/", 0755);


  $fp = fopen($plik, "w+"); 

    fwrite($fp, $zaw.'|'.$opis); 

    fclose($fp); 

  echo 'Dodano. Teraz możesz zobaczyc ten plik klikając tutaj';

?>  

[/code]

(Lksstudzionka) #5

Katalogi "konta" i "$_POST['konto']" są utworzone przez inny skrypt, więc w momencie wykonywanie tego skryptu one już istnieją.

Dlatego, że katalogów "$_POST['konto']" jest kilka muszę przesłać z innego skryptu jego nazwę którą wybieram z listy rozwijanej. Następnie wybieram z listy nazwę pliku która jest taka sama w każdym folderze (plik1.html [...] plik4.html). Jednym zdaniem :stuck_out_tongue: Skrypt musi mi otworzyć plik z tej ścieżki:

konta/$_POST[konto]/$_POST[nazwa_pliku]

(Kutar 0) #6
$plik = $_POST[konto].'/'.$_POST[nazwa_pliku];

(Lksstudzionka) #7

Zrobiłem sobie tak i działa:

<?php

$konto = $_POST[konto];


include "mysql.inc";

$wynik = mysql_query ("SELECT * FROM konta_td WHERE `nr` = '".$konto."'");

$rekord = mysql_fetch_array ($wynik);


if(!$_POST[nazwa_pliku]) { //brak pliku pokaz formularz

echo "
Wybierz plik do edycji



plik1.html
plik2.html
plik3.html
plik4.html



"; // podaj nazwe pliku do utwozenia

} elseif($_POST[nazwa_pliku]) { //jesli nazwa wpisana otwóż istniejący plik

 $plik = konta.'/'.$_POST[konto].'/'.$_POST[nazwa_pliku];


if (!$_POST[submit]) {//jesli nie wyslano pokaz formularz

 $fd = fopen("$plik", "a+"); // otwieramy

 $dane = fread($fd, filesize("$plik"));//odczytujemy

 $explode=explode("|",$dane);//dzielimy na zaw. i opis.

 fclose($fd); //zamykamy

  echo "
zawartość pliku

$explode[0]

opis zawartosci (aby w pliku html byl niewidoczny, mozna go ujac w http://perfectionorvanity.com/2005/09/30/komentarze-w-html/

$explode[1]

"; // wyswietlamy zaw. i opis z mozliwoscia edycji (jesli istnieje)

  } elseif ($_POST[submit]) {// wysłano, wiec dodaj dane, pokaz komunikat i wyświetl zawartość pliku ;p

 $plikk = '.'.$_POST[konto].'/'.$_POST[nazwa_pliku];


$fp = fopen("$plikk", "w+"); // otwieramy

$podzialka = '|'; //ustalamy separator

fwrite($fp, "$_POST[zaw] $podzialka $_POST[opis]"); // dodajemy dane

fclose($fp); //zamykamy

echo "
podglad, dla pewności PPM i odśwież ramke
";


}

}

?>[/code]

Dzięki za pomoc :wink: