0

私のサイトでは、ユーザーがサウンドファイルをサーバーにアップロードできます。ユーザー登録時に作成されるディレクトリ(ユーザー名など)。

mkdir("speaking/uploads/".$myusername,0777);

ユーザーがログインしたい場合:

$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

$_SESSION['myusername'] = $myusername;

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pass='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){

header("location:index.php");
}
else {
echo "Wrong Username or Password";
}

アップロードしたファイルを彼のフォルダーに移動したいのですが、ファイルはアップロードディレクトリに移動します。

<?php

$uploads_dir = './uploads/'.$_SESSION['myusername'];

if( $_FILES['Filedata']['error'] == 0 ){
    if( move_uploaded_file( $_FILES['Filedata']['tmp_name'], $uploads_dir.$_FILES['Filedata']['name'] ) ){
        echo 'ok';
        exit();
    }
}
echo 'error';
exit();
?>

どうすればこれを行うことができますか?これを行うためのより良い安全なアイデアはありますか?

4

2 に答える 2

0

session_startを追加するのを忘れて空白になるため、親フォルダーにアップロードされるため、コードを次のように変更します。

<?php
session_start();//start the session first
$uploads_dir = './uploads/'.$_SESSION['myusername'];

if( $_FILES['Filedata']['error'] == 0 ){
    if( move_uploaded_file( $_FILES['Filedata']['tmp_name'], $uploads_dir.$_FILES['Filedata']['name'] ) ){
        echo 'ok';
        exit();
    }
}
echo 'error';
exit();
?>
于 2013-09-29T16:50:54.580 に答える
0

あなたがここに欠けているようですsession_start()

<?php
    // H E R E !
    session_start();

    $uploads_dir = './uploads/'.$_SESSION['myusername'];

また、ここにあるようにサニタイズされていない場合、ユーザー入力 ( $_POST['myusername']) から取得するフォルダー名を使用することは非常に悪い考えです!!!

于 2013-09-29T16:53:10.780 に答える