Delo z datotekami
3 naročniki
3 naročniki
Imam 2 vprašanja,
1.) Kako zaščititi datoteko pred downloadnjem ? Da bi lahko samo z moje strani downloadali, ne pa z vsepovsod ? Tako da zakodiram url ? Recimolol.com/file.php?file=1 potem pa s header ... ? Ali kako drugače ?
2.) Druga stvar pa je, kako s PHP izpisati Word file ? .doc datoteke od MS Offlice, naredil bi namreč rad možnost, porenes ali oglej, tako še dobim vsebino indexirano :).
7 odgovorov
Za prvo vprašanje preprosto...
Vklopiš hotlink zaščito na gostovanju ali s skriptami (vprašaj ponudnika gostovanja ali google - hotlinking)
Imam 2 vprašanja,
1.) Kako zaščititi datoteko pred downloadnjem ? Da bi lahko samo z moje strani downloadali, ne pa z vsepovsod ? Tako da zakodiram url ? Recimolol.com/file.php?file=1 potem pa s header ... ? Ali kako drugače ?
Hmm ;)
Nisem se tega pocel ampak ce bi se spravil programsko resevat ta problem bi razmisljal v tej smeri:
a) datoteke ki bi bile namenjene za download bi vrgel v direktorij kateri nima direktnega dostopa -> .htaccess
b) dodatna varnost - transcriptor datotek in njihovi ustrezni md5 hashi.
c) v scripti file.php ki je wraper za download bi preverjal ali se upurabnik nahaja na ustrezni strani in dodatno moznost ce ima ustrezne pravice -> lahko tudi se preden se dejansko klice ta datoteka -> Ajax.
d) po ustrezni avtorizaciji userja (sem na pravi strani + imam pravice) force download datoteke preko skripte file.php + zapis v download.log - poglej v php manual kako mores nastaviti headerje.
2.) Druga stvar pa je, kako s PHP izpisati Word file ? .doc datoteke od MS Offlice, naredil bi namreč rad možnost, porenes ali oglej, tako še dobim vsebino indexirano :).
Tudi tega se nisem delal :) Php ima vgrajeno podporo za COM (Component Object Model) ki pa dela samo na windows platformi se razume.
z ukazom $word = new COM("word.application") dvignes wordov object, ce ga imas seveda instaliranega na compu ... poglej v manual. Zakaj tocno bi rad izpisoval wordove datoteke?! Nimas na izbiro drugega formata za branje?!
Ostalo razumem, :D ...
glede tega :
Tudi tega se nisem delal :) Php ima vgrajeno podporo za COM (Component Object Model) ki pa dela samo na windows platformi se razume.
z ukazom $word = new COM("word.application") dvignes wordov object, ce ga imas seveda instaliranega na compu ... poglej v manual. Zakaj tocno bi rad izpisoval wordove datoteke?! Nimas na izbiro drugega formata za branje?!
Stvar je na Linux strežniku, ko bom vse končal pa bom naložil na hosting kjer bo FreeBSD. Zakaj rabim to ? ker bi naredil da lahko uporabnik downloada datoteko, ali jo online pogleda, torej je ne rabi prenašat, s tem bi vse izpisal kot HTML in dobim še dodatno vsebino ki jo najdi.si/google poindexira.
Našel sem sicer tole
http://entwickler-forum.de/archive/index.php/t-34505.html (kjer nič ne razumem ... nem :()
pa tole
http://www.hoyo.idv.tw/hoyoweb/document/view.php?sid=202 (kjer je že na začetku napisano, tako da imam občutek da na linxu nebo nič ...)
Pozabi ti na MS word ce bos to zaganjal na Linuxu in FreeBSD-ju! :) Ne vem zakaj se sploh ukvarjas z njim ce imas na voljo Open Office in OpenDocumentFormat (ODT), ki je v bistvi kompresiran XML. Malce poglej na web ziher je kdo napisal kaksen wraper oziroma parser za to. Mogoce ti bo tole kaj v pomoc ce bos pisal svoj parser:
http://books.evc-cit.info/oobook/book.html
Takole pa nekako zgleda content.xml
[HTML]
<?xml version="1.0" encoding="utf-8"?>
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
xmlns:math="http://www.w3.org/1998/Math/MathML"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
xmlns:ooo="http://openoffice.org/2004/office"
xmlns:ooow="http://openoffice.org/2004/writer"
xmlns:oooc="http://openoffice.org/2004/calc"
xmlns:dom="http://www.w3.org/2001/xml-events"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
office:version="1.0">
<office:scripts />
office:font-face-decls
<style:font-face style:name="Helvetica"
svg:font-family="Helvetica" />
<style:font-face style:name="Tahoma1"
svg:font-family="Tahoma" />
<style:font-face style:name="Times" svg:font-family="Times" />
<style:font-face style:name="DejaVu Sans"
svg:font-family="'DejaVu Sans'"
style:font-family-generic="system"
style:font-pitch="variable" />
<style:font-face style:name="Tahoma" svg:font-family="Tahoma"
style:font-family-generic="system"
style:font-pitch="variable" />
/office:font-face-decls
<office:automatic-styles />
office:body
office:text
<office:forms form:automatic-focus="false"
form:apply-design-mode="false" />
text:sequence-decls
<text:sequence-decl text:display-outline-level="0"
text:name="Illustration" />
<text:sequence-decl text:display-outline-level="0"
text:name="Table" />
<text:sequence-decl text:display-outline-level="0"
text:name="Text" />
<text:sequence-decl text:display-outline-level="0"
text:name="Drawing" />
/text:sequence-decls
<text:p text:style-name="Standard">Tole je Open Office dokument!/text:p
/office:text
/office:body
/office:document-content
[/HTML]
Kot sem rekel direktno ne bos mogel operirat z Wordovimi dokumenti v Linuxu (FreeBSD-ju).
Lahko si malce pomagas s temle linkom
http://www.linux.com/article.pl?sid=06/02/22/201247
kjer najdes nekaj command line toolsov ki znajo operirat z Wordovimi fajli in jih lahko tudi pretvoris v druge formate preko php-ja.
Ce pa se res ne mores ognit Worda pa napisi web servis v C# ki ti bo znal handlat word fajle: branje, konverzija, ... in ga obesi na nek IIS :)