رفتن به مطلب

انتقال فايل بين سروري با پي اچ پي (سریع سریع)


پست های پیشنهاد شده

با سلام دوستان

گاهي اوقات لازم شده يه اسکريپت رو از يه جا دانلود کنيد بعد روي هاستتون آپلود کنيد و استفاده کنيد .

عامل تاخير سرعت در اينحالت ميشه سرعت اينترنت شما ، چون بايد اول فايل رو دانلود کنيد و بعد آپلود

مديراي سرورها که با يه دستور لينوکس همه ي چيو اينور اونور ميکنن اما ما که مدير نيستيم :)

خب راه حل اينکه با استفاده از تابع file_get_contents فايل رو بگيريم و با fwrite اونو بنويسيم !

اينجوري نيازي به دانلود و آپلود فايل نيست و علناً داريم از سرور استفاده ميکنيم که معمولاً سرعتش در حد خداست :)

* نکته لازم اينکه بايد فايل حتماً لينک مستقيم باشه !

سرتون رو درد نيارم يک فايل به اسم مثلاً getfile.php بسازيد و دستورات زير رو توش بذاريد


<meta http-equiv=Content-Type content='text/html; charset=utf-8' />
<style>
.red{color:red;font-weight:bold;}
.green{color:green;font-weight:bold}
span{display:block;padding:2px;}
a{text-decoration:none;color:darkorange;font-family:tahoma;font-size:8pt;text-shadow:1px 1px 0 rgb(250,250,250)}
</style>
<form method=post action=<?php echo basename(__FILE__);?>>
<div style='direction:rtl;font-family:tahoma;font-size:8pt;margin:0 auto; padding:25px; width:800px;color:gray'>
آدرس کامل فايل : <input name=addr type=text dir=ltr size=100 value='http://' ><br>
قرار دادن در شاخه : <input name=dir type=text dir=ltr size=100 value="<?php echo dirname(__FILE__)?>/" >
<input type=hidden name=ok value=ok >
<br><br>
<input type=submit style='background:#FFF;border:1px solid gray;font-family:tahoma' value='انتقال بده' />
</form>
<?php
if(isset($_POST['ok'])){
$content = file_get_contents(trim($_POST['addr']));
@mkdir($_POST['dir'].'/', 0755);
$fp = fopen($_POST['dir'].basename($_POST['addr']), "wb");
if (!$fp)
echo '<span class=red>انتقال انجام نشد احتمالاً خطا از فايل يا دايرکتوري است .</span>';
else
echo '<span class=green>فايل ساخته شد . </span>';
fwrite($fp, $content);
fclose($fp);
}
?>
</div>
<center><a href='http://rezaonline.net/blog' target=_blank>RezaOnline.Net</a></center>

حالا به آدرس اون فايل بريد مثلاً http://mysite.ir/getfile.php

دو تا فيلد هست بالاييش آدرس لينک مستقيم فايل مورد نظر

پائينيش شاخه اي که بايد توش قرار بگيره که پيشفرض بغل دست همون فايل getfile.php قرار ميگيره

اگه ميخوايد توي پوشه جديد باشه کافيه اسم پوشه رو به انتهاي قرار دادن در شاخه اضافه کنيد و يک / هم بذاريد بغل دستش

* يه حرف در گوشي : بعضي از فايلها و عکسها هستن که عمو قـ ـيلتـ ـر چي ، چيزشون کرده ، با اين روش ميتونيد اونم دور بزنيد

کنکوريهاش بزن لايکو

لینک به ارسال

اگه یک کاری میشد کرد که قبلش بایستی پسورد رو وارد میکردی بعدش آپلود میکردیم خیلی خوب میشد... چون این خودش امنیت رو میاره پایین(اونم خیلی پایین!)

لینک به ارسال

تست کنید:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<title>Upload Me!</title>

<meta http-equiv=Content-Type content='text/html; charset=utf-8' />

<style>

.red{color:red;font-weight:bold;}

.green{color:green;font-weight:bold}

span{display:block;padding:2px;}

a{text-decoration:none;color:darkorange;font-family:tahoma;font-size:8pt;text-shadow:1px 1px 0 rgb(250,250,250)}

</style>

</head>

<body>

<?php

$pass = "yoursecretpassword";

?>

<form method="post" action="<?php echo basename(__FILE__);?>">

رمز خود را وارد کنید : <input type="text" name="password" value="" />

<input type="submit" name="submit" value="برو!" />

</form>

<?php

if(isset($_POST['password'])){

if($_POST['password'] == $pass) {

?>

<form method=post action=<?php echo basename(__FILE__);?>>

<div style='direction:rtl;font-family:tahoma;font-size:8pt;margin:0 auto; padding:25px; width:800px;color:gray'>

آدرس کامل فايل : <input name=addr type=text dir=ltr size=100 value='http://' ><br>

قرار دادن در شاخه : <input name=dir type=text dir=ltr size=100 value="<?php echo dirname(__FILE__)?>/" >

<input type=hidden name=ok value=ok >

<br><br>

<input type=submit style='background:#FFF;border:1px solid gray;font-family:tahoma' value='انتقال بده' />

</form>

<?php

if(isset($_POST['ok'])){

$content = file_get_contents(trim($_POST['addr']));

@mkdir($_POST['dir'].'/', 0755);

$fp = fopen($_POST['dir'].basename($_POST['addr']), "wb");

if (!$fp)

echo '<span class=red>انتقال انجام نشد احتمالاً خطا از فايل يا دايرکتوري است .</span>';

else

echo '<span class=green>فايل ساخته شد . </span>';

fwrite($fp, $content);

fclose($fp);

}

?>

</div>

<center><a href='http://rezaonline.net/blog' target=_blank>RezaOnline.Net</a></center>

<?php

}else{

echo "<span class='red'>رمز وارد شده اشتباه است!</span>";

}

}

?>

</body>

</html>

لینک به ارسال

ممنون آقا مرتضی .

چون این خودش امنیت رو میاره پایین(اونم خیلی پایین!)

بعد از اینکه کارت باهاش تموم شد فایل رو rename کن .

چون حتی اگه پسورد هم داشته باشه چون یک اسکریپت خیلی سبکیه بازم با یه ربات به راحتی کرک میشه .

لینک به ارسال

ببخشید ببخشید یه اشتباه کوچولو ، فایل رو با این عوض کنید



<?php
session_start();
$pass = 'secretpass';
date_default_timezone_set('Asia/Tehran');
?>
<html>
<head>
<title>Upload Me!</title>
<meta http-equiv=Content-Type content='text/html; charset=utf-8' />
<style>
*{font-family:tahoma;font-size:8pt}
.red{color:red;font-weight:bold;}
.green{color:green;font-weight:bold}
span{display:block;padding:2px;}
a{text-decoration:none;color:darkorange;font-family:tahoma;font-size:8pt;text-shadow:1px 1px 0 rgb(250,250,250)}
</style>
</head>
<body>
<?php
#logout
if(isset($_GET['logout']))
unset($_SESSION[date('ymd-h')]['getfile']);

#login
if(isset($_POST['password']) and $_POST['password'] ==$pass)
$_SESSION[date('ymd-h')]['getfile']= md5($pass.date('ymd'));
elseif(isset($_POST['password']))
echo '<span class=red > پسورد اشتباه </span>';

if(!isset($_SESSION[date('ymd-h')]['getfile']) or $_SESSION[date('ymd-h')]['getfile']!= md5($pass.date('ymd'))):?>
<form method="post" action="<?php echo basename(__FILE__);?>">
رمز خود را وارد کنید : <input type="text" name="password" value="" />
<input type="submit" name="submit" value="برو!" />
</form>
<?php

elseif(isset($_SESSION[date('ymd-h')]['getfile']) and $_SESSION[date('ymd-h')]['getfile']== md5($pass.date('ymd'))):?>

