Avatar billede mpagh Nybegynder
11. januar 2007 - 16:10 Der er 12 kommentarer og
1 løsning

skriv i html filer

skal bruge en php fil der kan lave en liste over html filer i en mappe og hvis man klikker på dem skal man kunne ændre indholdet.. ikke navnet KUN indholdet og ingen wysiwyg editor..
Avatar billede shooka Nybegynder
12. januar 2007 - 00:56 #1
Jeg har lige hurtigt smasket nogle koder sammen, som jeg havde liggende:


<?
if(is_dir($_GET['dir']) && !empty($_GET['dir'])){$theDirectory = $_GET['dir']; $get = 1;}else{$theDirectory = ".";}
if(is_dir($theDirectory) && empty($_GET['fil']))
{
    echo "<table><tr><td>Navn</td><td>Type</td><td>Rediger</td></tr>";
    $dir = opendir($theDirectory);
    while(false !== ($file = readdir($dir)))
    {
        $type    = filetype($theDirectory ."/". $file);
        if($type != "dir")
        {
            echo "<tr><td>" . $file . "</td>";
            echo "<td>" . $type . "</td>";
            echo "<td>";
            if($type == "file")
    if(!empty($_GET['dir']))
    {
    echo "<a href=\"?fil=" . $_GET['dir'] . "/" . $file . "\">OK</a>";
    }
    else
    {
    echo "<a href=\"?fil=" . $file . "\">OK</a>";
    }
            echo "</td></tr>";
        }
        else
        {
    if($get == 1){$href = "href=\"?dir=".$_GET['dir']."/" . $file . "\"";}else{$href = "href=\"?dir=" . $file . "\"";}
            echo "<tr><td><a ".$href.">" . $file ."</a></td>";
            echo "<td>" . $type . "</td>";
            echo "<td>Kan ikke redigeres</td></tr>";
        }
    }
    closedir($dir);
    echo "</table>";
}
else if(empty($_GET['fil']))
{
    echo $theDirectory . " er ikke en mappe";
}


if(!empty($_GET['fil']))
{
$fil = $_GET['fil'];

global $submit;
if ($submit) {
header("Location: ".$_SERVER['PHP_SELF']);
$skrivtil = fopen($fil, "w");
$nytindhold = str_replace("\\","",$nytindhold);
fputs($skrivtil, $nytindhold);
fclose($skrivtil);
}
?>
<html><head><title>Rediger en fil</title>
<center>
<form action="" method="post">
<table border="4" bordercolor="black" cellpadding="12" cellspacing="0"><tr>
    <th class="blue"><span class="big">Rediger fil</span></th>
</tr><tr>
    <td valign="top" align="center" nowrap>Indtast nyt indhold, og klik på "opdater"<br><br>

<textarea name="nytindhold" cols="56" rows="16">
<?php
$indhold = str_replace("\\", "", readfile($fil));
echo $indhold;
?></textarea><br><br>
<input type="submit" name="submit" value="Opdater"></td>

</tr><tr>

    <th colspan="2" class="blue"><span class="small">&nbsp;</span></th>

</tr></table>
<?php
}
?>
Avatar billede mpagh Nybegynder
12. januar 2007 - 15:04 #2
skide godt men tror du at du kan lave det sådan så den ikke viser . og .. og at den bare laver listen så man skal klikke på navnet og ikke ok..?
Avatar billede mpagh Nybegynder
12. januar 2007 - 15:12 #3
og det må ikke være muligt at ændre php filer.. KUN html filer...
Avatar billede mpagh Nybegynder
12. januar 2007 - 15:18 #4
hvis man klikker på opdater sker der ikke andet end at alt man har skrevet forsvinder og den viser det samme indhold igen!
Avatar billede shooka Nybegynder
13. januar 2007 - 02:16 #5
Så skulle det være fikset:

