Uploadovani souboru pomoci php

4 příspěvky

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Cau este moc php neumim. Zkouše jsem si udelat script, ktery by mel uploadovat soubory pres ftp na webzdarma . Script se vypise jako uspesny ale na ftp se zadne soubory neobjevi. Nevíte kde je chyba ? (heslo a uzivatele zadavam urcite spravne :) $file=$_FILES["soubor"]["name"]; $ok=$_POST["ok"]; $soubor = ($_FILES["soubor"]["tmp_name"]); if($ok=="Upload") { $ftp_server= "xxxx.wz.cz"; $ftp_acc = "xxxxx.wz.cz"; $ftp_pass = "---------"; $fp=fopen($soubor, "r"); $connect_ftp= ftp_connect($ftp_server); $ftp_login=ftp_login($connect_ftp,$ftp_acc,$ftp_pass); if (ftp_fput($connect_ftp,$file,$fp,FTP_BINARY)){ echo "soubor $file2 byl uspesne nahran";} ftp_close($connect_ftp); fclose($fp); } //// <FORM ACTION="upload.php" METHOD="post" ENCTYPE="multipart/form-data"> <INPUT TYPE="file" NAME="soubor" SIZE="40"><br> Nove jmeno souboru : (bez mezer)<br> <INPUT TYPE="text" name="new" SIZE="40"><br> <INPUT TYPE="submit" NAME="ok" VALUE="Upload"> </FORM>
  2. Když už používáme podmínky, tak je lepší je využít všude. if ($connect_ftp) { // spojeno } else { // nespojeno } if ($ftp_login) { // prihlasen } else { // neprihlasen } Protože se může stát, že to selže už někde v tomto kroku. A důležitá otázka. Kam ten soubor chceš uploadnout? Pokud to chceš uploadnout na calvin.wz.cz (na stejné místo jako je skript), pak je použití FTP naprosto zbytečné, protože to zdržuje a zbytečně plýtváš prostředky. Na toto se používá funkce move_uploaded_file(). Použít FTP má smysl pouze, pokud chceš soubor nahrát na jinou adresu než je skript.
  3. Ať to procházím, jak to procházím, tak chybu nevidím. Než ale otevírát soubor lokálně a potom posílat data jako proud, mi přijde lepší rovnou použít funkce ftp_put(), která přímo kopíruje soubory (http://cz.php.net/manual/en/function.ftp-put.php). Prakticky mě napadají jen tři možnosti: a) Zkopírovaný kód není celý a chyba je v tom odmazaném zbytku (usoudil jsem to z faktu, že ve výpise se vyskytuje neinicializovaná proměnná $file2) b) Je omezen error_reporting a některá chyba (např. v připojení) neukončí běh skriptu. c) Jsem slepej a chybu nevidím. Tomík: Existují dvě dobré situace, kdy se vyplatí použít ftp přenos ke stejné doméně, jako se nachází skript: 1) Bezpečnost pro spouštění skriptů. Lze FTP účtu nastavit takový kořenový adresář, kde je například zakázané spouštění/parsování skriptů apod.. (nehrozí ovlivnění existující aplikace podstrčenými skripty atp.). 2) Nemusíš řešit problém s přístupovými právy souboru (samozřejmě záleží na nastavení, pod jakým uid běží phpserver, jaké uid má uživatel po připojení k ftp atp). Ale už jsem se i s takovýmito problémy setkal. Zmíněné příklady se netýkají konkrétně wz.cz. Třeba první situace na wz.cz nikdy nenastane (protože zřejmě nikdo nedostane k jedné doméně druhý ftp účet).
  4. Tak neumim si to vysvetlit ale tedka uz to funguje jak má. ta promena $file2 je naky preklep pri upravovani ma to byt $file. Kazdopadne dik za snahu a sry za cas :d

← Zpět na všechna témata