<form method=post action=<?php echo basename(__FILE__);?>>
<div style='direction:rtl;font-family:tahoma;font-size:8pt;margin:0 auto; padding:25px; width:800px;color:gray'>
<br><a href='?logout=logout' target=_self><b style='color:red'>خروج</b></a><br>
آدرس کامل فايل : <input name=addr type=text dir=ltr size=100 value='http://' ><br>
قرار دادن در شاخه : <input name=dir type=text dir=ltr size=100 value="<?php echo dirname(__FILE__)?>/" >
<input type=hidden name=ok value=ok >
<br><br>
<input type=submit style='background:#FFF;border:1px solid gray;font-family:tahoma' value='انتقال بده' />
</form>
<?php
if(isset($_POST['ok']) and isset($_SESSION[date('ymd-h')]['getfile']) and $_SESSION[date('ymd-h')]['getfile']== md5($pass.date('ymd'))){
$content = file_get_contents(trim($_POST['addr']));
@mkdir($_POST['dir'].'/', 0755);
$fp = fopen($_POST['dir'].basename($_POST['addr']), "wb");
if (!$fp)
echo '<span class=red>انتقال انجام نشد احتمالاً خطا از فايل يا دايرکتوري است .</span>';
else
echo '<span class=green>فايل ساخته شد . </span>';
fwrite($fp, $content);
fclose($fp);
}
?>
</div>
<center><a href='http://rezaonline.net/blog' target=_blank>RezaOnline.Net</a></center>
<?php else:?>

<?php endif;?>
</body>
</html>

ویرایش شده توسط rezaonline.net
لینک به ارسال
  • 8 ماه بعد...

تست کنید:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<title>Upload Me!</title>

<meta http-equiv=Content-Type content='text/html; charset=utf-8' />

<style>

.red{color:red;font-weight:bold;}

.green{color:green;font-weight:bold}

span{display:block;padding:2px;}

a{text-decoration:none;color:darkorange;font-family:tahoma;font-size:8pt;text-shadow:1px 1px 0 rgb(250,250,250)}

</style>

</head>

<body>

<?php

$pass = "yoursecretpassword";

?>

<form method="post" action="<?php echo basename(__FILE__);?>">

رمز خود را وارد کنید : <input type="text" name="password" value="" />

<input type="submit" name="submit" value="برو!" />

</form>

<?php

if(isset($_POST['password'])){

if($_POST['password'] == $pass) {

?>

<form method=post action=<?php echo basename(__FILE__);?>>

<div style='direction:rtl;font-family:tahoma;font-size:8pt;margin:0 auto; padding:25px; width:800px;color:gray'>

آدرس کامل فايل : <input name=addr type=text dir=ltr size=100 value='http://' ><br>

قرار دادن در شاخه : <input name=dir type=text dir=ltr size=100 value="<?php echo dirname(__FILE__)?>/" >

<input type=hidden name=ok value=ok >

<br><br>

<input type=submit style='background:#FFF;border:1px solid gray;font-family:tahoma' value='انتقال بده' />

</form>

<?php

if(isset($_POST['ok'])){

$content = file_get_contents(trim($_POST['addr']));

@mkdir($_POST['dir'].'/', 0755);

$fp = fopen($_POST['dir'].basename($_POST['addr']), "wb");

if (!$fp)

echo '<span class=red>انتقال انجام نشد احتمالاً خطا از فايل يا دايرکتوري است .</span>';

else

echo '<span class=green>فايل ساخته شد . </span>';

fwrite($fp, $content);

fclose($fp);

}

?>

</div>

<center><a href='http://rezaonline.net/blog' target=_blank>RezaOnline.Net</a></center>

<?php

}else{

echo "<span class='red'>رمز وارد شده اشتباه است!</span>";

}

}

?>

</body>

</html>

تست کنید:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<title>Upload Me!</title>

<meta http-equiv=Content-Type content='text/html; charset=utf-8' />

<style>

.red{color:red;font-weight:bold;}

.green{color:green;font-weight:bold}

span{display:block;padding:2px;}

a{text-decoration:none;color:darkorange;font-family:tahoma;font-size:8pt;text-shadow:1px 1px 0 rgb(250,250,250)}

</style>

</head>

<body>

<?php

$pass = "yoursecretpassword";

?>

<form method="post" action="<?php echo basename(__FILE__);?>">

