ugrás a tartalomhoz

XML fájl készítés

hirlapom · 2006. Május. 28. (V), 16.07
Sziasztok!

Van egy scriptem, de nem készíti el a fájlt pedig a filename és a content változóban ott vannak az adatok. Mi a gond?
<?php

$filename= $_POST["filename"];
//$filename="http://www.vmi.hu/user_xml/".$filename;
$content= $_POST["content"];
//$filename

if (file_exists($filename)){
// Ha már létezik
  $fa = fopen ($filename, "w");
  fwrite($fa, $content);
  fclose ($fa);
} else {
// Ha még nem létezik
  touch($filename);
  chmod($filename, 0644);
  $fa = fopen ($filename, "w");
  fwrite($fa, $content);
  fclose ($fa);
}
print "&out=$filename";
?>
 
1

Jogosultságok?

krey · 2006. Május. 28. (V), 16.25
Így első ránézésre a script jónak tűnik, ha nem készíti el a fájlt, akkor lehet, hogy nem tudja megcsinálni, nincs hely a merevlemezen, vagy nincs jogosultságod hozzá.
Próbáld így:

<?
if (!touch($filename))
   die("Nem sikerült létrehozni a fájlt");
else {
   // Műveletek
}
?>
krey

ps. Érdemes bekapcsolni a hibajelzést
3

igazad van...

hirlapom · 2006. Május. 28. (V), 16.31
Valóban nem tudja létrehozni. Ennek mi lehet az oka?
4

Ismét

krey · 2006. Május. 28. (V), 16.34
Mondjuk már leírtam, de elmondhatom mégegyszer
  1. Nincs jogosultságod
  2. Nincs szabad hely

Érdemes kapcsolatba lépni a tárhely szolgáltatóval.

krey
5

hozzáférés

hirlapom · 2006. Május. 28. (V), 16.40
Mondjuk ez furcsa, miért lehet az, hogy a saját tárhelyemhez nincs jogosultságom? A szolgáltató mit tud csinálni?
6

nem jog. JOG!

vbence · 2006. Május. 28. (V), 19.36
Furcsálom, hogy tanult kollégám nem hívta fel figyelmedet a következőre:
Az első és legeslegeslegfontosabb dolog a php fájlkezeléssel kapcsolatban az, hogy a php nem a te jogaiddal, a te usered alatt fut, hanem a webszerver userével (www, apache, www-data, akármi). (Ez csak 90%ban van így.) A te feladatod, hogy létrehozd a könyvtáradat, majd az ftp progamoddal (total commander, stb) megadd a "write by others" jogot. Shellből:
chmod o+w konyvtarneve
Ezután már több esélyed van.

Egy tanács a végére:
Kikapcsolt hibajelentéssel nem lehet fejleszteni. Ha a szerveren alapból ki van kapcsolva, kapcsold be egy fügvénnyel (fejből nemtudom, a php dokumentációban bennevan).


Ja.. és a POST[filename] nagyon nem biztonságos ám...
7

műkszik

hirlapom · 2006. Május. 28. (V), 20.27
Ahogy mondod. Utánna kapcsoltam is. Köszi a segítséget!
2

XML fájl készítés

Anonymous · 2006. Május. 28. (V), 16.30
Ez az egész if-es szerkezet felesleges, ugyanis a fopen parancs létrehozza a file-t, akkor is, ha nem létezik. Ha igen, akkor meg felülírja a tartalmát.
Inkább a hibaüzenetekre fordíts nagyobb figyelmet, az megmondja, hogy mi a hiba.
<?php
$filename= $_POST["filename"];
$content= $_POST["content"];

$fa = fopen ($filename, "w");
fwrite($fa, $content);
fclose ($fa);

print "&out=$filename";
?>
Ha ezt futtatod, és az error_reporting be van kapcsolva, ki fogja írni a hibaüzenetet. A kész programban persze kell majd valamilyen hibakezelést beépítened, hogy a felhasználó ne lássa a php hibaüzenetét.

Gyulus
8

kódolás

hirlapom · 2006. Május. 28. (V), 20.34
A kövekező probléma merült még fel:

Amikor megkapja az xml fájl tartalmát a php, kicsit megváltozik.
$content= $_POST["content"];

Amit küldtem eredetileg a php-nak:
<us identity="bla">
<e link="http://link.hu" tit="bla" />
</us>

Amit beleír a fájlba a php:
<us identity=\"bla\">
<e link=\"http://link.hu\" tit=\"bla\" />
</us>

Sajnos tuti kódolási probléma, de ezt biztosan egyszerűen meg lehet oldani.
Elvileg utf-kódolásba küldtem a php-nak a content-et.
Előre is kösz.
9

magic_quotes

erenon · 2006. Május. 28. (V), 21.18
Szerintem ezt a PHP egyik kedves beállítása, a magic_quotes teszi be. (php.ini-ben lehet ügyeskedni vele)
Nem hallottam még olyan karakterkódolási problémáról, hogy \-ezi a "-okat.
10

slash

hirlapom · 2006. Május. 28. (V), 21.27
Mivel ftp ezért php.ini-hez nemsok közöm van. Egyéb módszer?
11

ini_set?

janoszen · 2006. Május. 28. (V), 21.38
Az ini_set nem segít?
12

hát

erenon · 2006. Május. 28. (V), 22.07
valószínüleg ingyenese (az?) tárhelyen se ini_set, se más trükk, de valami talán, bár ez nagyon nagyon lassú:
str_replace fv, \" -> "
És nem is 100%-os a minősége.
Vagypedig stripslashes();
13

arigato

hirlapom · 2006. Május. 28. (V), 22.22
stripslashes(); tökéletes. Köszi!