Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数据库目录中上载图像_Php - Fatal编程技术网

Php 在数据库目录中上载图像

Php 在数据库目录中上载图像,php,Php,我在数据库目录中的图像上载有点问题。图像上载我的头像文件夹,不能显示我的页面,因为问题是在数据库id中,用户名表显示我的数据,但imagelocation表不能显示我的目录。请任何人告诉我,我的代码中有什么问题,请更正它指定行 upload.php <?php include("connecton.php"); $_SESSION['username']="kyle"; $username = $_SESSION['username']; if($_POST['su

我在数据库目录中的图像上载有点问题。图像上载我的头像文件夹,不能显示我的页面,因为问题是在数据库id中,用户名表显示我的数据,但imagelocation表不能显示我的目录。请任何人告诉我,我的代码中有什么问题,请更正它指定行

upload.php

<?php

 include("connecton.php");


 $_SESSION['username']="kyle";

 $username = $_SESSION['username'];



  if($_POST['submit'])
  {


      //get file attribute

      $name = $_FILES['myfile']['name'];
      $tmp_name = $_FILES['myfile']['tmp_name'];


      if($name)
      {

          //start upload process

           $location = "avatars/$name";  
           move_uploaded_file($tmp_name,$location);

           $query = mysql_query("UPDATE users SET imagelocation='$location' WHERE username='$username'");

           die("Your avatar has been uploaded! <a href='view.php'>HOme</a>");
      }
      else
       die("Please select a file");


  }





 echo "Welcome, ".$username."!<p>";

 echo "Upload Your Image:

<form action='upload.php' method='POST' enctype='multipart/form-data'> 

  File: <input type='file' name='myfile'> <input type='submit' name='submit' value='upload!'>

  </form>

 ";

?>
<?php

   include("connecton.php");

   $username = $_SESSION['username'];

   $query = mysql_query("SELECT * FROM users WHERE username='$username'");

   if (mysql_num_rows($query)==0)

   die ("User not found");
   else
   {

       $row = mysql_fetch_assoc($query);
       $location = $row['imagelocation'];

       echo "<img src='$location' width='100' height='100'>";


   }

?>

upload.php和view.php的第一个php语句应该是:

session_start();
a) 您不检查上载是否成功。至少做一些类似的事情:

if ($_FILES['myfile']['error'] === UPLOAD_ERR_OK) {
     ... upload went ok
}
b) 您正在使用原始用户的文件名将其存储在服务器上,并且未对文件名进行清理。没有任何东西可以阻止恶意用户设置文件名,例如
。/../../../../../../../../../../../../some/critical/system/file
,然后您的脚本将愉快地覆盖该文件名

c) 您没有检查
移动上传的文件()
是否成功:

if (!move_uploaded_file(...)) {
     die("Move failed!")
}
$stmt = mysql_query(...)
if ($stmt === FALSE) {
     die("MySQL query failed: " . mysql_error());
}
d) 您不检查数据库查询是否成功:

if (!move_uploaded_file(...)) {
     die("Move failed!")
}
$stmt = mysql_query(...)
if ($stmt === FALSE) {
     die("MySQL query failed: " . mysql_error());
}
e) 您尚未清理
$filename
,因此恶意用户可以再次破坏您的查询并使用SQL注入攻击直接攻击您的数据库


f) 您正在执行
选择*FROM…
以获取图像的位置。是否确定表中包含“imagelocation”行?您没有使用同一行检查insert查询是否成功,因此可能是输入错误,而实际上是“imglocation”。

正确提问的问题包含50%的答案。你的问题甚至没有问题描述。