problémy s php

nevíte prosím kde mám chybu, snažím se o to aby uživatel mohl uploudovat obrázky na server, ale vždy schořím na fci move_uploaded_file v php soouboru mámo toto:

<HEAD>
<TITLE>Soubor: <?echo $Soubor_name?></TITLE>
</HEAD>
<BODY>
<?php
if (isset($_FILES['soubor']))
{

$nazev_souboru = $_FILES['soubor']['tmp_name'];
$copy = move_uploaded_file($nazev_souboru, /secure);

chmod (secure, 0644);
if($copy == true){echo "Soubor " .$_FILES['soubor']['name']. " byl úspěšně nahrán na server.n<br>;
};
}
}
?>


</BODY>

předem děkuji za případnou radu
A kam to jako uploadujes?

to /secure tam nic nedela

melo by to byt :

move_uploaded_file($nazev_souboru, $cil_soubor)
Vis jak funguje funkce move_uploaded_file?
mozna by ti prospelo projit dokumentaci php.net/move_uploaded_file

Prvni parametr mas spravne - zdrojovy soubor, ale druhy parametr mas uplne spatne ->
1) nebudes zapisovat do rootu (nemas tam prava zapisu a navic co bys tam delal ... - pouzij relativni cestu)
2) zapisujes soubor, vetsinou s nejakou priponou(je lepsi priponu pouzit, obcas taky neni od veci nechat souboru stejny nazev jako mel u uzivatele ktery soubor nahrava - $_FILES['soubor']['name']
relativní cestu jsem zadal a teď mi to pro změnu vypisuje:
Warning: move_uploaded_file(): Unable to access upload//tmp/phpHWuyde in /3w/xf.cz/m/mojedata/upload.php on line 10
A nedela ti to nahodou chybu jen proto ze tam mas 3 pole pro vkladani souboru a oznaceny je mas soubor_1, soubor_2, soubor_3? priste si to lip prohlidni a pis lepsi nazvy tematu
nebylo by lepsi kdyby si sem hodil celej soubor upload.php?
=Michal=
Takze ..
kdyz sem pastnes chybu, kterou ti vrati parser, tak sem napis i radek na kterem ta chyba je (v tomto pripade radek 10) a par radku pred nim..

Zda se mi divne, kdyby skript nemohl pristoupi do tmp adresare serveru (coz by vyplyvalo z hlasky..pokud jsem ji dobre pochopil). Mas spravne zadane parametry u move_uploaded_file()?
<?php
if (isset($_FILES['fupload'])) {

$cilovy_soubor = str_replace(" ", "_", $_FILES['fupload']['name']); // zmeni mezery na "_"

$soubor = $_FILES['fupload']['tmp_name'];

$copy = move_uploaded_file($soubor, $cil);

If (!($copy == true )) {
echo('Nelze nahrát soubor');
exit();
}
{
echo('Soubor byl úspěšně nahrán');
}
?>
Asi mi tam něco chybělo =D sem to psal z hlavy

<?php
if (isset($_FILES['fupload'])) {

$cilovy_soubor = str_replace(" ", "_", $_FILES['fupload']['name']); // zmeni mezery na "_"

$soubor = $_FILES['fupload']['tmp_name'];

$copy = move_uploaded_file($soubor, $cil);

If (!($copy == true )) {
echo('Nelze nahrát soubor');
exit();
}
{
echo('Soubor byl úspěšně nahrán');
}
}
?>
=justy=
Nez abys tady psal vsechnona 3*, tak si to napis jednou, zkontroluj a pak teprve pastni..
Trochu vylepsim ten puvodni uploadovaci skript, at se da k necemu pouzivat ! .. (zatim je akorat plny chyb a demeci)..

<form enctype="multipart/form-data" action="jmeno_soubor.php" method="POST">
Vyberte soubor k nahrání: <input name="uploadedfile" type="file" />
<input type="submit" value="Nahrát" />
</form>

if(is_uploaded_file($HTTP_POST_FILES['uploadedfile']['tmp_name'])){
$trans=array(" "=>"_", "ě"=> "e", "š"=>"s", "č"=>"c", "ř"=>"r", "ž"=>"z", "ý"=>"y", "á"=>"a", "í"=>"i", "é"=>"e", "ó"=>"o", "ď"=>"d", "ť"=>"t", "ň"=>"n", "ů"=>"u", "ú"=>"u", "ä"=> "a", "ë"=>"e", "ö"=>"o", "ü"=>"u", "Ä"=>"A", "Ë"=>"E", "Ö"=>"O", "Ü"=>"U", "\\"=>"", "["=>"", "]"=>"", "<"=>"", ">"=>"", ";"=>"");
$HTTP_POST_FILES['uploadedfile']['name']=strtr(trim($HTTP_POST_FILES['uploadedfile']['name']),$trans);
if(!file_exists("./files/".$HTTP_POST_FILES['uploadedfile']['name'])){
move_uploaded_file($HTTP_POST_FILES['uploadedfile']['tmp_name'], "./files/".$HTTP_POST_FILES['uploadedfile']['name']);
$vypis = 'Hotovo, soubor '.$HTTP_POST_FILES['uploadedfile']['name'].' byl nahrán na '.$_SERVER['HTTP_HOST'].'/upload/files/'..$HTTP_POST_FILES['uploadedfile']['name'];
}else{
do{
$num=rand(100,999);
$soubor="./files/R".$num.$HTTP_POST_FILES['uploadedfile']['name'];
$hodn=file_exists($soubor);
}while($hodn);
move_uploaded_file($HTTP_POST_FILES['uploadedfile']['tmp_name'], $soubor);
$vypis = 'Hotovo, soubor se stejným názvem již existuje. Soubor '.$HTTP_POST_FILES['uploadedfile']['name'].' byl přejmenován a uložen na '.$_SERVER['HTTP_HOST'].'/upload/files/'.$HTTP_POST_FILES['uploadedfile']['name'].'';
}
}else{
$vypis = 'Chyba, soubor '.$HTTP_POST_FILES['uploadedfile']['name'].' nebyl nahrán.';
}


//poznamka : $HTTP_POST_FILES se muze klidne nahradit $FILES
Freeze:
$trans=array(" "=>"_", "ě"=> "e", "š"=>"s", "č"=>"c", "ř"=>"r", "ž"=>"z", "ý"=>"y", "á"=>"a", "í"=>"i", "é"=>"e", "ó"=>"o", "ď"=>"d", "ť"=>"t", "ň"=>"n", "ů"=>"u", "ú"=>"u", "ä"=> "a", "ë"=>"e", "ö"=>"o", "ü"=>"u", "Ä"=>"A", "Ë"=>"E", "Ö"=>"O", "Ü"=>"U", "\\"=>"", "["=>"", "]"=>"", "<"=>"", ">"=>"", ";"=>"");
$HTTP_POST_FILES['uploadedfile']['name']=strtr(trim($HTTP_POST_FILES['uploadedfile']['name ']),$trans);

asi má dělat to samé, co
$name = iconv("utf-8", "us-ascii//TRANSLIT", $HTTP_POST_FILES['uploadedfile']['name']);
Tom (manual.wz.cz)
Iconv bych zrovna nepouzival. Mam zkusenosti, ze v okamziku, kdy najde nevhodny znak, tak celou konverzi ukonci. Zkousel jsem upravovat jeden mailovy tiketovaci system a kazdy druhy mail s diakritikou prisel prazdny.
Mozna jsem to mel spatne nastavene a cely problem resi parametr TRANSLIT, jako mas ty.
Jake mas zkusenosti ty?
Mozna jeste detail, na windows iconv neni.

Freeze (dreamer.kvalitne.cz)
Schazi ti tam jeste striskovane slovenske O a dalsi znaky. Pripadne bych tam jeste dal strtolower().

diky za rady ,ale pise mi to porad tu stejnou chybu Parse error: parse error in /3w/xf.cz/m/mojedata/nahrat.php on line 12 v souboru php

<HEAD>
<TITLE</TITLE>
</HEAD>
<BODY>
<?
if(is_uploaded_file($HTTP_POST_FILES['uploadedfile']['tmp_name'])){
$trans=array(" "=>"_", "ěě"=> "e", "šš"=>"s", "čč"=>"c", "řř"=>"r", "žž"=>"z", "ýý"=>"y", "ápá"=>"a", "íí"=>"i", "éé"=>"e", "óó"=>"o", "ďď"=>"d", "ťť"=>"t", "ňň"=>"n", "ůů"=>"u", "úú"=>"u", "ää"=> "a", "ëë"=>"e", "öö"=>"o", "üü"=>"u", "ÄÄ"=>"A", "ËË"=>"E", "ÖÖ"=>"O", "ÜÜ"=>"U", "\\"=>"", "["=>"", "]"=>"", "<"=>"", ">"=>"", ";"=>"");
$HTTP_POST_FILES['uploadedfile']['name']=strtr(trim($HTTP_POST_FILES['uploadedfile']['name ']),$trans);
if(!file_exists("./files/".$HTTP_POST_FILES['uploadedfile']['name'])){
move_uploaded_file($HTTP_POST_FILES['uploadedfile']['tmp_name'], "./files/".$HTTP_POST_FILES['uploadedfile']['name']);
$vypis = 'Hotovo, soubor '.$HTTP_POST_FILES['uploadedfile']['name'].' byl nahráián na '.$_SERVER['HTTP_HOST'].'/upload/files/'..$HTTP_POST_FILES['uploadedfile']['name'];
}else{
do{
$num=rand(100,999);
$soubor="./files/R".$num.$HTTP_POST_FILES['uploadedfile']['name'];
$hodn=file_exists($soubor);
}while($hodn);
move_uploaded_file($HTTP_POST_FILES['uploadedfile']['tmp_name'], $soubor);
$vypis = 'Hotovo, soubor se stejnýým náázvem jižž existuje. Soubor '.$HTTP_POST_FILES['uploadedfile']['name'].' byl přřejmenováán a uložežen na '.$_SERVER['HTTP_HOST'].'/upload/files/'.$HTTP_POST_FILES['uploadedfile']['name'].'';
}
}else{
$vypis = 'Chyba, soubor '.$HTTP_POST_FILES['uploadedfile']['name'].' nebyl nahráán.';
}
?>
</BODY>
<HTML>Máte tam dvě tečky za sebou místo jedné.</HTML>
Parse error: parse error in /3w/xf.cz/m/mojedata/nahrat.php on line 12 v souboru php

Otevres si soubor programem, ktery cisluje radky a najdes radek 11, 12, 13.
Podivas se, zda tam mas spravne strednik.
Pokud ano, hledas dalsi problemy.
Pokud nejsi schopen je najit, pak si to odradkujes tak, jak je to mozne a opet ti vypise, ale ted jiny radek.

Z toho, co jsi poslal, se moc vycist neda, cislo radku leda z odkazu na zdroj.
soubor.php.txt

K Nipal, 2 tecky u
es/'..$HTTP_P
coz by mohla byt ona chyba.

uložežen
ulozzen? Ikdyz presne nechapu, proc to zdvojujes.
=Michal=
Nevim proc zdvojujes vsechny znaky s diakritikou .. "šš"=>"s", .. nebyl nahráán apod..

=peta=
Mas pravdu, ten znak mi tam chybi ..
Jinak puvodne to se strtolower() bylo, nejak mi to vypadlo :/

=Tom=
Jo, mas pravdu. Jen jsem to nepouzival prave kvuli tem chybam behem iconv ... parametr //TRANSLIT jsem neznal. Diky za pouceni ;)
peta: "Mozna jeste detail, na windows iconv neni."
A kterej de*il by provozoval Apache na Windows? To už si zrovna můžeš začít s IIS a ASP ;)

"Jake mas zkusenosti ty?" vždy mít správné vstupní kódování a potom problémy nejsou. Ano, ukončuje se při nalezení "špatného" znaku, ale to není chyba v incov. Jde o chybu v programátorovi; jde o to, že skutečné vstupní kódování neodpovídá tomu udanému. A pro ty, co neumí rozpoznat vstupní kódování: http://latrine.dgx.cz/autoczech-aneb-automaticka-detekce-kodovani

"cely problem resi parametr TRANSLIT" Ne, //TRANSLIT se zbavuje ě,š,č,ň a nahrazuje je za e,s,c,n ...
Tom (manual.wz.cz)
"A kterej de*il by provozoval Apache na Windows?"
Ze by Wamp server na ladeni programu nez ho nahraji na ostry server? Cili mne povazujes za D. No dobra :)

"Ano, ukončuje se při nalezení "špatného" znaku"
A to je prave duvod, proc bych takovy prevodnik nepouzival. Radeji, kdyz mi dojde zprava zakodovana nez jen 3 znaky z ni. S kodovanim si poradim, s nicim ovsem uz dal pracovat nelze.
Pokud mi zasifruje escr, s tim problem neni. Pokud mi z escr udela 2 znaky ala utf, s tim taky neni problem. Ale kdyz mi nic neprijde, tak to uz vidim jako zasadni problem. Nereknu, kdyz mi na konec souboru sepise seznam chyba a hexa kod znaku...
"Cili mne povazujes za D. " A já sem to samý v bleděmodrým, protože jsem ti sežral, že na Windows iconv není! Je: http://manual.wz.cz/download/php_iconv.dll

"Ze by Wamp server na ladeni programu nez ho nahraji na ostry server?"
Jasně, kupa lidí jede s Apachem na Windows. Pro obyčejné projekty typu udělám někomu web s administrací bohatě stačí. Ale tam se musí počítat s nižším výkonem serveru a u PHP s chybějícími funkcemi vyplývajícími z rozdílu Unixu a Windows.

Pokud ale budeš dělat něco většího (například kompletní intranet), tak tam se ti vyplatí testovat na co nejpodobnější konfiguraci. Vyhneš se tím některým možným problémům při migraci na ostrý server.

"Radeji, kdyz mi dojde zprava zakodovana nez jen 3 znaky z ni." a to je právě to, o čem jsem psal minule. Tohle není chyba - tohle je vlastnost (fuj, slyším ze sebe Microsoft ;). Pokud nejsi schopný určit vstupní kódování, tak se ti to posere a srát se ti to bude dál. Když ale použiješ odkazovaný AutoCzech, nebo něco podobného, tak budeš mít 100% jistotu, že ti to nezkolabuje. A navíc iconv má jednu velkou výhodu - s polem znaků si dáš hodně velkou práci ošetřit všechny nepovolené znaky. Takové pole obsahující i azbuku, asijský čaj a ty arabské čmáranice bude celkem dlouhé ;)
nj, ale co když prostě ta data přijdou už pos*ě? to se přece může stát...
R.U.R: když už to přijde po..., tak není přidat podmínku
if(nerozpoznal_jsem_kodovani) {
#iconv() vynechávám a předávám dál v tom stavu který jsem dostal s poznámkou že za zmršené kódování já nemůžu, že to už tak bylo ;)
}
všem děkuji za rady, nakonec jsem svů problém vyřešil tímto php:


<HEAD><TITLE>PHP: Upload souboru</TITLE></HEAD>
<BODY>
<b>Zadejte jmeno souboru:</b>
<FORM ACTION="upload.php" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="soubor" SIZE="40">
<INPUT TYPE="submit" NAME="ok" VALUE="Upload">
</FORM>
<?php
$soubor_name = ($_FILES["soubor"]["name"]);
$soubor = ($_FILES["soubor"]["tmp_name"]);
$ok = ($_POST["ok"]);

if ($ok == "Upload" && $soubor_name!="")
{
if (move_uploaded_file($soubor, "./$soubor_name"))
{
chmod ("./$soubor_name", 0646);
echo "<b>Soubor $soubor_name byl nahran na server</b><BR>";
}
else
{
echo "<b>Chyba - soubor nebyl nahran</b><BR>";
}
}
?>
</BODY>