29. november 2003 - 14:14
Der er
19 kommentarer og 1 løsning
Fejl i gemme script
Hej, jeg er ved at lave dette simple og meget newbee agtige script men det virker ikke. Hvorfor ikke? <?php if ($load_arc) { $lines = file($filnavn); $output = ""; for($i=0;$i<sizeof($lines);$i++){ $output.= $lines[$i] . ""; } } ?> <FORM ACTION="" METHOD="post" NAME="form"> <select name="filnavn"> <option value="1.txt">nummer1</option> <option value="2.txt">nummer2</option> </select> <BR> <TEXTAREA COLS="40" ROWS="9" NAME="loadarea"><?php echo $output; ?></TEXTAREA> <BR> <INPUT TYPE="submit" NAME="load_arc" VALUE="Load"> </FORM> <? if ($gem_arc) { $writefilename = $filnavn; $writefile = fopen($writefilename, "w"); fwrite ($writefile, $loadarea); fclose ($writefile); print("<b>saved!</b><br>"); } ?> <FORM ACTION="" METHOD="post" NAME="form"> <INPUT TYPE="submit" NAME="gem_arc" VALUE="Save"> </FORM>
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
29. november 2003 - 14:20
#1
Hvad er det der ikke virker??? Hvis det er if ($load_arc) { ... }, så prøv med if ($_POST["load_arc"]) { istedet....
29. november 2003 - 14:23
#2
Jeg får denne besked: Warning: fopen("", "w") - Inappropriate ioctl for device in /home/sites/sitexxx/edit.php on line 40 Warning: Supplied argument is not a valid File-Handle resource in /home/sites/sitexxx/edit.php on line 41 Warning: Supplied argument is not a valid File-Handle resource in /home/sites/sitexxx/edit.php on line 42 saved!
Slettet bruger
29. november 2003 - 14:25
#3
Jeg vil gætte på at register_globals er sat til off, så du skal bruge $__POST['load_arc'] i stedet for $load_arc og ligeledes for $filnavn Derudover er det meget farligt at bruge et filnavn direkte, når det kommer fra brugeren.
Slettet bruger
29. november 2003 - 14:26
#4
Derudover er din Save knap en formular for sig selv, så når du klikker på den, glemmer den lystigt den anden formular.
29. november 2003 - 14:54
#5
Hvordan skal koden så se ud?
Slettet bruger
29. november 2003 - 20:54
#6
For at det skal virker, skal du have din Save-knap op i den anden formular. Bare placer det to <input type="submit"...> lige efter hinanden. Derudover kan du øge sikkerheden, ved at have et array i starten, som er defineret som: $filer[1]="1.txt"; $filer[2]="2.txt"; og ændre din selects optionværdier til bare at være det passende nummer i dit array. Når du så skal bruge filnavnet, bruger du $filer[$filnavn] istedet for bare $filnavn.
30. november 2003 - 11:21
#7
hmm, jeg kan ikke rigtig få det til at virke.. kan du lave koden hvis jeg hæver pointene til 30?
Slettet bruger
30. november 2003 - 11:25
#8
Vis lige din kode som den ser ud nu, og så skal jeg se på det.
30. november 2003 - 14:59
#9
jeg har ingen kode der virker.. har faktisk slettet det hele. det eneste der er tilbage er den i dette indlæg.. håber du kan brige det?
Slettet bruger
30. november 2003 - 18:33
#10
<?php $filer['1.txt']="1.txt"; $filer['2.txt']="2.txt"; if ($load_arc) { $lines = file($filer[$filnavn]); $output = ""; for($i=0;$i<sizeof($lines);$i++){ $output.= $lines[$i] . ""; } } ?> <FORM ACTION="" METHOD="post" NAME="form"> <select name="filnavn"> <option value="1.txt">nummer1</option> <option value="2.txt">nummer2</option> </select> <BR> <TEXTAREA COLS="40" ROWS="9" NAME="loadarea"><?php echo $output; ?></TEXTAREA> <BR> <INPUT TYPE="submit" NAME="load_arc" VALUE="Load"> <INPUT TYPE="submit" NAME="gem_arc" VALUE="Save"> </FORM> <? if ($gem_arc) { $writefilename = $filer[$filnavn]; $writefile = fopen($writefilename, "w"); fwrite ($writefile, $loadarea); fclose ($writefile); print("<b>saved!</b><br>"); } ?>
30. november 2003 - 23:03
#11
den gemmer det men ikke i den rigtige fil.. nogle gange gemmer den ændringerne i begge filer..?
Slettet bruger
01. december 2003 - 01:07
#12
Husk, at før du klikker save, skal du sikre dig, at det er det rette filnavn, der er valgt. Også selv om du lige har loadet den.
01. december 2003 - 10:18
#13
Prøv scriptet selv - Det virker ikke helt. Men næsten! :)
01. december 2003 - 10:28
#14
Nu virker scriptet - Har lavet lidt om på det: <?php if ($load_arc) { $lines = file($filnavn); $output = ""; for($i=0;$i<sizeof($lines);$i++){ $output.= $lines[$i] . ""; } } ?> <FORM ACTION="" METHOD="post" NAME="form"> <select name="filnavn"> <option value="ram.txt">RAM</option> <option value="outh.txt">Outh</option> </select> <BR> <TEXTAREA COLS="40" ROWS="9" NAME="loadarea"><?php echo $output; ?></TEXTAREA> <BR> <INPUT TYPE="submit" NAME="load_arc" VALUE="Load"> <INPUT TYPE="submit" NAME="gem_arc" VALUE="Save"> </FORM> <?php if ($gem_arc) { $writefilename = $filnavn; $writefile = fopen($writefilename, "w"); fwrite ($writefile, $loadarea); fclose ($writefile); print("<b>saved!</b><br>"); } ?> Nu mangler jeg bare at få "stripslashes" arbejdet ind i det? Hvor er det jeg gør det? ved fclose?
01. december 2003 - 10:28
#15
ps: hvordan hæver jeg pointsene til 30?
Slettet bruger
01. december 2003 - 10:46
#16
Nu bruger du igen et filnavn direkte fra browseren. Havd gør du, hvis brugeren laver en kopi af din side, og retter et filnavn til f.eks. "/etc/passwd"? stripslashes skal gøres f.eks ved starten af scriptet på de variable, der har brug for det. Jeg tror nok man kan væle at tildele ekstra point, når man accepterer svar, men jeg ved det ikke. Har ikke selv stillet spørgsmål endnu.
01. december 2003 - 11:15
#17
jamen hvis man ændrer filnavnet til nopget andet krvæer det vel at den falgte fil er chmod'ed så den kan skrives i.. ? ja, man kunne engang klikke en knap der hed 'avanceret' men den er her ikke nu ?... :(
Slettet bruger
01. december 2003 - 11:27
#18
Nogle gange er det farligt nok, at fremmede kan få filen at se. Tænk f.eks. på filen med passwords til en database. For at dit phpscript skal kunne bruge dem, skal den kunne læse filen. Dermed ville denne lille editor også være i stand til at læse den. Bagefter lægger man bare en ny fil, med efternavnet .php, og så kan man gøre næsten hvadsomhelst.
Slettet bruger
01. december 2003 - 11:29
#19
Tak for points forresten
01. december 2003 - 11:33
#20
det har du ret i.. dette skal heldigvis bruges til en lille side. men jeg vil da have den bedre sikret næste gang. tak for hjælpen!! :D
Vi tilbyder markedets bedste kurser inden for webudvikling