[PHP]Script zet steeds vanzelf een regel erbij

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben met een ftp scripje bezig.

Hiermee kan ik via PHP een ftp server benaderen, tevens zit er ook een edit functie in om bestanden te bewerken en vervolgens weer te saven.

Hier gaat iets mis en ik kan niet vinden wat het is.
Ik download eerst het bestand naar een temp folder, dit bestand is in orde als ik dat bekijk in de temp map.

Bij de volgende stap gaat het echter mis, ik open dit bestand en ineens maakt het script er regels bij.
bv:
hier regel 1
dan regel 2

wordt:
hier regel 1

dan regel 2

Zoals je ziet ineens een extra regel ertussen, als je dit saved en je opent het opnieuw zijn er weer meer regels bij gekomen.
Ik snap niet waarom het script er regels bijzet, de tempfile welke is gedownlaod en wordt bewerkt heeft dat niet.
Ook de code om te bewerken van de tempfile is niets bezonders, dit is de code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
                        $fp = fopen($downloadDir . $file, "w");
                        ftp_fget($connection,$fp,"$file",$mode) OR DIE(error downloading file);
                        fclose($fp);

                        $data = file_get_contents($downloadDir . $file);
                        $data = htmlspecialchars($data,ENT_QUOTES);
                        $data = trim($data);
                    ?>
                        <html>
                        <HEAD>
                            <SCRIPT LANGUAGE="JavaScript" SRC="include/script.js"></SCRIPT>
                        </HEAD>
                        <body>
                        <FORM METHOD=POST NAME='editFileForm' ACTION="<?php echo $php_self;?>">
                            <INPUT TYPE='hidden' NAME='actionType' VALUE='saveFile'>
                            <INPUT TYPE='hidden' NAME='currentDir' VALUE='<?php echo $currentDir;?>'>
                            <INPUT TYPE='hidden' NAME='file' VALUE='<?php echo $file;?>'>
                            <INPUT TYPE='hidden' NAME='mode' VALUE='<?php echo $mode;?>'>
                            <TEXTAREA NAME="fileContent" ROWS='30' COLS='80'><?php echo $data;?></TEXTAREA>
                            <br>
                            <INPUT TYPE="submit" value="save"><INPUT TYPE=button OnClick='cancelEditFile();' VALUE="cancel" >
                        </FORM>
                        </body>
                        </html>
                    <?php
                        unlink($downloadDir . $file);
                        exit;
                        break;


Iemand een idee hoe dit kan?

Acties:
  • 0 Henk 'm!

  • OverSoft
  • Registratie: December 2000
  • Laatst online: 18-09 11:09
Wat doet ie zonder die htmlentities erin?

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Waarschijnlijk download je hem van een Unix systeem (waar een carriage return en een line-feed, \r\n, worden gebruikt als regeleinde). en edit je hem op een Windows machine (waar zowe een \n als een \r zorgen voor de stap naar de volgende regel)

Gebruik eens "wb" in je fopen() om het bestand te openen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

frickY schreef op donderdag 26 januari 2006 @ 21:26:
Waarschijnlijk download je hem van een Unix systeem (waar een carriage return en een line-feed, \r\n, worden gebruikt als regeleinde). en edit je hem op een Windows machine (waar zowe een \n als een \r zorgen voor de stap naar de volgende regel)
Precies andersom, maar verder zou het best kunnen. :P In Windows is het \r\n, in Linux/UNIX is het alleen \n, en in OS/X geloof ik alleen \r.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Arch.. haal ze altijd door elkaar :X Maar het idee is er :)
Maar nu klopt het inderdaad beter; de regels 'verschijnen' pas na het uploaden van het bestand.

Van Unix (\r) naar Windows (\r\n) is er nog niets aan de hand.. maar terug heb je opeens een dubbel regeleinde.

[ Voor 65% gewijzigd door frickY op 26-01-2006 22:09 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat doet ie zonder die htmlentities erin?
Hetzelfde...
Waarschijnlijk download je hem van een Unix systeem
Gedeeltelijk, de webserver waarop dit script draait is inderdaad een Windows server in dit geval, maar ik hen het al geprobeert oms vanaf een linux en windows server te downloaden/editen. Het blijft hetzelfde.
Het bestand wat wordt gedownlaod en in de temp map staat is goed, dit is zonder die extra regels, echter zodra ik met de bovenstaande code dat bestand open(dat gebeurd dus op een windows bak) dan staan er ineens regels tussen......

Waar hoe kan ik dit nu oplossen?
Het gebeurd dus als je het goed bekijkt van Windows(de temp file) -> Windows (mijn stukje code) in mijn stukje code, maar ik zie niet waar....

Edit:
Slecht gelezen, de oorzaak was idd de b in de fopen, ergens stond ipv een b een t
Geen idee waarom ik dat toen een t gebruikt heb, maar nadat ik dit heb aangepast werkt het wel.

[ Voor 12% gewijzigd door Verwijderd op 26-01-2006 23:36 ]

Pagina: 1