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

时间:2015-04-01 15:10:30

标签: javascript php jquery html canvas

从服务器上的目录中检索图像时遇到问题,所以主要序列是:在页面中(multiupload.php)我添加了输入,允许预览图像,当用户提交时,将创建一个具有会话ID的新目录,然后将图像存储在唯一目录中,然后将页面定向到(drag.php)。新加载的页面有一个带有不同div的画布,用于控制附加到该画布的过滤器。我的问题在于将指定的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" />';
    }
}

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

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

3 个答案:

答案 0 :(得分:6)

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

<?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:

enter image description here

答案 1 :(得分:2)

<?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时 - 这很有帮助

答案 2 :(得分:1)

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