Touch() nie działa

witam,

mam taki problem.

otóż funckja touch mi nie chce prawidłowo działać. dane są przesyłane z formularza

Nick:   Treść:

i odbieranie skryptem:

<?

$id = $_POST['id'];

$nick = $_POST['nick'];

$tresc_kom = $_POST['tresc_kom'];

$tresc_kom2 = nl2br($tresc_kom);

if(!empty($nick) && !empty($tresc_kom))

	 {

	 $plikczek = "komentarze/".$id.".php";

	 $tworzenie = touch($pliczek);

	 if(!$tworzenie)

		{

		echo "Nie udało sie stworzyć";

		}

	 $p_plik = fopen($pliczek, 'r+');

	 $z_plik = fwrite($p_plik, $tresc_kom2);

	 if($z_plik)

		 {

		 echo "Komentarz został dodany";

		 }

		 else

		 {

		 echo "Komentarz nie został dodany";

		 }

	 }

	 else

	 {


	 }

?>

nie wiem czemu mi nie działa, fwrite() też nie.

proszę o pomoc.

PS. Chmody mam ustawione do katalogu “komentarze” na 0777

Hm, a poczytaj o tym drugim argumencie funkcji fwrite. Z tego co mi wiadomo to r+ oznacza “włączy plik w trybie odczytywania i edycji, bez tworzenia nowego gdy go nie ma”. Radziłbym raczj skorzystać z w lub w+ ;]

samo touch nie tworzy pliku jako takie, ale modyfikuje czas dostępu link, teoretycznie jeżeli plik nie istnieje powinien zostać utworzony, ale to różnie bywa. Może zamień tryb w fopen z r+ na jakiś który próbuje utworzyć plik link

jarmiar zwróć jeszcze uwagę na to, czy masz uprawnienia do tworzenia plików w tym katalogu przez użytkownika, na którym uruchomiony jest serwer WWW.

A nie lepiej tak:

<?php

$id = $_POST['id'];

$nick = $_POST['nick']; 

$tresc_kom = nl2br($_POST['tresc_kom']);

if(empty($nick) || empty($tresc_kom))DIE('wróć i uzupełnij wszystkie dane');

 $plik = 'komentarze/'.$id.'.php';

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

 $z_plik = fwrite($p_plik, $tresc_kom);

 echo'Komentarz '.($z_plik ? '' : 'nie ').'został dodany';

?>

i radziłbym filtrować POSTY :slight_smile:

edit:

ID przesyłane chyba powinno się zmieniać ^^

A z tego co widzę - na sztywno podajesz jedynkę, więc …

jak wyżej pisali koledzy - zajrzyj do manuala: http://www.php.net/manual/pl/function.fopen.php

i spójrz na tryby otwarcia pliku.

nie, id używam do zidentyfikowania do jakiego artykułu jest dodany komentarz

ale to i tak nie powinno być wpisywane na sztywno w formularzu, tylko pobierane z id artykułu, chyba, że zamierzasz tworzyć osobny formularz dla każdego artykułu

forularz tworzy mi się dynamicznie z panelu administracyjnego i do każdego artykułu jest inne ID.

problem polega na tym że funckja touch mi nie działa a w innych przypadkach tak