Gå til innhold

Merkelig problem ved henting av info fra tekstfil


Anbefalte innlegg

Hei!

 

Jeg har følgende nettside: http://www.erlenddahl.moo.no .

 

Den er (som du forhåpentligvis ser) bygget opp av tabeller, en tabell pr punkt som skal vises.

 

Desse tabellene blir laget i en for-løkke, som går gjennom data fra en normal tekstfil, der hvert presentasjonspunkt (inneholder tittel, link, litt info om det, og link til bildet) er adskilt fra de andre med tre mellomrom.

 

Så det som viser i den første tabellen (nettavisen) står som følger i tekstfilen:

Nettavis //tittel
oynytt.jpg //bilde
I samband med norskprosjekt vart denne nettavisa skreve av mi gruppe, og designa av meg. //informasjon
[link]|Gå til nettavis|0|0|<|> //link, det som skal stå på linken, og diverse tellerinformasjon

 

Og alt dette virker som det skal.

 

Helt til jeg introduserte online-editing, som du finner via "administrasjon"-linken nederst på siden (men du har ikke passordet...). Her henter jeg inn tekstfilen til et textarea, endrer denne, og bruker så POST-metoden til å lagre det til tekstfilen igjen. Hvis det er viktig, så ligger innholdet i admin-php-filen i spoileren under.

Skjult tekst: (Marker innholdet i feltet for å se teksten):

<?php

if ($_POST["execute"] == "mail") {
if($id=="0"){
$hara = $_POST['from'];

if (md5($hara)=="[sensurert]"){
$content=loadfile("txt.txt");

print <<<HTML
<form method="POST" action="admin.php?id=1">
<input type="hidden" name="execute" value="mail">
<textarea name="innhold" cols="120" rows="30">$content</textarea>
<br><input type="submit" value="Lagre">
</form>
HTML;

}else{
echo "Feil passord!<br>";
echo "<a href='index.php'>Tilbake</a>";
};//End rett passord
}else{
savefile("txt.txt",$_POST['innhold']);
}
} else {


echo <<<CRAP
<!-- Html stuff -->
<h2>Administrasjon</h2><br>
<form method="POST" action="admin.php?id=0">
<table border='0'>
<input type="hidden" name="execute" value="mail">
<tr><td>Passord:</td><td><input type="password" name="from" size="30"></td></tr>
</table>
<br><input type="submit" value="Send">
</form>
CRAP;
};

function savefile($fname,$data) {
     $f=fopen($fname,"w");
     fwrite($f,$data);
     fclose($f);
}

function loadfile($fname) {
     $f=fopen($fname,"r");
     $data=fread($f,filesize($fname));
     fclose($f);

     //$data = strstr($data, '=');
     //$data = str_replace('=', '', $data);

     return $data;
}

?>

 

Den er litt rotete vet jeg, men det får klare seg. Den virker jo tross alt. Den er bygget opp av ulike kodesnutter jeg har funnet (for det meste på hw-forumet) og litt jeg har laget selv.

 

Men, her kommer problemet:

 

Etter at denne er brukt, ser det ut som index.php bare hopper over hele for-løkken min. Overskriften viser, eksekveringstiden og admin-linken viser, men det som skal presenteres i tabellene er helt borte vekk.

 

Og jeg vet med sikkerhet at tekstfilen blir lastet inn, for øverst i denne står det litt info om hvor brede tabellene skal være, og denne infoen blir brukt til å lage tabellen til admin, eksekvering, og statistikk-greiene nederst.

 

Når jeg derimot bare bruker "edit" i SmartFTP (som laster ned filen, åpner den, og laster filen opp igjen når jeg er ferdig), så funker alt - selv om jeg ikke har gjort noen endringer i hele tatt.

 

Så det forekommer meg at feilen ligger i et eller annet som SmartFTP "fikser" når jeg laster ned og opp igjen filen.

 

Noen forslag på hvordan jeg kan løse dette problemet?

 

Takk,

Degeim

Endret av Degeim
Lenke til kommentar
Videoannonse
Annonse

Jeg har nå funnet ut at det jeg før sa - om at det var nok å laste filen ned og opp igjen - er feil. Jeg må laste den ned, fjerne noe, laste den opp, for så å laste den ned og legge alt til igjen, og så laste den opp for at det skal virke.

 

Altså kan det se ut til at admin-php-filen lagrer det i et format index-php-filen min ikke kan åpne, men SmartFTP omformer filen til et format index-php-filen kan åpne.

 

Noen som har løsninger på dette merkelige problemet?

 

Takk,

Degeim

Lenke til kommentar

Hei,

 

Har du sammenlignet filen som blir lagret fra POST med den originale filen?

Dersom magic_quotes er enabled (standard av sikkerthetsgrunner), så vil for eksempel alle spesielle tegn bli escaped.

 

$content = stripslashes($_POST['innhold']);

vil fikse det.

 

Det kan også ha med formatering av linjeskift å gjøre, slik at php ser det som en eneste stor linje. Da kan du prøve følgende:

 

$content = preg_replace("/(\r\n|\n|\r)/", "\n", $_POST['innhold']);

Endret av playahead
Lenke til kommentar

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...