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

image retrieval from directory and session variable issues - php

我在从服务器上的目录中检索图像时遇到问题,所以主要序列是什么:在页面中 (multiupload.php) 我添加了输入,允许预览图像以及何时用户提交后,将创建一个带有会话 ID 的新目录,然后图像将存储在唯一目录中,然后页面将被定向到 (drag.php)。新加载的页面有一个 canvas,其中包含不同的 div 以控制附加到 canvas 的过滤器。我的问题在于从一页到另一页检索具有指定 s_id 作为目录名称的图像。

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

这是 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" />';
    }
}

我的最终结果是我希望在页面上绘制所有图像。现在我希望只要它们可见,就可以将它们绘制在任何地方。

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

session_start 不接受任何参数。它只是放置一个 cookie 并读取会话变量。 (暴露在 $_SESSION 中)。您必须在每个页面上使用 session_start() 才能读取 $_SESSION 变量。

<?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" />';
      }
  }
?>

我建议您阅读:http://www.w3schools.com/php/php_sessions.asp 6 年前我开始使用 php 时 - 它非常有用

请将您的代码修改为以下代码:

<?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.'"/>';
         }
    }
  }
?>