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 回答