<?
$theDirectory = ".";
if(is_dir($theDirectory) && empty($_GET['fil']))
{
    echo "<table><tr><td>Navn</td><td>Type</td></tr>";
    $dir = opendir($theDirectory);
    while(false !== ($file = readdir($dir)))
    {
        $type    = filetype($theDirectory ."/". $file);
    $filtype = explode(".", $file);
        if($type != "dir" && $file != "." && $file != ".." && end($filtype) == "html")
        {
            echo "<tr><td><a href=\"?fil=" . $file . "\">" . $file . "</a></td>";
            echo "<td>fil</td>";
            echo "</td></tr>";
        }
        else if($type == "dir" && $file != "." && $file != "..")
        {
            echo "<tr><td>" . $file ."</td>";
            echo "<td>mappe</td>";
        }
    }
    closedir($dir);
    echo "</table>";
}
else if(empty($_GET['fil']))
{
    echo $theDirectory . " er ikke en mappe";
}


if(!empty($_GET['fil']))
{
$fil = $_GET['fil'];

if ($_POST['submit']) {
$skrivtil = fopen($fil, "w");
$nytindhold = str_replace("\\","",$nytindhold);
fputs($skrivtil, $nytindhold);
fclose($skrivtil);
header("Location: ".$_SERVER['PHP_SELF']);
}
?>
<center>
<form action="" method="post">
<table border="4" bordercolor="black" cellpadding="12" cellspacing="0"><tr>
    <th>Rediger fil</th>
</tr><tr>
    <td valign="top" align="center" nowrap>Indtast nyt indhold, og klik på "opdater"<br><br>

<textarea name="nytindhold" cols="56" rows="16">
<?php
$indhold = str_replace("\\", "", readfile($fil));
echo $indhold;
?></textarea><br><br>
<input type="submit" name="submit" value="Opdater"></td>

</tr><tr>

    <th colspan="2"> </th>

</tr></table>
<?php
}
?>
Avatar billede mpagh Nybegynder
13. januar 2007 - 09:30 #6
godt men nu kan man ikke åbne mapper... og kan du gøre sådan så man både kan ændre .html OG .htm? ikke php
Avatar billede shooka Nybegynder
13. januar 2007 - 14:47 #7
Nu kan man åbne mapperne, og man kan kun ændre i filer, hvor filtypenavnet er .html og .htm:

<?
if(is_dir($_GET['dir']) && !empty($_GET['dir'])){$theDirectory = $_GET['dir']; $get = 1;}else{$theDirectory = ".";}
if(is_dir($theDirectory) && empty($_GET['fil']))
{
    echo "<table><tr><td style=\"width: 150px;\">Navn</td><td>Type</td></tr>";
    $dir = opendir($theDirectory);
    while(false !== ($file = readdir($dir)))
    {
        $type    = filetype($theDirectory ."/". $file);
        $filtype = explode(".", $file);
        if($type != "dir" && $file != "." && $file != ".." && end($filtype) == "html")
        {
    if(!empty($_GET['dir']))
    {
    echo "<tr><td><a href=\"?fil=" . $_GET['dir'] . "/" . $file . "\">" . $file . "</a></td>";
    }
    else
    {
    echo "<tr><td><a href=\"?fil=" . $file . "\">" . $file . "</a></td>";
    }
            echo "<td>fil</td></tr>";
        }
        else if($type == "dir" && $file != "." && $file != "..")
        {
    if($get == 1){$href = "href=\"?dir=".$_GET['dir']."/" . $file . "\"";}else{$href = "href=\"?dir=" . $file . "\"";}
            echo "<tr><td><a ".$href.">" . $file ."</a></td>";
            echo "<td>mappe</td></tr>";
        }
    }
    closedir($dir);
    echo "</table>";
}
else if(empty($_GET['fil']))
{
    echo $theDirectory . " er ikke en mappe";
}


if(!empty($_GET['fil']))
{
$fil = $_GET['fil'];

global $submit;
if ($submit) {
header("Location: ".$_SERVER['PHP_SELF']);
$skrivtil = fopen($fil, "w");
$nytindhold = str_replace("\\","",$nytindhold);
fputs($skrivtil, $nytindhold);
fclose($skrivtil);
}
?>
<center>
<form action="" method="post">
<table border="4" bordercolor="black" cellpadding="12" cellspacing="0"><tr>
    <th>Rediger fi</th>
</tr><tr>
    <td valign="top" align="center" nowrap>Indtast nyt indhold, og klik på "opdater"<br><br>

<textarea name="nytindhold" cols="56" rows="16">
<?php
$indhold = str_replace("\\", "", readfile($fil));
echo $indhold;
?></textarea><br><br>
<input type="submit" name="submit" value="Opdater"></td>

</tr><tr>

    <th colspan="2"> </th>

</tr></table>
<?php
}
?>
Avatar billede mpagh Nybegynder
13. januar 2007 - 14:59 #8
tusind tak! men gider du ikke gøre sådan så man kommer tilbage til listen når den har gemt det nye indhold? og så lige at der ikke står type? gider du at skrive det i et svar? så giver jeg point
Avatar billede mpagh Nybegynder
13. januar 2007 - 15:12 #9
kom med et svar shooka det hele virker!
Avatar billede mpagh Nybegynder
13. januar 2007 - 15:32 #10
nej det vil stadig kun med .html den skal også kunne med .htm?
Avatar billede shooka Nybegynder
13. januar 2007 - 15:48 #11
Nu skal det altså virke:

<?
if(is_dir($_GET['dir']) && !empty($_GET['dir'])){$theDirectory = $_GET['dir']; $get = 1;}else{$theDirectory = ".";}
if(is_dir($theDirectory) && empty($_GET['fil']))
{
    echo "<table><tr><td style=\"width: 150px;\">Navn</td></tr>";
    $dir = opendir($theDirectory);
    while(false !== ($file = readdir($dir)))
    {
        $type    = filetype($theDirectory ."/". $file);
        $filtype = explode(".", $file);
        if($type != "dir" && $file != "." && $file != ".." && (end($filtype) == "html" || end($filtype) == "htm"))
        {
    if(!empty($_GET['dir']))
    {
    echo "<tr><td><a href=\"?fil=" . $_GET['dir'] . "/" . $file . "\">" . $file . "</a></td></tr>";
    }
    else
    {
    echo "<tr><td><a href=\"?fil=" . $file . "\">" . $file . "</a></td></tr>";
    }
        }
        else if($type == "dir" && $file != "." && $file != "..")
        {
    if($get == 1){$href = "href=\"?dir=".$_GET['dir']."/" . $file . "\"";}else{$href = "href=\"?dir=" . $file . "\"";}
            echo "<tr><td><a ".$href.">" . $file ."</a></td></tr>";
        }
    }
    closedir($dir);
    echo "</table>";
}
else if(empty($_GET['fil']))
{
    echo $theDirectory . " er ikke en mappe";
}


if(!empty($_GET['fil']))
{
$fil = $_GET['fil'];

global $submit;
if ($submit) {
$skrivtil = fopen($fil, "w");
$nytindhold = str_replace("\\","",$nytindhold);
fputs($skrivtil, $nytindhold);
fclose($skrivtil);
header("Location: ".$_SERVER['PHP_SELF']);
}
?>
<center>
<form action="" method="post">
<table border="4" bordercolor="black" cellpadding="12" cellspacing="0"><tr>
    <th>Rediger fi</th>
</tr><tr>
    <td valign="top" align="center" nowrap>Indtast nyt indhold, og klik på "opdater"<br><br>

<textarea name="nytindhold" cols="56" rows="16">
<?php
$indhold = str_replace("\\", "", readfile($fil));
echo $indhold;
?></textarea><br><br>
<input type="submit" name="submit" value="Opdater"></td>

</tr><tr>

    <th colspan="2"> </th>

</tr></table>
<?php
}
?>
Avatar billede phplover Nybegynder
29. januar 2007 - 14:10 #12
hejsa kiggede lige på koden og prøvede den selv alt virker nice... men når jeg trykker på opdatere vil den ikke opdatere html filen? Har kopiret direkte over herfra eksperten.dk ... kan i sige hvad jeg gør galt?
er det pga noget med header("Location: ".$_SERVER['PHP_SELF']); ??

Håber i vil svare.
Avatar billede kodak Mester
08. marts 2007 - 01:56 #13
Den skrive da ikke det nye ind.
Den gør det kun muligt at se kilde koderne.

Jeg har ikke mulig hed for at rette html filen.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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