Autor Zpráva
matesek
Profil
Mám problém s chatem . Když dám odeslat zprávu , tak se mi hodí chyby :

Warning: fopen(./data.txt) [function.fopen]: failed to open stream: Permission denied in /home/free/tym.cz/r/rockink/root/www/loged/chat/form.php on line 16

Warning: fputs(): supplied argument is not a valid stream resource in /home/free/tym.cz/r/rockink/root/www/loged/chat/form.php on line 17

Warning: fclose(): supplied argument is not a valid stream resource in /home/free/tym.cz/r/rockink/root/www/loged/chat/form.php on line 18


const.php
<?
$subor = "./data.txt"; // cesta k suboru, kde sa budu ukladat spravy

$maxDlzkaMeno = 20; // maximalna dlzka retazca "meno"
$maxDlzkaSprava = 100; // maximalna dlzka retazca "sprava"

$maxPocetOdkaz = 50; // kolko poslednych odkazov sa ma zobrazovat ?

// format zobrazenia spravy
$format = sprintf("%s <b>%%%d.%ds: </b>%%-%d.%ds<br>",Date("d.m.Y H:i:s"),$maxDlzkaMeno,$maxDlzkaMeno,$maxDlzkaSprava,$maxDlzkaSprava);

// kolko bajtov obsahuje maxPocetOdkaz ?
$maxOdkazByte = StrLen(sprintf($format,"","")) * $maxPocetOdkaz;
?>


form.php :
<html>
<!-- Ak nie je vyplnene meno - zameraj nan kurzor. Inak zameraj na spravu. -->
<body bgcolor="#0099ff" onLoad="if(document.f.meno.value.length) document.f.sprava.focus(); else document.f.meno.focus();">
<?
require "./const.php";

if($sprava != ""): // ak sprava nieco obsahuje

	if($meno == "")
		$meno = "anonym"; // ak uzivatel nezadal meno bude "anonym"
	else
		$meno = StripSlashes(StrTr($meno,"<>&","***")); // odstran lomitka spred citlivych znakov a nahradi niektore nebezpecne znaky

	$sprava = StripSlashes(StrTr($sprava,"<>&","***")); // odstran lomitka spred citlivych znakov a nahradi niektore nebezpecne znaky

	$fp = fopen($subor,"a"); // otvor subor pre doplnenie
	fputs($fp,sprintf($format,$meno,$sprava)); // naformatuj odkaz a zapis ho do suboru
	fclose($fp); // zatvor subor
	?>
		<script language="JavaScript">
		parent.frames["show"].location = "show.php" // bola pridana sprava, obnov zobrazenie odkazov
		</script>
	<?
	endif;
?>
<form method=post name="f">
<table border="0" align="center">
	<tr align="center">
		<td>Jméno</td>
		<td>Zpráva</td>
	</tr>
	<tr align="center" valign="baseline">
		<td><input type="text" name="meno" size="20" maxlength="<?echo $maxDlzkaMeno?>" value="<?echo $meno?>"></td>
		<td><input type="text" name="sprava" size="30" rows="3" maxlength="<?echo $maxDlzkaSprava?>"> <input type=submit value=" Ok "></td>
	</tr>
</table>
</form>
</body>
</html>


head.php
<?
Header("Pragma: no-cache");
Header("Cache-control: no-cache");
Header("Expires: ".GMDate("D, d m Y H:i:s")." GMT");
?>
<html>
<head>
	<title>Kontrola nových odkazov</title>
	<style type="text/css">
		input {
			background-color: #cc00cc;
			color: #000000;
			border-left: 0px;
			border-right: 0px;
			border-top: 0px;
			border-bottom: 0px;
		}
	</style>
</head>
<body bgcolor="#0099ff">
<?
require "./const.php";

ClearStatCache(); // vymaz vyrovnavaciu pamet
$newSize = FileSize($subor); // zisti velkost suboru

if($newSize != $oldSize): // pribudol novy odkaz ?
?>
	<script language="JavaScript">
	parent.frames["show"].location = "show.php" // obnov ramec "show"
	</script>
<?
endif;
?>
<form name="form">
Kontrola nastane za <input type="text" name="timer" size="3" readonly> s
</form>

<script language="JavaScript">
var t = 5 // konstanta v sekundach znovunacitania stranky

function Timer(){
	document.form.timer.value = t // vypis do formulara
	if(!t) // uplynula doba casovaca
		parent.frames["head"].location = "head.php?oldSize=<?echo $newSize?>"
	else{
		t--
		setTimeout("Timer()",999) // spusti opat o 1 sekundu
		}
	}
Timer() // spustenie odpocitavania
</script>

</body>
</html>


index.php
<?
require "./const.php";

ClearStatCache(); // vymaz vyrovnavaciu pamet

if(!File_Exists($subor)) // ak subor neexistuje - vytvor ho
	FClose(FOpen($subor,"w"));
?>
<html>
<head>
	<title>Jednoduchý "chat"</title>
</head>

<frameset rows="100,*,20">
	<frameset cols="34%,*">
		<frame src="head.php?oldSize=<?ClearStatCache(); echo FileSize($subor)?>" name="head">
		<frame src="form.php?name=&sprava=" name="form">
	</frameset>
	<frame src="show.php" name="show">
</frameset>

</html>


show.php
<?
Header("Pragma: no-cache");
Header("Cache-control: no-cache");
Header("Expires: ".GMDate("D, d m Y H:i:s")." GMT");
?>
<html>
<head>
	<title>Zobrazenie odkazov</title>
</head>
<body bgcolor="#00ccff">
<p style="font-family: 'ARIAL CE', 'HELVETICA CE','ARIAL','HELVETICA'; font-size: 12px;">
<?
require "./const.php"; // nacitaj "konstanty"

$fp = FOpen($subor,"r"); // otvor subor na citanie

ClearStatCache(); // vymaz vyrovnavaciu pamet
$velkostSuboru = FileSize($subor); // zisti velkost suboru

if($velkostSuboru > $maxOdkazByte) // uz mam v datovom subore viac sprav ako maxPocetOdkaz ?
	FSeek($fp,$velkostSuboru - $maxOdkazByte); // zmen poziciu na poslednych maxPocetOdkaz

FPassThru($fp); // vypis suboru od aktualnej pozicie & zatvor subor
?>
</p>
</body>
</html>
Beavis
Profil
matesek:
Má soubor data.txt CHMOD 0777?
matesek
Profil
data.txt jsem vytvořil v textovém dokumentu a nic víc jsem s tím nedělal . Myslím , že to na starém webu takhle fungovalo , ale nevím . Taky nevím , co myslíš , že jsem měl udělat .
matesek
Profil
Mohl by někdo prosím poradit ? Ukázka je ZDE
fuckin
Profil
matesek:
Proč sem dáváš všechny soubory? Myslíš, že je někdo bude číst? Bohatě stačí ten soubor, ve kterém je chyba.

Jasně ti to píše, že nemáš přístup k souboru. Již Beavis se tě ptal na práva ale ty jsi nedokázal odpovědět.

Změn CHMOD na 777, jestli to nepomůže, tak čtení souboru zkus přes file_get_contents()
matesek
Profil
CHMOD změněn na 777 . Nejprve jsem nevěděl co to je , ale teď již vím , že jsou to práva souboru . Funguje to dobře .

fuckin:
Proč sem dáváš všechny soubory? Myslíš, že je někdo bude číst? Bohatě stačí ten soubor, ve kterém je chyba.
Dal jsem je sem , protože navzájem k sobě nějak souvisí . yslel jsem , že by ta chyba mohla být třeba i někde jinde .

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: