2017-06-04 7 views
0

私はメディアを構築していますが、私はユーザーに の画像をアップロードしたいのですが、私の問題 は保存または移動する方法ですこの写真のフォルダ には、写真は my_mediaフォルダには index.phpなどのファイルがあります。 my_mediaフォルダにアップロードするとこのファイルを移動できますが、私は望んでいません。 セキュリティの目的でファイルを提出してください。 誰かが私のコードのおかげで修正してください。私のPHPファイルフォルダにあるフォルダにイメージファイルを保存または移動する方法

この私のコード

require_once ('connect.php'); 

if (isset($_POST['Submit'])) { 

$tmp_dir = "my_media/photo"; 
//it will move to my_media if assign my_media only to the variable $tmp_dir 
//but don't work with $tmp_dir = "my_media/photo" 

$tmp_name = $_FILES["image"]["tmp_name"]; 
$name = $_FILES["image"]["name"]; 

move_uploaded_file($tmp_name,$tmp_dir . basename($name)); 

    //rename("my_media/photo","my_media/photo". basename($name)); 
$location=$name; 
$fname=$_POST['first_name']; 
$lname=$_POST['last_name']; 


$sql = "INSERT INTO tbl_image (first_name, last_name, image_location) 
VALUES ('$fname', '$lname', '$location')"; 
$res = mysqli_query($con,$sql); 
//with this my the image name is inserted into my database but not into the foldermy_media/photo 
header("Location:imgview.php"); 
} 
+0

あなたのパス '$ tmp_dir =" my_media/photo/";'の最後にスラッシュを入れてみましたか? –

+0

私はそれを試しましたが、まだ動作していません –

+0

フォルダ写真は存在し、書き込み可能ですか? –

答えて

0
require_once ('connect.php'); 
if (isset($_POST['submit'])) { 

$tmp_dir = "/my_media/photo/"; 
$name = time().$_FILES["image"]["name"]; 

move_uploaded_file($_FILES["image"]["tmp_name"], $name); 
$location=$name; 
$fname=$_POST['first_name']; 
$lname=$_POST['last_name']; 


$sql = "INSERT INTO tbl_image (first_name, last_name, image_location) 
VALUES ('$fname', '$lname', '$location')"; 
$res = mysqli_query($con,$sql); 
header("Location:imgview.php"); 
} 
+0

作業中です –

+0

私のコードを編集してください。あなたのフォームが正しいかどうかを確認してください。送信ボタン名は小文字の名前= "submit"としてください。あなたは正しくHTMLをチェックしてください –

0

まず第一に、すべての/を削除し、PHPS DIRECTORY_SEPARATORに置き換えることができます。

$tmp_dir = "my_media". DIRECTORY_SEPARATOR . "photo" . DIRECTORY_SEPARATOR ; 

次に、そのフォルダに書き込む権限があることを確認するために、代わりにPHPでフォルダを作成します。

これを行うには、まず作成したフォルダを削除します。

if(!is_dir($tmp_dir)){ 
    mkdir($tmp_dir); 
    move_uploaded_file($tmp_name,$tmp_dir . basename($name)); 
}else{ 
    move_uploaded_file($tmp_name,$tmp_dir . basename($name)); 
} 

最後に、あなたはSQLインジェクションを開いています。代わりにprepared statementsを使用してください。 Example

+0

それはまだフォルダを作成しますが、まだmy_mediaにイメージファイルを保存し、新しい作成されたフォルダは空のままです –

+0

@CFrancisは 'move_uploaded_file($ tmp_name、" my_media ".DIRECTORY_SEPARATOR。" photo "を試してみてください)DIRECTORY_SEPARATOR。basename($ name )); ' – user3284463

+0

それは私のデータベースに名前を格納するだけですが、フォルダはここに在庫していません。私はすべてを試してみましたが、解決策はまだありません。 –

関連する問題