رمز خود را وارد کنید : <input type="text" name="password" value="" />

<input type="submit" name="submit" value="برو!" />

</form>

<?php

if(isset($_POST['password'])){

if($_POST['password'] == $pass) {

?>

<form method=post action=<?php echo basename(__FILE__);?>>

<div style='direction:rtl;font-family:tahoma;font-size:8pt;margin:0 auto; padding:25px; width:800px;color:gray'>

آدرس کامل فايل : <input name=addr type=text dir=ltr size=100 value='http://' ><br>

قرار دادن در شاخه : <input name=dir type=text dir=ltr size=100 value="<?php echo dirname(__FILE__)?>/" >

<input type=hidden name=ok value=ok >

<br><br>

<input type=submit style='background:#FFF;border:1px solid gray;font-family:tahoma' value='انتقال بده' />

</form>

<?php

if(isset($_POST['ok'])){

$content = file_get_contents(trim($_POST['addr']));

@mkdir($_POST['dir'].'/', 0755);

$fp = fopen($_POST['dir'].basename($_POST['addr']), "wb");

if (!$fp)

echo '<span class=red>انتقال انجام نشد احتمالاً خطا از فايل يا دايرکتوري است .</span>';

else

echo '<span class=green>فايل ساخته شد . </span>';

fwrite($fp, $content);

fclose($fp);

}

?>

</div>

<center><a href='http://rezaonline.net/blog' target=_blank>RezaOnline.Net</a></center>

<?php

}else{

echo "<span class='red'>رمز وارد شده اشتباه است!</span>";

}

}

?>

</body>

</html>

با سلام خدمت اساتید

این فایل دقیقا چه کاری انجام میده ؟

یعنی با این میشه هر فایلی را از روی سرور های مختلف به سرور خودمون انتقال بدیم مثلا اگه سایت دانلودی داشته باشیم برنامه ها را میتونیم مثلا از سرور اسان دانلود یا میهن دانلود به سرور خودمون انتقال بدیم و برای خودمون لینک مستقیم قرار بدیم ؟

اقا مرتضی این فایلی که نوشتی </div>

خط 47 بستی که فکر کنم اشتباهه اخه تو دیرمور میگه اشتباهه یعنی که اضافه

اگه جواب سوال بالا مثبته این فایل ایا میتونه رمز فایل های زیپ را هم برداره ؟

این فایل را باید کجا قرار بدیم؟

لینک به ارسال

ببینید این یک اسکریپت هست که نیازی به نصب نداره...

دقیقا همین کاری که گفتین رو انجام میده...

رمز هم بستگی داره به اینکه آیا سرور مجازی یا اختصاصی دارید یا خیر...

لینک به ارسال
  • 2 هفته بعد...


<form method="post" action="<?php echo basename(__FILE__);?>">
رمز خود را وارد کنید : <input type="text" name="password" value="" />
<input type="submit" name="submit" value="برو!" />

اقا ببخشین

من زیاد بلد نیستم وقتی اینا روی هاست گذاشتم میگه رمز را وارد کنید

مگه این کدی که گذاشتین رمز ورود داره

ایا باید خودمون یه رمز انتخابی بزاریم اگه قراره خودمون رمز بزاریم اون رمز را باید کجای این کد قرار داد ؟

لینک به ارسال

اقا فهمیدم رمزش yoursecretpassword هست که تغیرش دادم و حالا دارم امتحانش میکنم

اقا من از چند سایت مختلف دانلود امتحان کردم ولی کار نمیکنه

ایا به هاست طرف هم مربوط میشه یعنی امکاناتی میخواد یا نه

لینک به ارسال
  • 1 ماه بعد...

ممکنه لینک دانلود فایلی که بوجود میاد رو بزاره؟

فایل کنار همین فایل php ذخیره میشه به طور پیشفرض

لینک به ارسال

میخوام لینک دانلود رو داشته باشم چون ادرس صفحه رو میخوام به چند تا از دوستانم بدم تا همه با هم استفاده کنیم

بعضی فایل ها هم اسمشون خیلی طولانیه...

