Gå til innhold

Problem med eit "redigeringssystem" sammen med ein innloggingsfunksjon


Anbefalte innlegg

Skrevet (endret)

Eg holder på å laga ei sia i php der da skal vera mulig å redigera sia uten å gå inn i kildekoden, altså ved å logga inn og so forandra.

Eg søkte litt på forumet og fant eit "redigeringssystem" som virka ganske fint, men då eg låg den sammen med innloggingsfunksjonen min så virka redigeringssystemet kun halveis. Med andre ord: Eg ser alle filena eg har lasta opp som linka, men når eg trykke på ein dei so forsvinne listo uten at textboxen kjem opp.

 

Uten innloggingsfunksjonen:

 

<?php
$file = $_GET['file'];
$innhold = file_get_contents($file);
$this_file = basename($_SERVER['PHP_SELF']);
if (!isset($file)) {
if ($handle = opendir('.')) {
while (false !== ($fil = readdir($handle))) {
if ($fil != "." && $fil != "..") {
echo "<a href=\"$this_file?file=$fil\">$fil</a><br />\r\n";
}
}
}
closedir($handle);
} else if ($_GET['step'] == "1") {
$handle = fopen($file, "w");
fwrite($handle, $_POST['text']);
fclose($handle);
echo "Fullført!";
} else {
?>
<form action="<?= $this_file."?step=1&".$_SERVER['QUERY_STRING'] ?>" method="post">
<textarea name="text"><?= $innhold ?></textarea><br />
<input type="submit" value="Lagre!" />
</form>
<?php
}
?>

 

 

Med innloggingsfunksjonen:

 

<?php

$brukernavn = "admin";
$passord = "test";

if($_POST['brukernavn'] == $brukernavn) {
if($_POST['passord'] == $passord) {


$file = $_GET['file'];
$innhold = file_get_contents($file);
$this_file = basename($_SERVER['PHP_SELF']);
if (!isset($file)) {
if ($handle = opendir('.')) {
while (false !== ($fil = readdir($handle))) {
if ($fil != "." && $fil != "..") {
echo "<a href=\"$this_file?file=$fil\">$fil</a><br />\r\n";
}
}
}
closedir($handle);
} else if ($_GET['step'] == "1") {
$handle = fopen($file, "w");
fwrite($handle, $_POST['text']);
fclose($handle);
echo "Fullført!";
} else {
echo '
<form action="<?= $this_file."?step=1&".$_SERVER['QUERY_STRING'] ?>" method="post">
<textarea name="text" rows="50" cols="50"><?= $innhold ?></textarea><br />
<input type="submit" value="Lagre!" />
</form>
';
}

} else { echo(""); }
} else { echo(""); }

?>

 

 

Er da nåken som ser kva eg har gjort feil?

Endret av Kolb
Videoannonse
Annonse
Gjest Slettet+142
Skrevet

Vet ikke om dette er løsningen med:

  • Ikke bruk shorttags. - Bruk <?php ?>
  • Kjør htmlspecialchars() på $innhold før du printer det ut til textboxen.

Skrevet (endret)

No har da seg sånn at eg er ein meir "copy/paste" person, og derfor skjønner eg ikkje heilt kva du meiner.

 

Kor har eg brukt "shorttags"?

 

Meiner du at eg skal skriva:

<?php ...
$file = $_GET['file'];
$innhold = file_get_contents($file);
$innhold = htmlspecialchars(ENT_QUOTES);
$this_file = basename($_SERVER['PHP_SELF']);
... ?>

Endret av Kolb
Gjest Slettet+142
Skrevet

nei, jeg vil at du skal skrive

<?php ...
$file = $_GET['file'];
$innhold = file_get_contents($file);
$innhold = htmlspecialchars($innhold);
$this_file = basename($_SERVER['PHP_SELF']);
... ?>

 

Shorttags har du brukt alle steder du skrev <?= $<variabelnavn> ?>. Bytt det heller ut med <?php echo $<variabelnavn>; ?> ;)

Skrevet (endret)

Har fiksa på shorttags-ena og kjørt htmlspecialchars() på $innhold, men da er fremdeles ingen endring og redigeringssystemet fungerer kun halveis.

 

Takk for hjelpen, mariyo, men da ser ikkje ut til at da hjalp.

 

Her er den nye koden:

Klikk for å se/fjerne innholdet nedenfor
<?php

$brukernavn = "admin";
$passord = "test";

if($_POST['brukernavn'] == $brukernavn) {
if($_POST['passord'] == $passord) {


$file = $_GET['file'];
$innhold = file_get_contents($file);
$innhold = htmlspecialchars($innhold);
$this_file = basename($_SERVER['PHP_SELF']);
if (!isset($file)) {
if ($handle = opendir('.')) {
while (false !== ($fil = readdir($handle))) {
if ($fil != "." && $fil != "..") {
echo "<a href=\"$this_file?file=$fil\">$fil</a><br />\r\n";
}
}
}
closedir($handle);
} else if ($_GET['step'] == "1") {
$handle = fopen($file, "r+");
fwrite($handle, $_POST['text']);
fclose($handle);
echo "Fullført!";
} else {
echo '
<form action="<?php echo $this_file."?step=1&".$_SERVER['QUERY_STRING']; ?>" method="post">
<textarea name="text" rows="50" cols="50"><?php echo $innhold; ?></textarea><br />
<input type="submit" value="Lagre!" />
</form>
';
}

} else { echo(""); }
} else { echo(""); }

?>

Endret av Kolb
Skrevet

At du sier at det ikke virker er greit nok, men hvis du kan være litt mer spesifikk blir det mye lettere å hjelpe. Hva er det som ikke virker? Får du en feilmelding?

Skrevet (endret)

Eg får ikkje opp feilmelding, men eg lurer på om det har nåke med at eg bruker home.no.net.

Eg trur òg problemet ligger i at eg pruker redigeringssystemet sammen med innloggingsfunksjonen min.

 

Eg fant redigeringssystemet mitt her.

 

Problemet er at linkena viser, men når eg trykker på ein av dei så forsvinner lista over linkena. Uten at koden til sia kommer opp i <textarea>.

Endret av Kolb

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...