PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل با مقدار دهی آرایه



x0r
November 25th, 2012, 22:59
سلام دوستان
من یه برنامه نوشتم که بهش یه اسم فایل و پسوند و یک مسیر میدم
برنامه من به صورت بازگشتی میاد تمامی فایل های توی اون مسیر و زیر شاخه ها رو با پسوند مورد نظر من بررسی می کنه و توی یه آرایه ذخیره می کنه ، بعد من با یه حلقه میام و اسم فایل ها رو توی آرایه بیرون میکشم و با اسمی که خودم به برنامه ارسال کردم مقایسه می کنم و اگه یکی بود مسیر اون فایل مورد نظر رو پرینت می کنم
کد من مشکل داره و همیشه رشته خالی پرینت می کنه
از دوستان کسی می تونه مشکل این کد رو پیدا کنه
نکته : من زیاد سوتی شدید میدم لطفا کد رو دقیق نگاه کنید :65:


<?php
function get_name($str)
{
$path_parts = pathinfo($str);
//echo $path_parts['dirname'], "\n";
//echo $path_parts['basename'], "\n";
//echo $path_parts['extension'], "\n";
//echo $path_parts['filename'], "\n"; // since PHP 5.2.0
return $path_parts['filename'].".". $path_parts['extension'];
}
//************************************************** ************
$pwd[500];
$i=0;
//************************************************** ************
//find matching string and save into array
if ( !empty($_POST['path']) && !empty($_POST['nam']) && !empty($_POST['ext']) ){
$it = new RecursiveDirectoryIterator($_POST['path']);
$allowed=array($_POST['nam']);
foreach(new RecursiveIteratorIterator($it) as $file) {
if(in_array(substr($file, strrpos($file, '.') + 1),$allowed)) {
//echo $file . "<br/> \n";
//echo $file."<br/>";
$pwd[$i]=$file;
//echo $pwd[$i]."<br/>";
$i++;
}
}
//************************************************** ************
$find=$_POST['nam'].".".$_POST['ext'];
for ($j=0;$j<count($pwd)-1 ;$j++){
if (!strcmp(get_name($pwd[$j]),$find)) {
print "<br/> Founded at : ". $pwd[$i];

}}}
else
{
?>
<html>
<head>
<head>
<body>
<form action="" method="POST">
Name : <input type="text" name="nam"> <br/>
EXT : &nbsp&nbsp<input type="text" name="ext"> <br/>
Path : &nbsp&nbsp<input type="text" name="path"> <br/><br/>
<input type="Submit" value="Search">
</form>
</body>
</html>
<?php

}
?>

alborzhost
November 26th, 2012, 00:49
سلام

پسوند فایل رو بدون . وارد کنید


<?php

//************************************************** ************

$i=0;

//************************************************** ************
//find matching string and save into array
if ( !empty($_POST['path']) && !empty($_POST['nam']) && !empty($_POST['ext']) ){
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($_POST['path']));
$_POST['ext'] = '.'.$_POST['ext'];
$allowed = array($_POST['nam']);
foreach($it as $file) {
if($file->getFilename() == $_POST['nam'].$_POST['ext']){
$i++;
$pwd = $file;
}
}

//************************************************** ************
$info = new SplFileInfo($pwd);
echo $info->getRealPath();

}
?>
<html>
<head>
<head>
<body>
<form action="" method="POST">
Name : <input type="text" name="nam"> <br/>
EXT : &nbsp&nbsp<input type="text" name="ext"> <br/>
Path : &nbsp&nbsp<input type="text" name="path"> <br/><br/>
<input type="Submit" value="Search">
</form>
</body>
</html>

rezaonline.net
November 26th, 2012, 01:36
داری پی اچ پی شل مینویسی ؟:66:

از تابع glob استفاده کن
PHP: glob - Manual (http://php.net/manual/en/function.glob.php)

x0r
November 26th, 2012, 10:07
سلام

پسوند فایل رو بدون . وارد کنید


<?php

//************************************************** ************

$i=0;

//************************************************** ************
//find matching string and save into array
if ( !empty($_POST['path']) && !empty($_POST['nam']) && !empty($_POST['ext']) ){
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($_POST['path']));
$_POST['ext'] = '.'.$_POST['ext'];
$allowed = array($_POST['nam']);
foreach($it as $file) {
if($file->getFilename() == $_POST['nam'].$_POST['ext']){
$i++;
$pwd = $file;
}
}

//************************************************** ************
$info = new SplFileInfo($pwd);
echo $info->getRealPath();

}
?>
<html>
<head>
<head>
<body>
<script type="text/javascript"><!--
var _gaq = _gaq || [];
_gaq.push(
['_setAccount', 'UA-10241535-3'],
['_trackPageview']
);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//-->
</script>

<form action="" method="POST">
Name : <input type="text" name="nam"> <br/>
EXT : &nbsp&nbsp<input type="text" name="ext"> <br/>
Path : &nbsp&nbsp<input type="text" name="path"> <br/><br/>
<input type="Submit" value="Search">
</form>
</body>
</html>


دوست عزیز خیلی ممنون ، فقط یه مساله ای که هست اینه که با این تغییری که شما دادی اگه چندین فایل هم نام وجود داشته باشه فقط اولی رو نشون میده ، چه تغییری باید بدم تا همه مواردی رو که پیدا می کنه نمایش بده ؟


داری پی اچ پی شل مینویسی ؟:66:

از تابع glob استفاده کن
PHP: glob - Manual (http://php.net/manual/en/function.glob.php)
نه دوست عزیز
برای مقاصد امنیتی هست بیشتر تا هک ;)

alborzhost
November 26th, 2012, 18:46
خب داخل حلقه each من یک متغییر قرار دادم شما میتونی اون متغییر رو به آرایه تغییر بدی و با $i مقادیر رو تو خونه ش بگذاری

x0r
November 30th, 2012, 11:42
من زیاد به php وارد نیستم ، میشه کدشو برام بزارید ؟