Jakto že nemohu zapsat soubor do podadresáře? Vytvořím PHPkem adresář a když se do něho pokusím kopírovat soubor tak se zkopíruje do kořenového adresáře.
tak to mas asi neco spatne v tom skriptu. kdyby se nedalo zapisovat do toho adresare, kam chces, tak by ti to hodilo nejakou hlasku o chybe
A nebo máš špatně napsanou cestu ve fci copy()
hoď sem ten script, ať se na to mužeme podívat
Důležité výňatky:
/ zapsani clanku do pomocneho souboru
@$kontrola = fputs($soubor,"$clanek_uz");
if (!$kontrola):
echo "Nelze zapisovat do souboru";
include ("div_2.php");
break;
endif;
fclose ($soubor);
// zapis do souboru na ostro
@$kontrola = copy("pomocnadata\\pomocny.txt","data\\".$nazev_uz.".txt");
if (!$kontrola):
$adresa="clanek_input.php?heslo_k=3&login=$login_uz&sekce=$sekce_uz&vy=1";
header ( "location: $adresa ");
break;
endif;
// vymazani pomocneho souboru
@$kontrola = unlink("pomocnadata\\pomocny.txt");
if (!$kontrola):
include ("div_1.php");
echo "Nelze odatranit soubor";
include ("div_2.php");
break;
endif;
Tenhle řádek nevím proč, ale nesedí mi:
@$kontrola = copy("pomocnadata\\pomocny.txt","data\\".$nazev_uz.".txt");
No prostě nechápu, proč tam jsou dvě zpětný lomítka za sebou, já bych to udělal takhle:
@$kontrola = copy("./pomocnadata/pomocny.txt","data/".$nazev_uz.".txt");
Proč? Mě doma funguje perfektně.
Tak kydž ti to funguje doma perfektně, tak v čem je tedy chyba?
Že se ti to zkopíruje jinam než chceš? Pak máš IMHO blbě napsanou cestu.
> Proč? Mě doma funguje perfektně.
Doma máš určitě Windows, tam zpětný lomitka fungují, na Linuxu NE.
Takže jaký mám používat lomítka?
tyhle -> / <- , stejne jako v html
Ale mě to neháže ždnou chybovou hlášku. Jen to pořád kopiruje do
kořenového adresáře.
php:
\\ = /
\" = "
a dal uz si to nepamatuju :-(
\\ == /, to jo, ale proc si to koplikovat...
je toho vic, ale ja jsem zatim pouzil jenom \n == novej radek
urcite je problem v tom kopirovani? mozna tam delaj bordel ty \ a ", ale na to bych moc nevsazel... kazdopadne muzes zkusit 'data/'.$nazev_uz.'.txt'. nebo zkus pred ten adresar dat / nebo ./...
Pokud tam dám jinej řádek než
copy("pomocnadata\\pomocny.txt","data\\".$nazev_uz.".txt");
tak to háže chybu, žáný jiný lomítka to nesežere.
to je nejaky divny, to by melo normalne chodit i s /. a to ti to nefunguje tady nebo doma?
no. kdysi jsem si stahoval takovej skript na uploadování souborů:
<HEAD>
<TITLE>Upload souboru</TITLE>
</HEAD>
<BODY>
<?
if ($akce==upload)
{
$datum = Date("j.n.Y");
$cas = Date("H:i:s");
$warsize=500000; //doporučená velikost souboru
$maxsize=1000000; //maximální velikost souboru
$ms=$maxsize/1000;
$ws=$warsize/1000;
$ok=1; //pomocná proměnná
$adresar="soubory/"; //adresář pro ukládání souborů (lomítko je důležité!)
$email="vas@email"; //email, na který budou zasílány informace
if($soubor)
{
$s=$adresar.$soubor_name;
if($soubor_size>$maxsize)
{
printf("CHYBA: Soubor <strong>$soubor_name</strong> má větší
velikost než stanovená maximální velikost souboru, která činí $ms kB.");
$ok=0;
}
else if($soubor_size>$warsize)
printf("UPOZORNĚNÍ: Soubor <strong>$soubor_name</strong> má větší
než doporučenou velikost. Doporučená velikost je $ws kB.");
clearstatcache();
if($ok&&file_exists($s))
{
printf("CHYBA: Soubor <strong>$soubor_name</strong> již extuje, proto nemohl být znova uložen.");
$ok=0;
}
if ($ok)
{
if(!(copy($soubor,$s)))
printf("CHYBA: Soubor <strong>$soubor_name</strong> nemohl být zkopírován. Kontaktujte správce.");
else {
chmod($s,0644);
printf("Soubor <strong>$soubor_name</strong> byl úspěšně uložen.");
}
}
}
$text.="Na server byl nahran soubor ".$soubor_name.".";
mail($email,"Upload",$text,"From: ".$email);
}
?>
<FORM ACTION="upload.php" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="soubor" SIZE="30">
<INPUT TYPE="submit" NAME="akce" VALUE="Přidat soubor">
</FORM>
</BODY>
funguje to všude...
ad [Majkls]: to je nejake divne, nestudoval jsem ten script, ale vypada to ze se nikdy neprovede cast v podmince $akce=="upload",protoze to neni v formulari, z toho leze pouze $akce="Přidat soubor"...