从目录和会话变量问题中检索图像 - 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.'"/>';
}
}
}
?>
我在从服务器上的目录中检索图像时遇到问题,所以主要序列是什么:在页面中 (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.'"/>';
}
}
}
?>