Degeim Skrevet 8. juni 2006 Del Skrevet 8. juni 2006 (endret) 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 11. juni 2006 av Degeim Lenke til kommentar
Degeim Skrevet 8. juni 2006 Forfatter Del Skrevet 8. juni 2006 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
playahead Skrevet 9. juni 2006 Del Skrevet 9. juni 2006 (endret) 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 9. juni 2006 av playahead Lenke til kommentar
Degeim Skrevet 9. juni 2006 Forfatter Del Skrevet 9. juni 2006 Filene har nøyaktig samme størrelse, innhold og CHMod før og etter. Men din preg_replace løste problemet. Tusen takk skal du ha! Degeim Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå