Avatar billede jahamnej Nybegynder
24. november 2004 - 11:11 Der er 12 kommentarer og
1 løsning

rettelser til online editor

Hejsa,

Jeg snuppede dette stykke kode fra et ældre indlæg...

<?php
if(isset($_POST["filnavnet"])) {
  $navn = $_POST["filnavnet"];
  $fp = fopen($navn, "w");
  fputs($fp, $_POST["teksten"]);
  fclose($fp);
}
?>
<br>
<form action="edit.php" target="_self" method="post">
  &nbsp;<select name="filnavn" onChange="this.form.submit()">
    <option selected>:: vælg fil ::</option>
    <option value="1.html">fil1</option>
    <option value="2.html">fil2</option>
    <option value="3.html">fil3</option>
    <option value="4.html">fil4</option>
  </select>
</form>
<form method="post" action="edit.php">
&nbsp;<textarea name="teksten" cols="50" rows="15" style="overflow : auto;">
<?php
$filen = $_POST["filnavn"];
$fil = implode ("", file($filen));
echo $fil;
?>
</textarea>
  <br>
<input type="hidden" name="filnavnet" value="<?php echo $filen; ?>">
<input type="submit" value="" style="width: 0px; height: 0px;">
<input type="submit" value="gem!" width="200">
</form>

Som man kan se går det ud på at editere i nogle HTML eller txt (whatever) filer online, og det virker faktisk men der er nogle bugs, som jeg har forsøgt at rette uden held.

Når jeg åbner siden, får jeg denne besked i form-feltet "<br />
<b>Warning</b>:  implode(): Bad arguments. in <b>/home/web/gb0056/txttest/edit.php</b> on line <b>29</b><br />
", samme besked kommer også når man har valgt,editeret og gemt en fil...

Det sjove er så, at den faktisk gemmer hvad man laver, og virker sådan rimelig godt, bare med denne bug.

Andet problem er at den laver om på HTML kode. Jeg skriver f. eks...

<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
Blah blah
</td>
</tr>
</table>

...og gemmer. Men når jeg så åbner filen igen, skriver den ->

<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td>
Blah blah
</td>
</tr>
</table>

Er det muligt at lave det sådan, at den ikke laver om på koden, altså indsætter \ og hvad den ellers kan finde på. Jeg søger bare en løsning, hvor den kun gemmer det jeg skriver og ikke tilføjer eller ændrer i noget.

Nogen som kan hjælpe mig med disse fejl?

Hvis man tester, så husk lige at CHMOD 777 html 1,2,3,4 filerne

Takker
Avatar billede bojo Nybegynder
24. november 2004 - 11:18 #1
du laver implode på "ingenting" det går ikke prøv
$fil = implode (" ", file($filen)); hvis filnavnene er adskildt af " "

tilføj stripslaches inden du gemmer:

$tekst = stripcslashes( $tekst );
Avatar billede jahamnej Nybegynder
24. november 2004 - 11:24 #2
det hjalp desværre ikke på implode linjen...

Hvor er det lige striplaches skal sættes ind i den kode her?
Avatar billede bojo Nybegynder
24. november 2004 - 12:26 #3
fputs($fp, striplaches($_POST["teksten"]));

den implode kan vist bare fjernes, det ser da ikke ud til at den bruges til noget
Avatar billede jahamnej Nybegynder
24. november 2004 - 12:54 #4
hmm, det gør den vist, for uden den, kan ingen filer vises... meget underligt.
Avatar billede jahamnej Nybegynder
24. november 2004 - 12:56 #5
jeg får i øvrigt denne fejl med striplaches

Fatal error: Call to undefined function: striplaches() in /home/web/gb0056/txttest/edit.php on line 11
Avatar billede bojo Nybegynder
24. november 2004 - 13:02 #6
det er ikke implode, men file der indlæser filen, så væk med implode

fra:

<?php
$filen = $_POST["filnavn"];
$fil = implode ("", file($filen));
echo $fil;
?>

til:

<?php
$filen = $_POST["filnavn"];
$fil = file($filen);
echo $fil;
?>


stavebøf - stripslashes ikke striplaches - http://dk2.php.net/manual/da/function.stripslashes.php
Avatar billede jahamnej Nybegynder
24. november 2004 - 13:28 #7
ahaa kewl,

men nu siger den bare array i form feltet hele tiden.
Avatar billede bojo Nybegynder
24. november 2004 - 13:41 #8
mig der er dum - sorry - file returnere en fil i et array og implode samler arrayet i en str.

<?php
if(isset($_POST["filnavnet"])) {
  $navn = $_POST["filnavnet"];
  $fp = fopen($navn, "w");
  fputs($fp, stripslashes( $_POST["teksten"]) );
  fclose($fp);
}
?>
<br>
<form action="edit.php" target="_self" method="post">
  &nbsp;<select name="filnavn" onChange="this.form.submit()">
    <option selected>:: vælg fil ::</option>
    <option value="bo.php">fil1</option>
    <option value="2.html">fil2</option>
    <option value="3.html">fil3</option>
    <option value="4.html">fil4</option>
  </select>
</form>
<form method="post" action="edit.php">
&nbsp;<textarea name="teksten" cols="50" rows="15" style="overflow : auto;">
<?php
$filen = $_POST["filnavn"];
if( isset( $filen ) )
  $fil = implode ("", file($filen));
echo $fil;
?>
</textarea>
  <br>
<input type="hidden" name="filnavnet" value="<?php echo $filen; ?>">
<input type="submit" value="" style="width: 0px; height: 0px;">
<input type="submit" value="gem!" width="200">
</form>
Avatar billede jahamnej Nybegynder
24. november 2004 - 13:45 #9
PERFEKT!

Mange tak for hjælpen, nu er det lige som jeg vil ha det. Stik lige et svar, så skal du få point.
Avatar billede bojo Nybegynder
24. november 2004 - 13:49 #10
nej tak, tag dem selv
Avatar billede jahamnej Nybegynder
24. november 2004 - 13:52 #11
Jo jo, du skal da have point. Jeg har nok at dele ud af. Når jeg i ny og næ popper hovedet ind og skal have svar på mine dumme spørgsmål, er der jo optjent en masse point for den forgangne periode
Avatar billede bojo Nybegynder
24. november 2004 - 14:42 #12
nej tak, jeg samler ikke, jeg hygger og øver mig bare
Avatar billede jahamnej Nybegynder
24. november 2004 - 14:43 #13
oki, det er sgu i orden. Respekt til dig.... men karma har du fået, og du kan ikke stoppe mig ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester