Problema modificazione topic

Frank10

Utente Attivo
4 Mar 2011
187
1
18
Ciao a tutti,
La situazione che non mi riesce è la seguente, io ho un file chiamato "primo.php" che dovrebbe svolgere il compito di farmi visualizzare il texteditor nella textarea ed a seconda di ciò che scrivo convertire in html e mandarlo al file "uno.php" che viene richiamato dalla index con un include sul post scelto.

primo.php
Codice PHP

PHP:
<?php 
session_start();//inizializzi la sessione 
if(!isset( $_SESSION['password'])){//la sessione NON esite quindi vieni reindirizzato a dove vuoi tu 
    //in una certa misura impedisce l'accesso diretto es con http://www.tuo_sito.it/software/index.php 
    header("location:www.miosito.it");  
    exit(); 
} 
?> 
<?php 
if (isset($_POST['text1']))  
{ 
$text1 = $_POST['text1']; 
$fp = fopen("../ref/uno.php","w"); 
fwrite($fp,$text1); 
fclose($fp);} 
else{ 
// get contents of a file into a string 
$filename = "../ref/uno.php"; 
$handle = fopen($filename, "r"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 
} 

?> 
<html> 
<head> 
<script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script> 
<script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script> 
<link rel="stylesheet" type="text/css" href="../template_sw.css"> 
</head> 
<body> 
<div class="white"> 
<h3>PRIMO TOPIC</h3> 
<form action="primo.php" method="post"> 
<textarea cols="100" rows="50" name="text1"><?php echo "$contents" ?></textarea> 
<br> 
<input type="submit" value="Invia" /> 
</form> 
</div> 

</body> 
</html>
e uno.php ha tutto vuoto perchè contiene solo il codice che il primo.php dovrebbe mandarli.

La question è che questo meccanismo funziona solo in parte poichè. Io vado nella area protetta ed accedo al topic che voglio modificare, quindi mi entra su (primo.php) cui testo lo manda a uno.php che viene richiamato dalla index con una porzione di codice (include). Solo che io accedo a primo.php e mi da l'interfaccia grafica e tutto e se c'era già un testo me lo carica in auto, solo che se ne modifico i contenuti del testo caricato mi fa del bordello. Stessa cosa se cancello tutto e rifaccio da capo, ad esempio il rosso del texteditor me lo fa diventare poi un verde..

Un casino incredibile, forse per me dovuto al codice carica e salva fatto male.

P.S La logica che volevo io era, carica il codice da uno.php quindi il testo se c'è, se non c'è mi fa scrivere a me con il texteditor senza fare bordelli. Dopo in futuro se riaccedo lì mi carica il codice corretto e me lo fa modificare. Ah, ovviamente agli occhi miei il codice non si deve vedere ma si deve solo vedere l'output.

Grazie a chi mi aiuta
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
ciao
prova così
(ho tolto alcune cose per fare prima e ridotta la text area)
PHP:
<?php 
if (isset($_POST['text1'])) { 
	$text1 = $_POST['text1'];
	$fp = fopen("ref/uno.php","w"); 
	fwrite($fp,$text1); 
	fclose($fp);
	//questo serve per rifreshare e tornare al form rieseguendo lo script dopo che hai dato il submit
	echo "<meta http-equiv='Refresh' content='0; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}else{ 
	// get contents of a file into a string 
	$filename = "ref/uno.php"; 
	if(file_exists($filename)){//se esiste legge
	//potresti togliere la vecchia formattazione in modo da avere il testo pulito da tutti i tag html
	// e scrivendo o modificando poi li raggiungi
	//ti rimangono solo gli eventuali /r (a capo) che se vuoi puoi trasformarli in <br> e eliminare anche quelli
	//$contents =strip_tags(nl2br(file_get_contents($filename)));
	//in questo modo non dovresti avere la sovrapposizione con i vecchi tags
		$contents =strip_tags(file_get_contents($filename));
	}else{//se non esiste lo crea la prima volta che accedi
		$fp = fopen($filename,"w");
		fclose($fp);
		$contents ="";
	}
}
?>
<h3>PRIMO TOPIC</h3> 
<form action="primo.php" method="post"> 
<textarea cols="100" rows="5" name="text1"><?php echo "$contents" ?></textarea> 
<br> 
<input type="submit" value="Invia" /> 
</form>
 

Frank10

Utente Attivo
4 Mar 2011
187
1
18
Scusami se non ti ho risposto ma ero fuori.
In ogni caso al posto di $filename che dovrei mettere?
 

Frank10

Utente Attivo
4 Mar 2011
187
1
18
Gli errori che mi da sono:
PHP:
Warning: fopen(..ref/uno.php) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP-5.3.9\www\muro\software\appo\primo.php on line 28

Warning: fclose() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.9\www\muro\software\appo\primo.php on line 29

il file uno.php si trova: muro\software\ref\uno.php

Potrebbe essere questo ma non so
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
ciao
l'errore
Warning: fopen(..ref/uno.php) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP-5.3.9\www\muro\software\appo\primo.php on line 28
vuol dire che non trova il file uno.php il secondo è conseguenza del primo
da quello che ho capito devi mettere a posto i percorsi
se primo.php si trova in
muro\software\appo\primo.php
e
uno.php in
muro\software\ref\uno.php
il percorso da dare è
".../ref/uno.php"
in pratica vuo dire che da "appo" deve risalire a "software" (i tre punti) e da software deve entrare in "ref"
correggi tutti i percorsi e sappimi dire
 

Frank10

Utente Attivo
4 Mar 2011
187
1
18
Ciao,
Nulla da fare da sempre il solito errore anche con i 3 punti:

Warning: fopen(.../ref/uno.php) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP-5.3.9\www\muro\software\appo\primo.php on line 28

Warning: fclose() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.9\www\muro\software\appo\primo.php on line 29
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
ciao

}else{//se non esiste lo crea la prima volta che accedi
$fp = fopen($filename,"w"); è questa la riga 28?

se è quella metti un var_dump

PHP:
<?php
//......
}else{//se non esiste lo crea la prima volta che accedi
        var_dump($filename);
        $fp = fopen($filename,"w");
        fclose($fp);
        $contents ="";
    } 
//....
?>
e dimmi cosa riporta
 

Frank10

Utente Attivo
4 Mar 2011
187
1
18
Ciao mi riporta questo:
string '.../ref/uno.php' (length=15)

Warning: fopen(.../ref/uno.php) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP-5.3.9\www\muro\software\appo\primo.php on line 29

Warning: fclose() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.9\www\muro\software\appo\primo.php on line 30


Ho pensato ti potesse essere utile, questo è il file muro

Vedi l'allegato muro.zip
 

Frank10

Utente Attivo
4 Mar 2011
187
1
18
Ottimo, funziona. Crea solo un "problema" però, ovvero che quando lo ricarica la scritta appare senza modifiche.

Es il post lo metto come Ciao maiuscolo, rosso etc. Dopo quando vado a farne modifiche il text editor me lo fa vadere come ciao. null'altro di stile, neanche il centrato. Si può fare qualcosa?

Grazie!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
ciao
Ottimo, funziona. Crea solo un "problema" però, ovvero che quando lo ricarica la scritta appare senza modifiche.
lo so, ma per ora è l'unico metodo per non far sovrascivere i vari tag che eventualmete aggiungi nella modifica.
ci sto pensando
 

Frank10

Utente Attivo
4 Mar 2011
187
1
18
Grazie Borgo, fammi sapere se riesci arrivare a meta.. Io sto facendo qualche prova ma per ora non va.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.035
146
63
PR
www.borgo-italia.it
ciao
ho fatto diverse prove, ma è colpa di nicedit (e credo anche di altri editor wisi) che, se non tolti, sovrappone sempre i vari tags.
l'unico modo è toglierli, salvo i ritorni a capo per mantenere almeno una certa forma, e eventualmente rimettereli.

PHP:
<textarea cols="100" rows="100" name="text1"><?php echo strip_tags($contents, "<br><br /><p>"); ?></textarea>
poi secondo me ti conviene mettere un link drl tipo

PHP:
echo "<a href=\"alla_pag_che vuoi.php\">se non vuoi modificare clicca qui</a>";
in modo che non venga reiserito un testo uguale ma sensa formattazione
sorry