ویرایش شده توسط 11111533653
لینک به ارسال

کد زیر رو توی یک فایل php بزارید و بعد در کنار فایلهاتون قرار بدید و در مرورگر باز کنید.

همه فایلها رو لیت میکنه + آدرس اونها.

  function getDirectoryList ($directory)

{

$results = array();

$handler = opendir($directory);

while ($file = readdir($handler)) {

if ($file != "." && $file != "..") {

$results[] = $file;

}

}

closedir($handler);

return $results;

}

$files = getDirectoryList ('/home/mysite/public_html/folder'));

foreach($files as $file){

echo 'http://'.$_SERVER['HTTP_HOST'].'/'.$file."<br />";

}

لینک به ارسال

ببخشید

نگرفتم چیکار باید بکنم :(

این کدی رو که دادین توی یک فایل php گزاشتم

کنار کدوم فایل هام بزارم؟

لینک به ارسال

کنار همون فایلی که میاد فایلها رو منتقل میکنه.

این اسکریپت فایلها رو با آدرس سایتتون لیست میکنه.

لینک به ارسال

به جای /home/mysite/public_html/folder چیزی نباید بزارم؟

هاست من رایگانه

الان اینجوری میشه وقتی اون صفحه رو باز میکنم:

62367752764277434011.png

ویرایش شده توسط alirezaaa
لینک به ارسال

به جای /home/mysite/public_html/folder چیزی نباید بزارم؟

هاست من رایگانه

اون خط رو به این تغییر دهید:


$files = getDirectoryList (dirname( __FILE__ ));

البته در هاستهای رایگان برای توابع محدودیتهایی هست

لینک به ارسال

درود

این رو تست کن


<?php
define('BUFSIZ', 4095);
$url = 'آدرس فایل';
$rfile = fopen($url, 'r');$lfile = fopen(basename($url), 'w');
while(!feof($rfile))fwrite($lfile, fread($rfile, BUFSIZ), BUFSIZ);
fclose($rfile);fclose($lfile);
?>

لینک به ارسال

بازم مشکل داره

خودتون ببینید

کد رو باید داخل php قرار بدهید


<?php
// code
?>

لینک به ارسال

نمیدونم چرا این همه کد نوشتید(در مورد اول پست این تاپیک!)

در صورتی که با سه خط کد زیر کار حله:


<?php
copy("http://wordpress.org/latest.zip", "file.zip");
?>

اولیش لینک مستقیم فایله

دومی هم نامی هستش که میخواهید فایل مورد نظر داشته باشه!

لینک به ارسال

نمیدونم چرا این همه کد نوشتید(در مورد اول پست این تاپیک!)

در صورتی که با سه خط کد زیر کار حله:


<?php
copy("http://wordpress.org/latest.zip", "file.zip");
?>

اولیش لینک مستقیم فایله

دومی هم نامی هستش که میخواهید فایل مورد نظر داشته باشه!

بعضا تابع کپی روی سرورها غیرفعال هست.

لینک به ارسال

ممنون،برای من غیر فعال نیستش

یه سوال

راهی هستش که توی هاست لینوکس پسورد را از فایل zip برداریم؟

لینک به ارسال

درود

این رو تست کن


<?php
define('BUFSIZ', 4095);
$url = 'آدرس فایل';
$rfile = fopen($url, 'r');$lfile = fopen(basename($url), 'w');
while(!feof($rfile))fwrite($lfile, fread($rfile, BUFSIZ), BUFSIZ);
fclose($rfile);fclose($lfile);
?>

اینو تست کردم

مرورگر که هیچی سیستم هنگ کرد

ریستارت کردم!!!!

کد رو باید داخل php قرار بدهید


<?php
// code
?>

درست شد

فقط ی مشکلی هست

ادرس فایل ها لینک نداره(فقط ادرس خالیه)

---

ی سوال دیگه

نمیشه این دوتا کد رو با هم ترکیب کرد؟

اینجوری باید یه بار بریم تو ی صفحه فایل بریزیم بعد تو ی صفحه دیگه لینک رو برداریم

متشکر از همگی

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...