PDA

View Full Version : [PHP] Gestore "News" di un sito aggiornabile dal cliente...


Inga15
04-05-2009, 10:35
Salve a tutti! Non so se è la sezione adatta...
Ho scritto PHP nel titolo ma dico subito che non uso php (non sapevo cosa scrivere)...per farla breve avrei questa esigenza:

Un cliente mi ha chiesto un sito, però, vuole che il campo NEWS possa essere aggiornato direttamente da lui...visto che non conosco php (uso bene l'Html) vi chidevo come risolvo il problema???
Leggendo un pò in giro vedo che i più usati, in alternativa a php e asp, sono Joomla e Wordpress. Secondo voi sono una buona soluzione??? Ma come si installano???

Grazie

Inga15
04-05-2009, 12:32
Raga ho scaricato questo script e lo stavo provando sul server del mio sito, ma quando vado ad inserire la "NEWS" mi da il seguente errore:

Warning: fopen(news.txt) [function.fopen]: failed to open stream: Permission denied in D:\inetpub\webs\artisticacasadeicom\prove\control_panel.php on line 117

Warning: fwrite(): supplied argument is not a valid stream resource in D:\inetpub\webs\artisticacasadeicom\prove\control_panel.php on line 119

Warning: fclose(): supplied argument is not a valid stream resource in D:\inetpub\webs\artisticacasadeicom\prove\control_panel.php on line 120Non essendo un esperto gli dareste uno sguardo magari corregendo gli errori? Magari dandomi anche qualche suggerimento
Grazie

I file che ho sono i seguenti "control_panel.php":

<html>
<head><title>news</title>
</head>
<body>
<?
$file="news.txt";
$textarray=file($file);

$action=$_GET["action"];

switch ($action)
{

case 1:
$id_mod=$_GET['id'];
if (isset($id_mod))
{
$i=0;
$handle1 = fopen($file, "r");
while($i<count($textarray))
{
list($id, $title_mod, $text_mod, $date)= explode("@", $textarray[$i]);
if ($id==$id_mod)
{
echo "<form action='control_panel.php' method='GET' name='mod_news'>
<input type=text name=title_mod tabindex=1 value=".$title_mod."><br>
<textarea tabindex=2 wrap=virtual name=text_mod cols=28 rows=6>".$text_mod."</textarea>";
echo "<input tabindex=3 type=submit value='Invia'>
<input type=hidden name=action value=3>
<input type=hidden name=id_mod value=".$id.">
<input type=reset tabindex=4 value='Reset'></form>";
}
$i=$i+1;
}
fclose($handle1);
}
break;


case 2:
$id_del=$_GET['id'];
$i=0;
$new_id=0;
$handle2 = fopen($file, "w");
while($i<count($textarray))
{
list($id, $title, $text, $date)= explode("@", $textarray[$i]);
if ($id!=$id_del)
{
$write2= $new_id."@".$title."@".$text."@".$date."";
fwrite ($handle2, $write2);
$new_id=$new_id+1;
}
$i=$i+1;
}
fclose($handle2);
break;

case 3:
$title_mod=$_GET['title_mod'];
$text_mod=$_GET['text_mod'];
$id_mod=$_GET['id_mod'];
$i=0;
$handle3=fopen($file, "w");
while($i<count($textarray))
{
list($id, $title, $text, $date)= explode("@", $textarray[$i]);
if ($id==$id_mod)
{
$textarray[$i]= $id."@".$title_mod."@".$text_mod."@".$date."";
fwrite($handle3, $textarray[$i]);
}
else
{
fwrite($handle3, $textarray[$i]);
}
$i=$i+1;
}
fclose($handle3);
break;
}
if ($action!="1")
{
echo "<form action='control_panel.php' method='GET' name='news'>
<input type=text name=title tabindex=1><br>
<textarea tabindex=2 wrap=virtual name=text cols=28 rows=6></textarea>";
echo "<input tabindex=3 type=submit value='Invia'>
<input type=reset tabindex=4 value='Reset'></form>";

}

echo "<form action=control_panel.php method=GET name=refresh>
<input type=submit value=Refresh></form>";

setlocale(LC_TIME, "it_IT");
$DATE= time();
$ARRAY_DATA=getdate($DATE);
$H = $ARRAY_DATA['hours'];
$M = $ARRAY_DATA['minutes'];
$S = $ARRAY_DATA['seconds'];
$T = $ARRAY_DATA['mon'];
$D = $ARRAY_DATA['mday'];
$Y = $ARRAY_DATA['year'];
$DATE=mktime($H, $M, $S, $T, $D, $Y);
$DATA=strftime('%Y-%m-%d %H:%M:%S', $DATE);


$text_new="";
$title_new="";
$text_new=$_REQUEST["text"];
$title_new=$_REQUEST["title"];
if ($text_new!="")
{
$text=str_replace("\n", "[BR]", $text);
$id=(count($textarray));
$handle = fopen ($file, "ab");
$write = $id."@".$title_new."@".$text_new."@".$DATA."\n";
fwrite ($handle, $write);
fclose($handle);
}



$i=(count($textarray))-1;
echo "<table border=1 frame=box width=100%><caption align=center>NEWS</caption>";
echo '<tr valign=center><th align=center><b>id</b></th><th align=center><b>titolo</b></th><th align=center><b>testo</b></th><th align=center><b>data</b></th><th align=center><b>Modifica</b></th><th align=center><b>Cancella</b></th></tr>';
while($i>=0)
{
$string=substr($textarray[$i], 0,-1);
list($id, $title, $text, $date)=explode("@", $string);
$text=str_replace("[BR]", "<br>", $text);

echo "<tr valign=center><td align=center>".$id."</td><td>".$title."</td><td>".$text."</td><td width=170 align=center>".$date."</td><td align=center width=100>";
echo "<form action='control_panel.php' method=GET name=var>
<input type=submit value=Modifica>
<input type=hidden name=action value=1>
<input type=hidden name=id value=".$id."></form></td><td align=center width=100>";
echo "<form action='control_panel.php' method=GET name=del>
<input type=submit value=Cancella>
<input type=hidden name=action value=2>
<input type=hidden name=id value=".$id."></form>";
echo '</td></tr>';

$i=$i-1;
}
echo '</table>';

?>
</body>
</html>e "news.php":

<html>
<head><title>news</title>
</head>
<body>
<?php
$file="news.txt";
$textarray=file($file);
$i=(count($textarray))-1;
echo "<table border=1 frame=box width=70%><caption align=center>NEWS</caption>";
while($i>=0)
{
$string=substr($textarray[$i], 0,-1);
list($id, $title, $text, $data)=explode("@", $string);
$text=str_replace("[BR]", "<br>", $text);
echo '<tr valign=center>';
echo "<td colspan=2 align=center><b>".$title."</b></td></tr><tr valign=center><td>".$text."</td><td width=170 align=center>".$data."</td>";
echo '</tr>';
$i=$i-1 ;
}
echo '</table>';
?>
</body>
</html>Entrambi comunicano con un file di testo vuoto "news.txt"

Grazie in anticipo

CozzaAmara
04-05-2009, 20:18
Controlla i permessi per il file news.txt

Inga15
05-05-2009, 09:01
Controlla i permessi per il file news.txt

Ciao, potresti indicarmi come fare per controllare i permessi e per, eventualmente, cambiarli??
Uso XP

Grazie

CozzaAmara
05-05-2009, 19:38
Se usi un client FTP come ad esempio Filezilla, puoi connetterti alla directory con il file news.txt, cliccarvi sopra con il tasto destro e cambiarne gli "attributi file" verificando che siano sia in "lettura" che "scrittura", "esecuzione" non ti serve.