Javascript 从目录和会话变量检索图像问题-php

Javascript 从目录和会话变量检索图像问题-php,javascript,php,jquery,html,canvas,Javascript,Php,Jquery,Html,Canvas,我在从服务器上的目录检索图像时遇到问题,因此主要顺序是:在页面(multiupload.php)中,我添加了输入,允许预览图像,当用户提交时,将创建一个带有会话id的新目录,然后,图像将存储在唯一目录中,页面将被定向到(drag.php)。新加载的页面有一个具有不同div的画布,用于控制附加到该画布的过滤器。我的问题在于从一个页面到另一个页面检索具有指定s_id作为目录名的图像 Q:我是否正确检索会话变量?或者适当地使用它们? 这是multiupload.php的上传脚本的必要片段 <?p

我在从服务器上的目录检索图像时遇到问题,因此主要顺序是:在页面(multiupload.php)中,我添加了输入,允许预览图像,当用户提交时,将创建一个带有会话id的新目录,然后,图像将存储在唯一目录中,页面将被定向到(drag.php)。新加载的页面有一个具有不同div的画布,用于控制附加到该画布的过滤器。我的问题在于从一个页面到另一个页面检索具有指定s_id作为目录名的图像

Q:我是否正确检索会话变量?或者适当地使用它们?

这是multiupload.php的上传脚本的必要片段

<?php
  $dir_id = session_id(md5(uniqid()));
  session_start($dir_id);
  $path = "uploads/";
  $dir = $path.$dir_id;
  $path = $path.$dir_id."/";
  if (file_exists($dir)) {
    system('/bin/rm -rf ' . escapeshellarg($dir));
  } else {
    mkdir($path);
    chmod($path, 0722);  
  }
  $_SESSION["id"] = $dir_id;
  $_SESSION["directory"] = "/" . $dir;
  $_SESSION["path_name"] = $path;
?>

我定义了目录、整个路径和目录的id。我想在下一页中检索id,但操作不正确

这是drag.php中的检索代码

$realPath = 'uploads/'. echo $_SESSION['id'];

$handle = opendir(dirname(realpath(__FILE__)).$realPath;
while($file = readdir($handle)){
    if($file !== '.' && $file !== '..'){
        echo '<img src="uploads/'.$file.'" border="0" />';
    }
}
$realPath='uploads/'。echo$_会话['id'];
$handle=opendir(dirname(realpath(_文件__))。$realpath;
而($file=readdir($handle)){
如果($file!='.&&$file!='..){
回声';
}
}
我的最终结果是,我希望所有的图像都能被绘制在页面上。现在,我希望它们可以被绘制在任何可见的地方


如果我的问题不清楚,请随意编辑或评论我应该更改的地方。如果您需要更多代码或信息,请告诉我。

会话\u start不接受任何参数。它只是放置cookie并读取会话变量。(在$\u会话中公开)。您必须使用会话\u start()在每个页面上都可以读取$\u会话变量。


<?php
  $dir_id = session_id(md5(uniqid()));
  session_start();
  $path = "uploads/";
  $dir = $path.$dir_id;
  $path = $path.$dir_id."/";
  if (file_exists($dir)) {
      system('/bin/rm -rf ' . escapeshellarg($dir));
  } else {
    mkdir($path);
    chmod($path, 0722);  
  }
  $_SESSION["id"] = $dir_id;
  $_SESSION["directory"] = "/" . $dir;
  $_SESSION["path_name"] = $path;
?>
在任何file.php中,您需要获取会话:

<?php
  session_start();

  $realPath = 'uploads/'.$_SESSION['id'];

  $handle = opendir(dirname(realpath(__FILE__)).$realPath;
  while($file = readdir($handle)){
      if($file !== '.' && $file !== '..'){
          echo '<img src="uploads/'.$file.'" border="0" />';
      }
  }
?>

请将您的代码修改为此代码:

<?php
  $dir=$_SESSION['id'];
  $realPath = '/uploads/'.$dir;
  $handle = opendir(dirname(realpath(__FILE__)).$realPath);
    while($file = readdir($handle)){
      if($file !== '.' && $file !== '..'){
        echo '<img src="'.$realPath.'/'.$file.'" border="0" width="200" />';
    }
  }
?>

我使用了这个代码,我得到的o/p如下:


这将只提供使用会话变量的目录中的图像文件

<?php
  $dir=$_SESSION['id'];
  $realPath = '/uploads/'.$dir;
  $handle = opendir(dirname(realpath(__FILE__)).$realPath);
    while($file = readdir($handle)){
      if($file !== '.' && $file !== '..'){
      if(fnmatch('*.jpg', $file) || fnmatch('*.png', $file) || fnmatch('*.jpeg', $file)){
            echo '<img src="'.$realPath.'/'.$file.'"/>';
         }
    }
  }
?>


我认为这更重要的是指出,您需要从任何要访问会话数据的页面调用session_start()。因此,我写下“在any file.php中,您需要获取会话:”,我错了吗?这是正确的,通常的做法是在每个页面的顶部包含/需要一个公共php文件..类似header.php的内容,并包含session_start()之类的项目。你是对的,你需要在脚本中调用它,然后才能访问它们。你的意思是-建议创建类似头文件的东西,它会自动包含在任何file.php中?是的,它很容易维护单个文件与多个文件。与使用同一个menu.php文件包含HTML菜单系统相同。使工作更轻松使用这一行$realPath='uploads/'。$(会话['id']),而不是$realPath='uploads/'。echo$(会话['id']);优秀的解释器@ApoorvBambarde。