رفتن به مطلب

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


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

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

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

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

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

خب راه حل اينکه با استفاده از تابع 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 قرار ميگيره

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

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

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

  • امتیاز 24
لینک به ارسال

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

  • امتیاز 6
لینک به ارسال

تست کنید:

<!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>

  • امتیاز 13
لینک به ارسال

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

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

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

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

  • امتیاز 5
لینک به ارسال

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



<?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
  • امتیاز 7
لینک به ارسال
  • 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
لینک به ارسال

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

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

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

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


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

اقا ببخشین

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

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

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

  • امتیاز 1
لینک به ارسال

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

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

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

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

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

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

  • امتیاز 1
لینک به ارسال

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

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

ویرایش شده توسط 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 />";

}

  • امتیاز 3
لینک به ارسال

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

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

  • امتیاز 2
لینک به ارسال

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

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

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

62367752764277434011.png

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

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

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

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


$files = getDirectoryList (dirname( __FILE__ ));

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

  • امتیاز 2
لینک به ارسال

درود

این رو تست کن


<?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);
?>

  • امتیاز 3
لینک به ارسال

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

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

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


<?php
// code
?>

  • امتیاز 2
لینک به ارسال

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

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


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

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

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

  • امتیاز 1
لینک به ارسال

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

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


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

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

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

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

  • امتیاز 3
لینک به ارسال

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

یه سوال

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

  • امتیاز 1
لینک به ارسال

درود

این رو تست کن


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

درست شد

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

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

---

ی سوال دیگه

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

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

متشکر از همگی

لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

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



ورود به حساب کاربری
×
×
  • اضافه کردن...